40个Unity游戏开发小阴招

2016年07月26日 18:27 1 点赞 1 评论 更新于 2025-11-21 20:16
40个Unity游戏开发小阴招

在Unity游戏开发中,掌握一些实用的小技巧能显著提升开发效率和质量。以下是精心整理的40个开发小技巧,希望能对开发者们有所帮助。

数据存储与对象管理

  1. 借助Prefab暂存数据:可直接在脚本的Inspector上填写数据,然后将整个GameObject拖成Prefab进行暂存。待需要使用时,再将其拖出即可。
  2. DontDestroy模式:在跨场景时,使用该模式可保持某些对象一直存在,避免每次都重新加载。例如显示广告的模块就可采用此模式。

函数与输入处理

  1. 内置函数的便捷使用:Unity内置的Awake、Start、Update、FixedUpdate、LateUpdate函数,方便开发者直接往游戏循环里添加内容,操作简单快捷。
  2. 通用输入处理:Input.MouseDown在移动设备上同样通用。对于一些对输入性能要求不高的操作,可直接用它来代替Input.TouchCount或者RaycastHit。

UI与编辑器扩展

  1. UGUI的强大功能:新的UGUI支持多种Camera渲染,以及RectTransform里Anchor的灵活配置。提前设计好的话,一套UI可同时支持iPhone4/5/6/iPad以及所有Android设备的各种尺寸分辨率,无需再为不同设备制作多套UI。
  2. Editor脚本的应用:Editor脚本可方便地在编辑器里进行扩展,对开发和摆关卡有极大帮助。

测试与调试

  1. 测试时的灵活调整:在测试运行时,可在任意时候暂停游戏,重新调整数值、游戏对象的位置等,然后继续游戏。
  2. 多Editor/Resources目录:Editor/Resources目录可以存在多个,且可存放在任意目录下。在编写自己的插件或者代码库时,可自带辅助资源。
  3. 批量修改对象属性:在Hierachy层级对话框中,可随时输入搜索关键字,选中筛选出来的GameObject,同时修改它们的相同属性。
  4. 内置取色器的使用:内置取色器可以暂存颜色,方便开发者使用。
  5. 脚本属性的显示控制:脚本的公用属性在Inspector中显示时,可用额外的修饰符控制其显示方式、取值范围等,十分便捷。
  6. StreamingAssets目录的用途:该目录用于存放不加密的外部文件,还可用于存放测试数据,方便在PC/MAC/移动设备上调用同样的测试数据进行模拟处理。
  7. 快速调出ScriptAPI:配合Alfred这款快捷启动小工具,输入“us 关键字”即可快速调出Unity的ScriptAPI,解决开发者忘记函数完整写法的困扰。
  8. 还原死机前场景:当在Unity中编辑场景突然死机时,可在项目文件目录中找到Temp文件夹,双击进入,找到_Backupscenes文件夹,将后缀为.backup的文件后缀改为.unity,然后拖进Unity的Project界面,即可还原死机前场景的最后情况。
  9. Inspector界面数值栏计算功能:从Unity5.1开始,可在Inspector界面的数值栏进行计算,例如在Transform的Position中X栏进行加减乘除操作。
  10. 移动模型预览视窗:在Project界面选中模型,Inspector界面会显示模型的预览视图。右击视图上的双横条,模型预览视图会跳出,可像Scene、Game等视窗一样任意移动。若想恢复原状,关闭即可。
  11. 搜索使用指定脚本的物件:在Hierarchy界面的搜索栏中输入想要搜索的脚本全名,可找到使用该脚本的物件。此方法也可用于搜索具有特定组件(如Rigidbody)的物体。
  12. 查看private变量:在Inspector界面右击Inspector的标签栏,选择Debug,即可在界面上查看private变量。
  13. 只运行一帧:先按下暂停键,再按运行键,可让游戏只运行一帧。
  14. 获取执行语句的物件:在脚本的Debug.Log语句中加入gameObject,即Debug.Log("Test", gameObject)。脚本运行时,点击Console界面中的输出语句,可在Hierarchy界面中看到执行该脚本的物件。
  15. 展开所有子节点:按住Alt,用鼠标点击包含子节点物件前的三角形,在Hierarchy界面和Project界面均可使用此操作展开所有子节点。
  16. 镜头跟随选中物件:在Scene界面中选中物件按F,镜头会对准选中物件并使其在Scene窗口中居中。若在拖动物件时要让镜头跟随移动,选中物体后按Shift + F即可。
  17. 方便移动编辑镜头:在Scene界面中,使用鼠标右键 + A/S/D/W/Q/E来移动镜头。若想使Game视窗的镜头与Scene一样,可在Unity菜单栏中选择GameObject --> AlignWithView。
  18. 搜索商店内容:在Project界面的搜索栏中输入想要搜索内容的关键字,然后在搜索栏下边的搜索范围选择中选择AssetStore,即可搜索商店内容。

其他技巧

  1. 区分多Unity实例:若使用Unity的C#功能识别路径并将Unity的路径显示在标题栏,可方便区分多个Unity实例。
  2. 脚本编译优化:脚本编译可以不使用mono编译器,编译的dll和il都可在mono上运行,从而规避老版本编译器的一些生成问题。
  3. Shader编译灵活性:Shader lab支持自定义对应版本的bytecode,可用其他shader编译器来编译shader,具有较高的灵活性。
  4. 模块重用实现移动:可制作横向移动模块和纵向移动模块,在Update函数中传入Transform,分别实现按固定速度横向移动和按重力加速垂直移动。若要实现斜向固定速度移动,可重用横向移动模块,并单独编写纵向固定速度移动模块,将这两个组件添加到角色脚本中,角色即可斜着飞行。
  5. 状态机的实现:将一个模块列表做成状态机状态,添加进入模块和退出模块,并加入状态转换逻辑,即可实现一个状态机。
  6. 协程替代Update函数:可以用协程的IEnumerator代替Update函数,进入状态时启动协程,可轻松实现定时、无需更新或其他特殊状态。
  7. 动画关键帧的实现:在状态中定义System.Action之类的事件,模块可随意抛出该事件,从而实现动画关键帧。
  8. 角色脚本模块管理:编写一个角色的脚本,包含一个模块列表,将横向和纵向模块推入列表,角色每次Update时遍历并执行每个模块的Update。
  9. 快捷目录设置:在Project窗口下,可将文件夹直接拖到Favorites下作为快捷入口,方便查找常用文件。
  10. 线框输出功能:Game窗口的右上角有个Gizmos按钮,点击后可将用于Debug画出的所有线框显示在游戏场景中,包括Gizmos类画出的东西以及Unity本身提供的碰撞体等,为没有双屏幕的开发者提供了便利。
  11. 自定义Profiler:利用Profiler.BeginSample()和Profiler.EndSample()函数,可将任何代码段加入Profiler输出,是性能调优的有力工具。若对某个地方的性能没有把握,使用此方法检测即可知道其使用开销。
  12. 处理反射代码与包体大小:如果项目中有使用到反射的代码且不便修改,又希望通过设置Stripping Level来降低包体大小和内存占用,可在Assets目录下添加link.xml文件来指定涉及到反射的类。
  13. 查看prefab配置内容:通过将Editor Setting中的Asset Serialization设置为Force Text,可查看prefab的配置内容,并通过比对工具进行差异处理和合并。

还有一些技巧由于涉及较多心血,暂不对外分享,希望上述技巧能给开发者们带来帮助。