一、项目开发。管理和公布策略
1. 四大准则
a. 美术的资源量
b. 美术规范,要依据开发什么样的游戏制定统一的规范,这样尽可能的形成统一的规范。然后程序要协助美术制定对应的查看美术是否适合规范的的工具。并把全部美术资源统计出来(这里须要UI的二次开发)。
c. 先从CPU和内存的优化。然后GPU
d. 增量更新。包的大小控制,低端设备的支持
控制drawcall的数量。UI贴图。技能特效,换装等。
Sorting : Opaque :from front to back
Mipmaps:打开,启用
硬件分级:
{resolution, post-processing, MSAA, Fx/partides density on/off, Shader }
内存管理,一半原则,不要超过内存的一半
{
A. 降低贴图的大小
B. 场景物体都做成prefab
C. 用好Assetbundle
D. ObjectPool 和 LoadManager,避免频繁new。在切换场景的时候不释放公共UI
E. LoadManager,同一时间一次加载
}
AssetBunddle,採用依赖性打包
用alpha test的效率低
自己写一套控制打包的脚本
二、自己主动打包
AssetPostprocessor
AssetImport
BuildPlayer
支持命令行编译,自己主动化打包公布
Assetbundle的东西放入到StreamAssets目录中
NewBehaviourScript.txt新建脚本的模板
Asset label: 提升检索的速度
打包Android的jar文件命令:jar -cvf class.jar *
Edit里面有个Gncphics Emulation选项,临时不清楚干什么的。用来模拟不同硬件的測试
增量更新:就是打包的时候要实现。增量更新的方式
1) 脚本资源分离
2) 接口与实现分离
UnityNative code
1. C, C++ 代码
2. 生成.so文件
3. 放到plugin下
4. 在Unity中调用
Java中调用navtive code 用 Systemn.Loadlibrary
一次打包10个包
BeginSamplePrifilor 取样CPU的的信息
三、内存
尽可能避免不必要的堆内存的分配
a. CPU – GC Alloc
查看性能分析器里:记录游戏执行时内存分配,尽可能避免不必要的堆内存分配
1. 一次性分配超过2kb的选项
2. 检測每帧都具有20B以上的内存的分配的原则
b. CPU- Time
帧超过5ms的
c. 内存
ManagedHeap.UsedSize不超过20M
d. 内存
查看是否有反复的资源,纹理压缩,不要超过1M。 Assetbundle打包的时候的依赖关系。
Device.Present :一般出现了复杂的Shader
Shader.CreateGPUPrgream
Other.compareTag() 不要用等号== 。影响速度
须要了解的内容:
1. 项目的管理
怎样协调美术和策划把资源的利用最大化
2. 内存的优化
3. CPU的优化
4. GPU的优化
5. 性能监视器的使用
6. 经常使用性能比較好的插件
7. 特殊友好效果的实现
8. Assetbundle的使用
9. 对Unity3d里面的特性进行熟悉
目标就是高效率的项目管理流程,一切都以速度和效率为先。
高性能的游戏设计技巧
Reference: