EOC项目分析笔记1¶
项目优化列表¶
-
UI生成的view文件,这里执行比较浪费效率,有可能无用的节点也会Find transform 节点
方案:使用C#属性的方式去处理,只有使用的时候才get,能有效的减少无用节点的使用 -
字符串拼接问题,使用公用
StringBuilder进行处理 -
所有new 数组的地方建议使用公共方法去管理,或者组成一个共有池
-
所有使用
Physics.RaycastAll和Physics.Raycast的地方修改成无GC的方法
- 对比字符串查找业务对象和id查找业务对象耗时及HashCode获取业务对象
方式1:
点击gameObject 根据GameObject的name字符串查找对应的业务对象
方式2:
初始化gameObject时添加一个组件,组件内有id字段,点击gameObject时根据gameObject上的组件找到id,然后根据id找到对应业务对象
方式3:
点击gameObject,根据gameObject的HashCode找到对应业务对象
方式1的耗时:重命名gameObject+通过字符串查找业务对象; 耗时 503+316 毫秒 方式2的耗时:给gameObject添加组件+通过id查找业务对象; 耗时 3883+191 毫秒 方式3的耗时:gameObject获取HashCode+通过HashCode查找业务对象;耗时 34+12 毫秒
结论:
gameObject的HashCode查找效率最高,其次是字符串查找,添加组件绑定id的方式最慢
- UGUI 优先使用RectMask2D,最后使用Mask
登录流程¶
设置登录信息,并且派发登录事件(开发模式)
设置登录信息,并且派发登录事件(线上模式)
链接服务器
连接服务器后进行重定向,再次连接服务器,并且验证;重定向且验证后表示登录成功
使用第一个角色进行登录,登录角色服
发送: SprotoType.Role_RoleLogin 
内城初始化¶
地图初始化¶
相机位置初始化¶
相机视野变化和同步视野到服务器¶
监听
WorldCamera.Instance().AddViewChange(OnWorldViewChange);
*发送给服务器相机移动的消息public void SendMapMove(long x, long y)*
地图单位初始化¶
单位资源加载
地图地表及装饰物初始化¶

















