Unity游戏开发小技巧集结,不用谢我,我只是大自然的搬运工。

  1. 借助 Prefab 暂存数据。可以直接在脚本的 Inspector 上填写,然后把整个 GameObject 拖成 Prefab 暂存。等要用的时候再拖出来。
  2. DontDestroy模式,在跨场景的时候保持某些对象一直存在,不必要每次都重新加载,譬如显示广告的模块。
  3. 内置的 Awake,Start,Update,FixedUpdate,LateUpdate 函数,令开发者直接往游戏循环里加内容,非常方便快捷。
  4. Input.MouseDown 在移动设备上也通用,对于一些对输入性能要求不高的操作,直接用它来代替 Input.TouchCount或者 RaycastHit 即可。
  5. 新的 UGUI 支持多种 Camera 渲染,以及 RectTransform 里Anchor 的灵活配置,功能很强大。提前设计好的话,可以一套 UI 同时支持 iPhone4/5/6/iPad以及所有 Android 设备各种尺寸的分辨率。再也不必做多套 UI 来适应各种设备了。
  6. Editor 脚本,可以方便在编辑器里扩展,对开发和摆关卡帮助极大。
  7. 测试运行时,可以在任意时候暂停游戏,重新调整数值,游戏对象的位置等等,然后再继续游戏。
  8. Editor/Resources 目录可以存在多个,且可以存放在任意目录下。写自己的插件或者代码库时可以自带辅助的资源。
  9. 在 Hierachy 层级对话框,可以随时输入搜索关键字,然后一起选中筛选出来的GameObject,这个时候可以同时修改它们的相同属性。
  10. 内置取色器可以暂存颜色。
  11. 脚本的公用属性在 Inspector 中显示时,可以用额外的修饰符控制其显示方式,取值范围等等,非常方便。
  12. StreamingAssets 目录是用来存放不加密的外部文件。它还有一个极好的用途是存放测试数据。方便在 PC/MAC/移动设备上都能调用到同样的测试数据进行模拟处理。
  13. 配合 Alfred 这款快捷启动的小工具,输入“us 关键字”即可快速调出Unity的 ScriptAPI,你是否也经常忘记 Collier/Trigger 函数的完整写法?每次都需要从帮助手册里复制代码段?
  14. Unity死机未保存场景:当你在Unity中编辑场景,突然死机时,可以在项目文件目录中找到Temp文件夹,双击文件夹,找到_Backupscenes文件夹,把后缀为.backup的文件后缀改为.unity,然后拖进Unity的Project界面里面,这样就可以还原死机前场景最后情况。
  15. Inspector界面的数值栏自带加减乘除功能:从Unity5.1开始,可以在Inspector界面中的数值栏进行计算,比如:你可以在Transform里面的Position中X栏中加减乘除。
  16. 随意移动模型预览视窗:在Project界面里面选中模型,在Inspector界面上会显示模型的预览视图,右击视图的上的双横条,模型预览视图就会跳出来,此时就可以像Scene,Game等视窗一样任意移动,放在你想放的地方,如果想让他变回去,只要关掉它即可。
  17. 搜寻当前场景中哪些物件运用了指定脚本:在Hierarchy界面中的搜索栏中输入你想要搜索的脚本全名,即可找到哪些物件用了这个脚本,此方法也可以用来搜索哪些物体上有哪些物件,比如:Rigidbody等。
  18. 在界面上查看private变量:在Inspector界面右击Inspector的标签栏,选择Debug。
  19. 只让游戏运行一帧:先按下暂停键,再按运行键。
  20. 通过Debug.Log获取执行此语句物件:在脚本的Debug.Log语句中加入gameObject,即Debug.Log("Test", gameObject); 脚本运行时点击Console界面中的输出语句,就能在Hierarchy界面中看到哪个物件执行了这个脚本。
  21. 展开所有子节点:按住Alt,用鼠标点击包含子节点物件前的三角形,在Hierarchy界面和Project界面都可以使用。
  22. 编辑时镜头跟随选中物件:在Scene界面中选中物件按F,镜头就会对准选中物件,并使其在Scene窗口中居中,如果在拖动物件时,要让镜头跟随物件移动,选中物体后按Shift+F即可。
  23. 在Scene界面中方便移动编辑镜头:在Scene界面中鼠标右键 + A/S/D/W/Q/E来移动镜头, 如果想使Game视窗的镜头跟Scene一样,可以在Unity菜单栏中选择GameObject-->AlignWithView。
  24. 在Project界面搜索商店内容:先在Project界面中的搜索栏中输入你想要搜索内容的关键字,然后在搜索栏下边的搜索范围选择中选择AssetStore。
  25. 还在用4.X, 拍案叫绝不敢说, 多开几个Unity实例我不知道各位看官怎么区分开的倒地是哪个?我们用Unity的C#功能识别路径把Unity的路径打到标题栏, 这样就方便多了
  26. 脚本编译可以不用mono编译器。而编译的dll和il都可以在mono上跑。从而规避老版本编译器的一些生成问题。
  27. shader lab支持自定义对应版本的bytecode。可以用别的shader编译器来编译shader。也是挺灵活的。
  28. 做一个横向移动模块 里面有个Update函数 传入Transform,就把Transform按固定速度横向移动。
  29. 做一个纵向移动模块 里面有个Update函数 传入Transform,就把Transform按重力加速垂直移动。
  30. 下次要做一个 斜向固定速度的,就重用 横向移动模块。单独写一个纵向固定速度移动的模块。同样的角色脚本,推这两个组件进去,角色就斜着飞了。
  31. 把一个模块列表做成状态机状态,加个进入模块和退出模块。加点状态转换逻辑,你就有个状态机了。
  32. 可以把Update函数,拿一个协程的iEnumerator代替;进入状态就启动协程。定时的,不用更新,或者其他特殊的状态都可以轻松搞出来了。
  33. 状态里面定义个System.Action<String>之类的事件,模块可以随便抛出这个玩意。呵呵,这下动画关键帧也有了。
  34. 做一个角色的脚本 包含一个模块列表,把一个横向和一个纵向模块推入列表,然后角色每次Update就遍历就执行每个模块的Update。
  35. 快捷目录:Project窗口下,可以把文件夹直接拖到Favorites下作为快捷入口,再也不用找一个文件翻半天了,常用的目录都可以放在这里
  36. 线框输出:Game窗口的右上角有个Gizmos按钮,点击之后可以把你用于Debug画出来的所有线框都画到游戏场景中,其中包含Gizmos类画出来的所有东西,以及Unity本身提供的碰撞体等等这些需要去Scene窗口看的东西,尤其是没有双屏幕的开发者,这个功能太贴心了。
  37. 自定义Profiler:利用Profiler.BeginSample()和Profiler.EndSample()函数,可以将任何代码断加入Profiler输出,性能调优的利器,一般来说如果有某个地方你自己对于性能不是很有把握,检测一下即可知道其使用开销,用了之后就停不下来了。
  38. 如果项目中有一些使用到反射的代码不太方便修改,而又希望通过设置Stripping Level来降低包体大小和内存占用,可以在Assets目录下添加link.xml文件来指定涉及到反射的类。
  39. 通过将Editor Setting中的Asset Serialization设置为Force Text可以查看prefab的配置内容,并通过比对工具进行差异处理和合并。
  40. 还有些阴招,那我不能够告诉你啊,当年整出来费不少心血,就指望这个碾压友商来的,哈哈~