3.以Y轴为依据进行Sprite排序
对于2D游戏,将Transparency Sort Mode (Edit > Project Settings > Graphics ) 设置为Custom Axis,然后设置Transparency Sort Axis,场景中的Sprite可以根据Y轴进行排序。如下图所示,当设置为(0,1,0)时,Y坐标相对较大的Sprite排在Y坐标相对较小的Sprite之下,当设置为(0,-1,0)时,则相反。

5. 快速新建基于自定义Shader的材质
在Project面板中选中一个自定义Shader,右键选择新建材质(Create>Material),则材质默认使用的着色器为z之前选择的Shader,同时材质名称为Shader的名称。

12. Animation 中 Add Property 可以修改脚本的变量

16.快速比较距离
将两点之间的距离与一个固定距离进行比较时,可使两点相减然后取平方(即sqrMagnitude),然后用该值与某个距离值的平方进行比较。不建议使用Vector3.Distance方法获取两点之间距离,然后与给定的距离值进行比较。因为Vector3.Distance(a,b) 相当于 (a-b).magnitude,即求平方后开根,而sqrMagnitude方法省去了求平方根的操作,所以比magnitude执行快。
建议:
if ((pointA - pointB).sqrMagnitude < dist * dist) {
// ...
}
不建议:
if (Vector3.Distance(pointA, pointB) < dist) {

}

18.
[SerializeField]标记的私有变量可以在 Inspector 面板中显示.

25. CompareTag方法
当对游戏对象的Tag进行比对时,从性能考虑,可使用CompareTag方法,不建议使用双等号进行判断。

27. 查找含有某组件的游戏对象
如果需要查找挂载了某个组件的游戏对象,直接在Hierarchy面板的搜索框中输入组件名称即可,需要注意组件名称中的空格,比如搜索”MeshCollider“而不是”Mesh Collider“

38.ContextMenu
使用ContextMenu属性标记函数,能够在脚本所在的上下文菜单中调用

45.最大化窗口
使用快捷键Shift+空格键,可以快速最大化鼠标所在的窗口,而不用选择窗口右上角的Maximize命令

50.锁定Inspector
点击Inspector右上角的锁定按钮,或在上下文菜单中选择Lock命令,可以将当前选中游戏对象的Inspector面板锁定。然后选择Add Tab > Inspector命令,添加一个Inspector,这样能够方便在两个游戏对象之间互相拷贝组件数据。

51.Inspector调试模式
在Inspector面板右上角的上下文菜单中,选择Debug命令,启动调试模式,此时将显示组件包含的所有变量,包括私有变量,当运行编辑器时,可以实时查看各组件所有变量的变化。

53.风格化Debug.Log的输出信息
当Debug.Log方法的输出消息是字符串时,可以使用富文本标记来强调内容。
Debug.Log("<color=red>红色文本</color> AssetBundle not found");

54.绘制调试数据
当变量随着时间的推进而改变时,可使用AnimationCurve实例在程序运行时绘制此数据,如下代码所示:
public AnimationCurve plot = new AnimationCurve();
void Update()
{
float value = Mathf.Sin(Time.time);
plot.AddKey(Time.realtimeSinceStartup, value);
}
返回Unity编辑器,运行程序,点击plot属性,此时会随着时间动态绘制数据的变化情况

57.Blender (三维动画制作软件)

58. Inspector面板中物体的图标下拉可以给游戏对象指定一个特定颜色.

65.自定义窗口
将类继承自EditorWindow,可以添加自定义窗口,在此基础上编写一些命令和工具,如下代码所示:
using UnityEngine;
using UnityEditor;

public class ExampleWindow : EditorWindow
{
[MenuItem("Window/Example")]
public static void ShowWindow()
{
GetWindow<ExampleWindow>("Example");
}
}

72. 管理程序集
在Project面板中选择Create > Assembly Definition 命令,创建程序集文件,然后将其拖放到指定的文件夹中,定义脚本依赖关系,可以确保脚本更改后,只会重新生成必需的程序集,从而减少编译时间。

73.WaitForSecondsRealtime
当时间缩放为0时(即Time.timeScale=0f),waitForSeconds方法将不会停止等待,后续代码也不会执行,此时可使用WaitForSecondsRealtime方法

77/78/79. Inspector 方便属性修饰
[Range(0f, 10f)] // 滑块
[Header("自定义文字")]
[ToolTip("鼠标悬停, 提示文本")]

85. 组件预设
在Inspector 面板中组件的右上角帮助和上下文菜单按钮中间的调节按钮,点击可以使用或保存组件预设.

86. foreach遍历游戏对象的所有子物体
foreach (Transform child in transform) {
Debug.Log(child.name);
}

87. 使用 transform.SetSibilingIndex 方法设置游戏对象在 Hierachy 面板中的顺序

90. 脚本暂停编辑器播放
EditorApplication.isPaused = true;

91. 编辑器上方的播放暂停右边的步进(Step)按钮,可以逐帧查看程序运行状态.

92. Profiler工具分析, 查看函数资源的使用情况
引入 UnityEngine.Profiling 命名空间;
Profiler.BeginSample("expensive");
CalculateSomething();
Profiler.EndSample();

97. InvokeRepeating方法
按照一定的时间间隔反复执行一个函数, 若不使用CancelInvoke 将会持续执行, 即使将方法所在的脚本关闭.

98. Frame Debugger(Window -> Analysis -> Frame Debugger)
查看每一帧的渲染过程

99. Physics Debugger(Window -> Analysis -> Physics Debugger)
绘制出来所有游戏对象的碰撞体.

干货 unity小贴士的更多相关文章

  1. Angular2 小贴士 Name

    Angular2 正式版已经发布了一个月了,我也是通过各种方式在进行验证是否可以满足我们的需求,今天我就发现了一个问题.现在我们来一起说明一下,这个可能不算是bug,而应该需要我们记住就可以了. 我们 ...

  2. 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

    自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  3. 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析

    自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  4. 自制Unity小游戏TankHero-2D(3)开始玩起来

    自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅 ...

  5. 自制Unity小游戏TankHero-2D(2)制作敌方坦克

    自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  6. 自制Unity小游戏TankHero-2D(1)制作主角坦克

    自制Unity小游戏TankHero-2D(1)制作主角坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...

  7. 【小贴士】虚拟键盘与fixed带给移动端的痛!

    前言 今天来公司的主要目的就是研究虚拟键盘与fixed的问题,期间因为同事问起闭包与事件委托(阻止冒泡)相关问题,便穿插了一篇别的: [小贴士]工作中的”闭包“与事件委托的”阻止冒泡“,有兴趣的朋友可 ...

  8. SVN小贴士

    我辛辛苦苦写的到哪里了? SVN小贴士SVN服务器上的代码项目组公用,你的每一个提交都会体现给项目组每个人,所以提交要慎重,要注意避免代码冲突,使用SVN小贴士: 1.提前宣布开发计划,保持项目组成员 ...

  9. android性能小贴士 翻译

    转自http://developer.android.com/training/articles/perf-tips.html 性能小贴士: 这篇文档主要一些微优化可以提升应用程序性能,但是这些改变不 ...

随机推荐

  1. 【转】C#中dynamic的正确用法

    原文:http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4.0的新特性.dynamic ...

  2. AJPFX:外汇的爆仓和追加保证金

    在外汇交易中,当可用保证金变成0时,账户即会爆仓.而为了防止爆仓,您可以在可用保证金不足时追加保证金以防止爆仓. 例如,您在AJPFX的账户是100倍的杠杆,一手欧美货币对合约为10万美金(1 LOT ...

  3. SpringCloud实现集群和负载均衡

    Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的. 组成部分 spingcloud的五大神兽 服务发现——Netflix Eureka ...

  4. MariaDB 用户与权限管理(12)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...

  5. BZOJ 2200--[Usaco2011 Jan]道路和航线(最短路&拓扑排序)

    2200: [Usaco2011 Jan]道路和航线 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1128  Solved: 414[Submit] ...

  6. ArrayList的源码分析

    在项目中经常会用到list集合来存储数据,而其中ArrayList是用的最多的的一个集合,这篇博文主要简单介绍ArrayList的源码分析,基于JDK1.7: 这里主要介绍 集合 的属性,构造器,和方 ...

  7. asp.net core 系列之用户认证(1)-给项目添加 Identity

    对于没有包含认证(authentication),的项目,你可以使用基架(scaffolder)把 Identity的程序集包加入到项目中,并且选择性的添加Identity的代码进行生成. 虽然基架已 ...

  8. Alpha冲刺(3/10)——追光的人

    1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...

  9. Java8简明指南

    Java8简明指南 转载自并发编程网 – ifeve.com本文链接地址: Java8简明指南 欢迎来到Java8简明指南.本教程将一步一步指导你通过所有新语言特性.由短而简单的代码示例,带你了解如何 ...

  10. Flyweight享元模式(结构型模式)

    1.面向对象的缺点 虽然OOP能很好的解决系统抽象的问题,并且在大多数的情况下,也不会损失系统的性能.但是在某些特殊的业务下,由于对象的数量太多,采用面向对象会给系统带来难以承受的内存开销.示例代码如 ...