战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  249 随笔 :: 0 文章 :: 508 评论 :: 0 Trackbacks

最近在项目中进行资源优化. 我们的项目一直以来都是以传统的电子表格配置为中心的资源驱动加载方法, 拿角色携带的特效要播放出来这个case来具体点说就是:

1. 技能部分的特效可以遍历动作表播放的所有特效id, 提前预载

2. buff类特效是动态确定的,无法分析. 需要通过角色表添加资源id在加载角色时加载特效

这种做法的缺点:

当角色特效效果调整时, 美术和策划需要调整特效id表. 多出来不用的特效也加载是感觉不出来的, 分析也是很困难的

所以这种以传统的电子表格配置为中心的方式在Unity3D里, 内存, 包优化会是个大问题.

 

那么, 什么是Unity3D的开发核心思想?

除了组件思想外, 就是Prefab, 贯彻整个编辑器及引擎自始至终

 

处理角色携带特效加载后播放的这个case, 用Prefab为中心的资源管理来做的话, 大概就是这样:

1. 程序编写一个角色特效列表脚本, 把List暴露出来可以在编辑器里使用

2. 美术在做技能时, 把要用到的特效拖拽到List中

3. 特效无需再编制全局ID编码

4. 策划根据这个角色挂接的特效索引, 在配置表里添加播放指令

这样做的优点:

角色引用到的资源才会被打到最终游戏包内, 不使用的资源是不会被加载的

 

类似的, 在UI特效里, 也应该是将要播放的特效挂接到对象中, 而不是动态通过代码去加载

在Unity3D中, Prefab将图片,Shader, 特效, 脚本等一切平等看待, 只要有引用, 一次性加载.

同时, 也可以通过静态工具分析Prefab.

如果是通过代码加载的效果, 则只能让程序员做优化, 这种过程无法让Unity3D官方后期提供的工具进行优化

 

所以, 推荐使用Prefab为中心的资源管理模式

posted on 2016-03-24 16:33 战魂小筑 阅读(1359) 评论(0)  编辑 收藏 引用 所属分类: 游戏开发技术移动开发Unity3D

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理