项目:
头顶信息,科技树,换装,背包系统
jobsystem为什么不需要锁:
IJobParallelForTransform的原理,规定每个线程管理的index不一致
sdk:
aar不能热更
原生代码:c/c++/object-c/java编写的东西
断线重连逻辑:
重连要注意的主角的现场
当前世界可见的现场数据,包括其他怪物的血条等
监听到重连成功后,框架层直接 清空本地所有动态实体(销毁所有怪物、掉落物、其他玩家)。
拉取:向服务器请求一个“全量状态包”。
还原:就像进副本加载一样,根据包里的数据重新 Instantiate 所有对象。
优点:逻辑最干净,不会出现“服务器说怪物死了,本地由于丢包怪物还活着”的灵异现象。
直接重新创建一遍所有的实体
当前包索引和服务器最新包之间的差量漏调的包重发一遍
背包系统:
UI,跟装备换装相关放lua,跟背包相关的数据,篮子数据放c#,理由是因为c#这边
可能也会有很多地方会用到是否有哪个物品,同时大量的背包数据,在c#使用连续内存配合,密度高,遍历速度块,c#执行速度块,如战斗属性计算
优化p/invoke开销的处理:
1.频繁访问的数据做缓存同步
2.使用 Lua静态绑定(Static Binding),甚至是直接将 C# 里的数据通过 IntPtr 或者 Memory 的方式映射到 Lua 侧读取,彻底压榨性能。”
技能系统:
技能升级相关,基础技能就一个配置,升级只是数值上的动态迭代跟基础技能没关系
头顶信息:
2dUI做法
更新放在lateupdate之后
通过移除画布的方式隐藏
手动计算偏移量,不用layout组件
分区域布局
避免直接使用transform.position,缓存角色坐标
使用判断是否在视野范围内来判断是否更新
在一个job里面同时判断对象是否在视野范围内和把他的3d坐标转成2d坐标,计算这个角色的相关信息
判断是否在视野范围内:使用视口坐标判断,因为用六个面判断是主线程api<

&spm=1001.2101.3001.5002&articleId=159215393&d=1&t=3&u=f3bb1d2322e648c0b491953dbfccac12)
4884

被折叠的 条评论
为什么被折叠?



