初学者在使用Unity时很很可能不小心踩到一些在不利于项目开发的坑,粤嵌Unity3D培训在这里教的应该避开哪些坑。
1.制作抽象的prefab来做关卡编辑
尽可能制作抽象的prefab来做关卡编辑,该prefab应该足够抽象简单(只有一个GameObject,然后通过Gizmo来绘制是个不错的手段),否则以后变化的时候(常见的就是改美术资源),所有关卡都lost prefab,那么对策划来说是一场灾难。
2.尽可能避免修改Scene,方法有几种:
使用xml之类的数据组织场景
尽量多让scene由prefab组成,这样变动都在prefab上
使用工具做场景Merge
3.不要过度依赖Component特性来开发,考虑数据驱动。
4.逻辑容易散落在编辑器各处,可以做一个中心管理。
利用unity的特性
组织好hierarchy,不管是编辑的时候还是运行的时候,编辑的时候可以通过工具来简化组织层级的工作。
让每个场景自己能跑。
利用基于组件的架构,尽可能少的使用继承(用C#的话),多通过组合来完成开发。遇到需要数据访问的通用接口,我们可以通过组合的方式来完成,而不是提供一个公共基类接口来继承,只要大家都认识这个公共组件就可以取到数据了。
做好tag、layer规划,要考虑业务中哪类物体之间需要交互。
在代码里面get某个prefab或者GameObject,可以考虑利用界面拖目标过来,这样更加直观,而且也能对抗变化,比如目标名字变了也不怕,而且还能节省代码量。
代码
粤嵌Unity3D培训认为,Unity3D容易被破解,因为发布版本的IL是非常容易被反编译的,要做好混淆的考虑。在Unity3D中混淆要考虑对编辑器的影响。
复杂类型尽量使用引用类型,值类型反射麻烦,不方便序列化以及做成编辑器。值类型要小心赋值对象是否只是临时对象。
引用类型释放之后,引用它的指针会置为null,可以放心使用。Foreach、linq、协程慎用,反射只在编辑器中使用。考虑封装Time,方便做暂停。
考虑使用调度器来完成功能,而不是在Update自己维护状态,这样做暂停也很容易,代码更清晰,功能更内聚。
美术
复杂功能也应该通过编辑器开发给策划微调,特别是可视化比较重要的模块,比如动作调整。
制作原型美术,让开发提升开发效率。有统一的约定,比如模型总是中心对齐,角色总是脚部对齐,统一的缩放、统一的动画骨骼命名,资源有统一的路径。
支持换装(avatar)要一开始就想清楚。
资源加载和优化尽可能早地给出雏形(只是雏形,帮助你对需求的把握,因为这时候你还不知道热点在哪)。因为有雏形,那么代码会间接一点,也为改变提供了空间。
情况是在不断地变化,要使自己的思想适应新的情况,就得学习。开发时遇到的问题,粤嵌Unity3D培训建议要灵活处理。