场景优化
节点层级问题
合理设计场景一级节点的同时,避免场景节点深度太深,一些代码生成的游戏对象如果不需要随父节点进行Transform的,一律放到根节点下;
Unity2017后Transform数据在内存上的设计变为了连续存储,并通过Transform dirty标记逐级进行脏设置实现级联变换,Unite上给出的Parented与Unparented对象的Transform设置效率相差数十倍;
Prefab
尽量使用Prefab节点构建场景,而不是直接创建的GameObject节点;
由场景文件可知所有Prefab节点是通过id定位到已经定义好的组件和原始Prefab文件进行引用,如果Prefab的bundle已经加载到内存中,在场景加载时只需要引用Prefab对象,无论多少场景引用内存都是同一块,在内存使用、加载速度与生成包体大小上都有更好的表现;
DontDestroyOnLoad
避免DontDestroyOnLoad节点下有太多生命周期过长或引用资源过多的复杂节点对象,Additve模式添加的场景要尤为注意;
Tag
最好为一些需要经常访问的节点添加tag,静态节点一定要添加Static标记;
对于Static游戏对象,很多游戏中预计算的开销可以被忽略,很多游戏对象的逻辑更新也可以被忽略,降低运行时游戏对象的计算成本,提升游戏效率;