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. nginx-1.12.0版本(编译安装)-自定义安装路径

    nginx-1.12.0版本(编译安装)-自定义安装路径 安装路径:/application/nginx-1.12.0 1.前期准备 安装编译需要的gcc和gcc-c++ yum install -y ...

  2. VS2017 v15.8.0 Task ExpandPriContent failed. Illegal characters in path

    昨天更新了VS到最新版本v15.8.0,但是编译UWP出现了操蛋的bug. 谷歌一下,vs社区已经有答案了. 打开.csproj文件,在节点 <PropertyGroup> 里面,加上一行 ...

  3. 如何在Notepad ++中每两行合并

    \n 新行 \r 行首 [^\n]+ 是排除\n外的任意字符 [^\r]+ 是排除\r外的任意字符 用[^\n]或[^\r]都不行..老是匹配到空的东西..原来是这么一回事..用[^\n\r]+就行了 ...

  4. Dubbo实现原理之基于SPI思想实现Dubbo内核

    dubbo中SPI接口的定义如下: @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public ...

  5. python中的三次握手以及四次挥手

    三次握手1.客户端对服务端说:我的序号是x,我要向你请求连接:(第一次握手,发送SYN包,然后进入SYN-SEND状态)2.服务端听到之后对客户端说:我的序号是y,期待你下一句序号是x+1的话(意思就 ...

  6. CentOS 安装Weblogic并配置 domain

    CentOS 安装Weblogic并配置 domain 1.创建用户组 [root@localhost weblogic]# groupadd weblogic 2.创建 tmn 用户 [root@l ...

  7. 一步步Cobol 400上手自学入门教程04 - 过程部

    过程部的作用:编写程序要执行的语句,是程序的核心. 结构: 基本语句 INITIALIZE 设置数据项的初始值 ACCEPT 接收从键盘或指定设备上获得输入数据. 例子: 当批处理文件读到调用ACCP ...

  8. 在MySQL Workbench查看表,表结构,索引,函数,存储过程,触发器,重连

    表 表结构 索引 触发器 存储过程 函数 重新连接 出现Error Code: 2006 MySQL server has gone away时

  9. cFSMN和FSMN参数规模对比分析

    1. FSMN参数规模分析        (1)分析前提: 假设隐藏层单元规模都为n 只分析前向t个时刻的结构,即暂时不考虑双向的结构 只分析向量系数编码,即vFSMN,暂时不考虑sFSMN     ...

  10. ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 2

    这是sqoop的 迁移数据到hive的报错 解决方案: 1,已经尝试不是  晚上大多数说的 libthrity的原因 2,查看自己的配置  sqoop-env.sh  如果配置的路径写的不对,对应的包 ...