51.Inspector调试模式
在Inspector面板右上角的下拉菜单中,选择Debug命令,启动调试模式,此时将显示组件包含的所有变量,包括私有变量,当运行编辑器时,可以实时查看各组件所有变量的变化。
52.高亮显示Debug.Log对应的游戏对象
当使用Debug.Log方法输出信息时,可将gameObject作为此方法的第二个参数,当程序运行时,点击Console面板中对应的输出信息,可在Hierarchy面板中高亮显示挂载了此脚本的游戏对象。
void Start() { Debug.Log("this is a message",gameObject); }
53.风格化Debug.Log的输出信息
当Debug.Log方法的输出消息是字符串时,可以使用富文本标记来强调内容。如下代码所示:
Debug.Log("<color=red>Fatal error:</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属性,此时会随着时间动态绘制数据的变化情况,如下图所示:
55.快速新建脚本并挂载到游戏对象上
选择游戏对象,在Inspector面板上点击Add Component按钮,在搜索框中输入新建的脚本名称并回车,可新建脚本并挂载到目标游戏对象上,双击脚本名称进行脚本编写。
56.导入第三方项目文件
Unity能够读取部分第三方创作工具保存的项目文件,比如Photoshop的PSD,Blender的源文件等,不需要从这些软件导出中转文件格式,比如Jpg、FBX等。
57.导入后保留PSD文件的图层结构
将PSD文件另存为PSB格式,将其导入Unity后可保留文件图层结构,此时需要在Package Manager中安装2D PSD Importer,并且在文件的导入属性中设置Texture Type 为Sprite (2D and UI)。
58+59.为游戏对象指定/自定义图标
点击游戏对象Inspector面板左上角的下拉菜单,可为游戏对象指定一个特定颜色的标识,这对空游戏对象的可视化也比较有用。点击Other...按钮,可以用自己的图片来进行标识。
60/61.显示/隐藏Gizmo
点击Scene面板右上角的Gizmo下拉列表,可以选择显示或隐藏某类组件的图标和Gizmo标识;也可点击Game面板右上角的Gizmo按钮,显示或隐藏所有资源的图标和Gizmo。
62.字符串拼接
可使用StringBuilder进行字符串的拼接,不要使用字符串相加的形式,因为这样会带来额外的内存垃圾。如下代码所示:
StringBuilder myStr = new StringBuilder(); myStr.Append("Hello").Append("The").Append("World");
不建议:
string myStr = "Hello" + "the" + "world";
使用StringBuilder需要引用命名空间System.Text。
63.使用ScriptableObjects管理游戏数据
对于游戏数据比如武器、成就等,可使用ScriptableObjects在编辑器中进行有效组织。如下代码所示:
using UnityEngine; [CreateAssetMenu(fileName = "New Item", menuName = "Item")] public class NewBehaviourScript : ScriptableObject { public string ItemName; public int ItemLevel; public Texture2D ItemIcon; }
64.编辑器播放时修改脚本后的处理
选择 Edit > Preferences > General 命令,在Script Changes While Playing中,可以设置编辑器在播放状态下如果脚本发生改变后的处理,比如停止播放重新编译等。
65.自定义窗口
将类继承自EditorWindow,可以添加自定义窗口,在此基础上编写一些命令和工具,如下代码所示:
using UnityEngine; using UnityEditor; public class ExampleWindow : EditorWindow { [MenuItem("Window/Example")] public static void ShowWindow() { GetWindow<ExampleWindow>("Example"); } }
执行效果:
66.自定义Inspector
也可对Inspector进行自定义,添加一些控件。如下代码所示:
using UnityEngine; using UnityEditor; [CustomEditor(typeof(Sphere))] public class SphereEditor : Editor { public override void OnInspectorGUI() { GUILayout.Label("自定义Inspector"); GUILayout.Button("确定"); } }
执行效果:
67.工具快捷键
使用快捷键Q、W、E、R、T、Y切换移动、旋转、缩放等工具。
68.使用RectTransform工具缩放3D物体
RectTransform工具一般用于缩放2D物体,对3D物体使用该工具可以在某个二维平面对其进行缩放,这取决于物体与视口的关系。
69+70+71.吸附
按下Ctrl键对游戏对象进行移动、旋转、缩放,将以步进的形式进行操作,选择Editor > Snap Settings...命令,可设置步进大小。
按下V键,在游戏对象上选择顶点进行拖放,将以此顶点为基础,把游戏对象吸附到其它顶点的位置。
72. 管理程序集
在Project面板中选择Create > Assembly Definition 命令,创建程序集文件,然后将其拖放到指定的文件夹中,定义脚本依赖关系,可以确保脚本更改后,只会重新生成必需的程序集,从而减少编译时间。