项目准备
创建C#工程SimpleServer打开Visual Studio,使用.NET 6创建一个控制台项目:
项目名称为:SimpleServer。注意指定好项目文件夹。
项目创建好后,在解决方案资源管理器中添加一些新文件夹:Business(业务相关)、Net(网络相关)、Proto(协议相关)
ServerBase选择“文件——新建——项目”,再次使用.NET 6创建一个控制台项目:
项目名称为:ServerBase,解决方案:添加到解决方案。
在这个项目中添加一些工具类,比如说AES加密,Protobuff,SingletonPattern等。由于是工具类,不设命名空间。
我们将SingletonPattern修改为多线程单例,instance == null判断两次,第一次是防止重复加锁,提高性能,第二次是防止重复实例化
12345678910111213141516171819202122public class SingletonPattern<T> where T : class,new(){ private static object _lock ...
服务器基础知识
TouchSocket说明文档。 TouchSocket | TouchSocket (gitee.io)
Socketsocket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的)。
socket非常类似于电话插座。以一个电话网为例:
电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址。
任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;
同时要知道对方的号码,相当于对方有一个固定的socket。
然后向对方拨号呼叫,相当于发出连接请求。
对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。
双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。
通话结束后,一方挂起电话机相当于关闭socket,撤销连接。
端口在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。
每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对 ...
微信Manifest
修改Unity的Plugis——Android——AndroidManifest文件:
首先添加新的权限:
1234567891011<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ...
Unity对应微信
PlatMsgManager添加新的信息id和方法
1234567891011121314151617181920212223//从底层获取stringpublic const int UNITY_GET_STRING_QQAUTHORVALID = 1;//QQ票据是否有效public const int UNITY_GET_STRING_QQREFRESHSESSION = 2;//QQ刷新票据public const int UNITY_GET_STRING_WXAUTHORVALID = 3;//QQ票据是否有效public const int UNITY_GET_STRING_WXREFRESHSESSION = 4;//QQ刷新票据/// <summary>/// WX授权是否有效/// </summary>/// <returns>是否有效</returns>public bool WXAuthorValid(){ return System.Convert.ToBoolean(GetStringFromPl ...
微信接入
SDK准备微信Android接入指南:
接入指南 / Android接入指南 (qq.com)
首先在Android Studio的build.gradle里面添加:
123dependencies { implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'}
等待Android Studio出现的提示并点击“sync now”,等待gradle自动添加完成依赖。
下载的jar包位置:在Project资源管理模式下——点击External Libraries——找到Gradle: com.tencent.mm.opensdk:wechat-sdk-android——classes.jar。选中classes.jar——右键Open In——Explorer,将文件夹内的jar包复制粘贴到Unity的Assets——Plugins——Android——libs文件夹下,注意将此jar包的名称修改为wechat-sdk-android
TencentWX类在之前的文件 ...
Manifest文件处理
Manifest准备我们需要先在Unity中打一个Android Gradle包,再在输出的文件夹中找到AndroidManifest.xml,我们使用这个Manifest替换Android Studio工程中生成的Manifest。
首先在Unity中打开Build Settings,勾选Export Project,点击Export并指定好输出的路径。然后再在如下的路径找到AndroidManifest.xml
12E:\UnityBuilds\ResloadPrg_Gradle\launcher\src\mainE:\UnityBuilds\ResloadPrg_Gradle\unityLibrary\src\main
其中launcher里面的Manifest属于入口,我们并不需要修改。主要修改unityLibrary的Manifest
打开这个AndroidManifest.xml,将uses-permission提到前面,并修改activity的入口。添加QQ的activity
12345678910111213141516171819202122232425262728 ...
Unity对应QQ
PlatMsgManager给PlatMsgManager添加QQAuthorValid和GetQQSession方法,用来调用安卓底层对应的方法,从而验证、刷新和获取QQ票据。然后添加几个用于QQ和微信登录和注销的const值,最后添加用于转换底层json消息的PlatformMsg类
1234567891011121314151617181920212223242526272829303132333435363738394041 //发送消息到平台底层 public const int PLATFORM_MSG_QQLOGIN = 1;//QQ登录 public const int PLATFORM_MSG_QQLOGOUT = 2;//QQ注销 public const int PLATFORM_MSG_WXLOGIN = 3;//WX注销 public const int PLATFORM_MSG_WXLOGOUT = 4;//WX注销//从底层获取stringpublic const int UNITY_GET_STRING_QQAUTHORVA ...
接入QQ
SDK设置SDK下载 — QQ互联WIKI
下载里面的Android_SDK,并且解压,将解压出来的E:\EdgeDownload\opensdk_3514_lite_2023-01-13\libs\open_sdk_3.5.14.3_rc26220c_lite.jar复制粘贴到Android Studio工程的app——libs文件夹内,然后像我们引入Unity的jar包一样设置一下依赖。
同时在Unity的工程里面,新建Assets——Plugins——Android文件夹,在其内部新建libs和res文件夹,将open_sdk_3.5.14.3_rc26220c_lite.jar也复制粘贴到libs文件夹内。
TencentQQ在com.DefaultCompany.ResLoadPrg文件夹下新建TencentQQ文件
登录,调用Tencent.login方法,并在方法参数中传入下面的BaseUiListener回调类。由Unity调用
注销,调用Tencent.logout方法。由Unity调用
登录之后的回调LoginCallBack,由BaseUiListener调 ...
GameHelper
GameHelper在app——src——main——java——com.DefaultCompany.ResLoadPrg文件夹内新建Java代码文件,并命名为GameHelper
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150package com.DefaultCompany.ResLoadPrg;import android.app.ActivityM ...
Android Studio准备
Android Studio工程配置Gradle路径打开Android Studio,选择Customize选项,然后点击All settings
在弹出的界面选择Build,Execution,Deployment——Build Tools——Gradle,设置Gradle的位置
建立对应项目打开Android Studio,点击“New Project”,在弹出的页面点击“Base Views Activity”,然后再在弹出的页面输入:
注意:包名一定要和Unity工程相同
新建项目后,会耗费大量的时间下载Gradle,可以使用腾讯的镜像来快速下载:
将项目的gradle——wrapper——gradle-wrapper .properties文件修改:
12345distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distsdistributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-all.zipzipStoreBase=GRAD ...