Unity | 数据存储与性能优化

数据是现代应用设计中的核心,很多互联网应用,用户数据往往会发展为产品的核心价值。
鱼(高质量的画面表现)我所欲也,熊掌(高FPS的游戏流畅体验)亦我所欲也,二者不可得兼,而可权衡也。

文 / 丁建雄
图 /

小白是单纯为兴趣而写作的独立创作人,如果您喜欢小白的文章,欢迎关注、交流、分享(引用请链接到本文)。

一、Unity中的数据存储

  1. 数据的持久化保持方式:
    a. PlayerPrefs:Unity特有的存储方式,用于游戏简单的基本数据存储。
    b. XML:跨平台公认标准,兼容性好。
    c. JSON:轻量级数据模式,跟XML 一样具有跨平台特性,同时语法更加简洁。
    d. 数据库:主流数据库都支持,像MySQL,SQLite,Oracle等。
  2. 对于简单的单机应用,前三种数据存储方式就足够了,但是对于具有高用户量的互联网产品而言,数据库的使用还是必不可少的。

二、Unity中的性能优化

  1. 对于普通3D游戏,30帧是入门标准,60帧才能流畅运行;而对于VR应用,90帧才是入门标准,120帧才能保证基本流畅。现行的最顶尖的设备也有其性能局限,因此对于3D应用,巧妙的优化就十分必要了。
  2. 遮挡剔除(Occlusion Culling):这一优化方法源于比较流行的优化技术视椎体剔除(Frustum Culling),意思是摄像机视角以外的所有物体都被剔除而不分配显示内存与运行方法。Unity 的遮挡剔除方法更进一步将无法看到的物体也排除在外,这样就大大降低了所需的系统性能。
  3. 如果简单的游戏场景不需要每帧更新,那么即使是空的Update 也要去除,因为即使是空的Update 也会每帧都运行。
  4. 赋值优化:对象直接赋值法是最高效的,其次是FindGameObjectWithTag()等,最低效的方法是Find()。
  5. 更新优化:使用Coroutines 和InvokeRepeating 代替Update(),在某些需要更新,但不是每帧都更新的情况下。
  6. 切换场景资源回收:在Update 里添加主动资源回收语句System.GC.Collection();
  7. 优先使用Array,减少List 使用。
  8. 优化数学模型与算法。
  9. 几何体模型优化:尽量减少三角面的使用;单独模型不要超过65535个顶点;贴图尺寸尽量不要超过1024 X 1024。
  10. 熟练掌握烘焙(bake)技术,减少动态光源(一般1-2个,最好不超过4个)。

结束语

数据存储对于联网应用一般都要求使用数据库系统,而对于数据库系统相关的知识并不复杂,如果涉及到高速、大量、碎片化的数据存取等核心问题,会涉及到数据库优化方面,这块还是有难度的。
性能优化方面,主要是对一些基本操作的内存占用,FPS处理机制,渲染性能与效率权衡等操作的优化。这些优化很重要的一点就是需要设计师对Unity 运行机制以及基本的计算机处理效率有较深的了解,这样才能在保证计算机达到较好帧率的情况下,达到不错的画面运行效果。

你可能感兴趣的:(Unity | 数据存储与性能优化)