赞
踩
原本想写一下Unity中通过资源来减小游戏中内存性能的文章,不过我一直采用的还是打图集、压资源、延迟加载等老一套,感觉不是很够讲所以就只讲了一部分优化,后面一部分就来讲一下Unity项目中的资源管理吧。Unity的项目管理可以说在不同的公司中会很不相同,每一个公司可能都会有自己的一套流程,但是核心的思想其实确实也是一样的。
鄙人才疏学浅,如果有所疏漏或者有错误的地方还希望 多多指正。
贴图资源是游戏当中消耗最大的资源,贴图资源的管理直接影响到整个游戏内存的性能。
目前市面上的大多数游戏都要涉及到热更新,从Unity5.0开始,简化的API让AssetBundle的打包似乎不再是一件困难的工作,但是想要管理好AssetBundle的关系却并不是那么容易的一件事。
在游戏中加载资源我使用过两种做法,都需要自己对加载方式进行封装,通过多态来灵活加载工程内或者热更的资源:
一种是讲所有需要加载的资源,例如prefab、文本等等放入到Resources下面(尽可能减少资源否则会影响启动速度),而依赖的资源放在别的文件夹下,热更的时候将资源加载到沙盒目录下。在资源加载的时候,首先对沙盒目录进行检查,若有的话,则使用热更资源,否则就加载Resource下的资源。优点是在工程内不需要打包,而缺点是由于没有打包,导致在最后出包的时候打包缓慢。
而另一种是将所有的资源打成AssetBundle放入StreamingAssets下,热更的时候同样十八AssetBundle下载到沙盒目录下。资源加载的时候,首先对沙盒目录进行检查,若有的话使用热更资源,否则就加载StreamingAssets下的资源。在加载的时候需要提供资源名和包名,在编辑器下可以通过AssetDatabase来直接从编辑器中加载资源,通过将场景加入到BuildSetting中来加载场景,避免每次进行修改的时候都需要重新打AssetBundle。这种方法在最后出包的时候比较快,在最终确定下资源正确性的时候构建AssetBundle。
作为程序,我们在资源上面花的精力自然是越少越好,但是如果没有好的工具链,好的流程,我们必定将会困在永远做不完的资源管理中。美术发过来的max文件或许需要经过你的导出、导入到Unity、拖成预制体、挂动画、挂碰撞盒等等的操作之后才能成为一个真正可用的资源。这个时候一个好的工具显得格外重要。
推荐的方式是程序使用更加灵活的git来进行管理,有条件的可以自己做一个gitlab服务器用于存放代码。而美术则使用局域网SVN进行美术资源的管理,程序可以将部分直接可用的美术资源直接链入项目当中,其他的则是通过上述提到的工作流工具来进行批量处理。
当然还有很多其他的优秀插件与工具可以帮助我们来优化工作流,如果大家也有好的工具的话欢迎分享交流~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。