Unity开发高手推荐:高效开发小技巧集合
Unity开发高手推荐:高效开发小技巧集合
想成为Unity开发高手?这里有一系列由经验丰富的开发者总结的小技巧,帮助你大幅提升开发效率!从充分利用内置引擎工具到参加刺激思维的游戏比赛,这些方法不仅让你事半功倍,还能在实践中不断进步。分享你的经验,与他人交流,使用版本控制工具保持项目整洁有序。快来学习这些实用技巧,让你的Unity开发之旅更加顺畅吧!
编辑器快捷键与内置工具
1. 快速定位游戏对象
在使用Debug.Log
函数时,可以通过传递游戏对象给第二个参数gameObject
,点击控制面板的输出信息即可自动定位到对应的游戏对象,方便查找游戏物体。
2. 查看私有变量
如果想在检视面板查看脚本的private私有变量,只需点击Inspector,在弹出菜单中选择Debug即可。
3. 场景视图快捷键
按键盘键Q、W、E、R、T可以依次切换界面上的小工具。除此之外,按数字键2或3还可以切换场景为2D模式或3D模式。
4. 快速复制对象
在层次视图中选中某个游戏对象,按快捷键Cmd/Ctrl+D即可复制该对象,对于检视面板中的数组字段也可已同样的方式来复制元素。
5. 预览窗口独立
右键点击检视面板下方的预览窗口即可让预览窗口跳出来,然后自己选择合适的地方停靠,这样切换模型查看就不会影响到其它面板。想让预览窗口回到原位,只需右键点击窗口,在弹出菜单中选择Close Tab即可。
代码优化技巧
1. 使用整型ID寻址属性
在Unity内部,对于Animator,Material和Shader属性的寻址不是通过字符串名称进行的。出于速度考虑,所有的属性都被哈希成属性ID,实际上通过这些ID来寻址属性。
因此,在Animator,Material和Shader上使用Set或Get方法时,使用整形参数的方法来代替字符串参数的方法。这些字符串方法只是简单的进行字符串的哈希,然后把哈希后的ID传递给整形参数的方法。
对于Animator属性名,对应的API是Animator.StringToHash,对于Material和Shader属性名是Shader.PropertyToID。
2. 避免频繁的null判断
Mono和IL2CPP运行时以一种特殊的方法来处理UnityEngine.Object子类的实例。在这些实例上执行方法,实际上会调用进引擎代码,这必须执行查找和验证工作来把脚本引用转化为原生引用。虽然很小,把这类变量和null进行对比会比和纯C#类对比代价高很多。出于这个原因,应该避免在频繁循环中或每帧执行的代码中进行null比较。
3. 使用非分配式物理API
在Unity 5.3及以后,对所有物理查找API都引入了非分配版本。使用RaycastNonAlloc替换RaycastAll,SphereCastNonAlloc替换SphereCastAll,等等。对于2D应用,也有2D物理的非分配版本。
4. 优化数学运算
对于频繁循环中的vector和quaternion运行,记住整形运算比浮点运算要快,浮点运算比vector、matrix或quaternion运算要快。
因此,在交换律和结合律允许的情况下,尝试最小化每个计算的操作:
Vector3 x;
int a, b;
// 不够高效:导致两次vector相乘
Vector3 slow = a * x * b;
// 更高效:一次整形乘法,一次vector乘法
Vector3 fast = a * b * x;
资源管理与版本控制
1. 资源目录结构设计
我们使用公用加系统,然后分别进行分类的方案:
- 资源分类:
- Textures:纹理
- Sprites:精灵
- Prefabs:预制
- Shaders:着色器
- Materials:材质
- AnimationClips:动画片段
- Animators:动画控制器
- Spines:骨骼
- Font:字体
- AudioClip:声音片段
- Config:配置文件
- BehaviorTree:行为树
- Models:模型
- Scenes:场景
- Config:保存一些资源配置信息
- Common:公共目录,包含所有资源类型
- Systems:系统目录,分各个系统的资源目录,主要是Textures/Sprites/Prefabs
2. 版本控制最佳实践
- 少承诺,多提交:单次提交应该只与一项任务或票据相关。
- 保持提交信息清洁:使用Jira或GitLab等任务票证系统时,最好在提交中包含票号。
- 避免不加区分的提交:提交应该只包含与您提交到repo的更改相关的文件。
- 抢先获取最新资讯:只要有意义,就将仓库中的最新更改拉入到您的工作副本中。
- 了解你的工具集:确保每个人都能轻松使用它并了解他们所使用的工具。
必备插件推荐
DOTween Pro:可以用极少的代码处理复杂的动画效果,替代了我们在协程或者在Update里面撰写大量的逻辑控制代码。
Easy Save:在实际开发中我们需要储存各种类型的数据,并想要数据得到保护,那么EasySave绝对是为这些需求量身定做的。
Lean Touch:为手指触摸控制你的游戏提供极其简单的解决方案,这让你可以快速添加触摸控制到你的游戏-无需代码。
Playmaker:这是unity3d最好的一款可视化编辑器,突破了非程序员止步于开发任务的障碍。
BestHttp:提供包括Websock,Socket.IO,SignalIR,download/upload等特性。适合于大型网络游戏/项目,网络联机游戏项目。
Odin - Inspector and Serialize:一款可视化编程插件,可以让开发者序列化任何内容。
QHierarchy:增强Hierarchy窗口的功能,极大提升开发效率。
Editor Console Pro:取代Unity原生控制台编辑器的插件,生产力提升必备插件。
开发流程建议
1. 参加游戏比赛
游戏比赛不仅仅是让你了解游戏开发,它也是一个刺激你的思维和技能的工具。游戏比赛的过程不是传统的游戏开发,但这就是它的全部力量。事实上,由于它发生在一个非常短且固定的时间段内,你必须快速原型化、思考和决定。此外,你应该瞄准游戏的基本机制,并保持简单(这个技巧在制作更大的游戏时也适用!)。
2. 分享你的经验
当然,另一个伟大的帮助和灵感来源是来自你周围或互联网上的其他创意人士。事实上,游戏开发与许多其他活动一样,可以采取多种形式和项目,你总有东西可以学到。所以,为了最大限度地提高你的学习过程,从他人的经验和失败中汲取营养。
3. 不断地重新评估你的工作
永远记住重新评估和批评你所创造的东西!用新的眼光,你可以分析你以前的工作,观察它的优点和缺点,并根据你的新知识改进它。
4. 有条理和严谨
有些人天生就有条理,有些人则没有,但你必须严谨和有条理,否则你(或你的团队)可能会在未来的道路上遇到麻烦。你可以开始作为一个团队(如果你不是一个人工作)决定一个共同的语法,一个代码命名约定,以便大家都在同一页面上,并能够轻松地浏览所有类和方法。
5. 使用版本控制工具
一旦你确定了你的层次结构,并且准备开始工作,你应该使用一个版本控制工具来轻松地合并每个人的工作。
通过以上路径,你可以在6-12个月内系统掌握Unity开发能力,并具备独立完成中等规模项目的能力。