我猜解决方案就是在每条消息上,加上标记。
我猜解决方案就是在每条消息上,加上标记。
3次for循环,100*100*100次。这增大数据快。
同步,没分包问题?这需要测试下。
siki老师说的对,同步有分包为题,而异步没有。神奇。
面向过程果然不如面向对象。客户端链接过来时,可以在服务器端创建个客户端对象,这样简洁多了。
单例核心
1.定义一个静态对象 在外部访问,内部实现
2.构造方法私有化
确保只有一个实例
复习:怎么实现单例模式?
UIPaneltype.cs
枚举类型,记录panel类型
UIPaneltype.json
描述加载路径
实现瞬移:
在手柄上挂在以下两个脚本
VRTK_Controller Events
VRTK_Bezier Pointer
在CameraRig上挂载
VRTK_Height Adjust Teleport
可在 Events脚本下设置按键
可在Bezier脚本下 Layers To Ignore设置忽略层
缩小被萨尔曲线的检测范围可以缩小模型的collider
等比例缩小 shift+拖动
unity现在不是mono架构了,蛋疼。垃圾算法,内存和性能都不是最好的。
和对象池有些像。但这个没有限制最大资源加载上限,资源稍微多些,容易爆内存。
这里可以提炼出2个方法。
懵逼了,角色和建造者我写的和siki
老师的完全不一样。
战士和敌人数量更新放在update里面不好,可以结合事件系统,当敌人和战士死亡或生成时,调用isitor
好多游戏都是这样保存数据的,比如仙剑4,生化危机,黑暗之魂
网络IO用的Select多路复用加阻塞。
AES加密协议对象时要求不能为空,所以让ProtoType在构造函数内赋值。
lsw:建议在连接失败的回调里面设置m_Diaoxian = true;//确保一直尝试重连
在Update中检测断线重连。
在协程函数中每隔1秒,检测网络变化时断线重连。可以确保网络变化后马上进行重连,而不用等心跳包收不到了。改进方式是m_CurNetWork = Application.internetReachability在重连回调函数中赋值。
Application.internetReachability表示当前网络连接情况,当切换其他网络时,值会改变。
当(已登录过)断线并重新连接成功后,自动登录:利用PlayerPref(或easysave或objectprefabs...插件)保存的用户名和token登录。
这里用的伪代码。
验证码Code暂时用不到。
需要从NuGet安装MySql.data ,用于连接数据库。
ExecuteReturnIdentity()可以获取影响行的主键值。
token是方便客户端下次自动登录用的。本次登录成功后,服务器会给客户端一个新token。
loginDate可以用于判断下次自动登录时,token是否过期,本项目没有用到。
实体类内字段名一般应和数据库表内列名一致,否则需要标注别名。