今天只是简单将ScutDemo项目的客户端代码分析了一下,其实和视频教程上的差不多。主要就是两个方法:Net.SetUrl以及Net.Instance.Send。前者首先设定将要请求的服务器端,而后者就是进行相应消息的发送。
之前之所以出错是因为客户端的项目中没有加入所需要的源码和库文件,于是我对比demo中的文件,将缺少的文件直接复制到客户端目录下就没什么问题了。值得注意的是,客户端也需要一个Action文件夹来存放和协议有关的类,否则在Unity中点击按钮时,就会因为找不到对应的Action而报错。客户端的Action直接复制粘贴协议平台工具里的客户端代码即可,具体细节还有待进一步分析。
在两个项目整合的期间,还出现了一个小问题,关闭redis服务器后再打开时,黑窗口直接闪退。百度好一阵又说什么虚拟内存不够怎样,需要修改redis.conf文件?之后又是一通瞎搞,最后实在没办法,关机重启,问题解决。
紧接着,我快速创建一个新的unity项目,用UGUI直接创建好按钮,设置好按钮点击方法,启动GameServer测试效果。
之前之所以出错是因为客户端的项目中没有加入所需要的源码和库文件,于是我对比demo中的文件,将缺少的文件直接复制到客户端目录下就没什么问题了。值得注意的是,客户端也需要一个Action文件夹来存放和协议有关的类,否则在Unity中点击按钮时,就会因为找不到对应的Action而报错。客户端的Action直接复制粘贴协议平台工具里的客户端代码即可,具体细节还有待进一步分析。
在两个项目整合的期间,还出现了一个小问题,关闭redis服务器后再打开时,黑窗口直接闪退。百度好一阵又说什么虚拟内存不够怎样,需要修改redis.conf文件?之后又是一通瞎搞,最后实在没办法,关机重启,问题解决。
紧接着,我快速创建一个新的unity项目,用UGUI直接创建好按钮,设置好按钮点击方法,启动GameServer测试效果。
很明显,新的问题又出现了。在客户端的Action类里面,我Debug出的信息在unity的console中显示为乱码(目前猜测可能是当时创建Action100的时候是直接在文件资源管理器新建的cs文件,正常应该是在unity中创建),这个问题不重要。另一个就是错误信息了,vs定位后位于Net类中,输出:“服务器繁忙”。正常情况应该是返回服务器中,Action100类里面的TakeAction方法中的信息。另一方面,服务器的MainClass方法在GameServer中输出了正确的信息。看来要想知道原因,首先必须了解源码才行。