Unity引擎一些不容易发现的小技巧

Unity引擎一些不容易发现的小技巧

1. transform可以直接遍历

之前我只知道可以通过GetChild来遍历tranform,但不知道可以直接遍历。

// 通过GetChild遍历
for (var i = 0; i < transform.childCount; ++i) {
	var child = transform.GetChild(i);
	Debug.Log(child.name);
}

// 直接遍历,更方便
foreach (var child in transform) {
    Debug.Log(child.name);
}

2. 延迟Destroy

但简单实用的技巧,一直没有发现。。

// 延迟2秒Destroy
GameObject.Destroy(gameObject, 2f);

3. 让SceneView的镜头跟踪指定GameObject

在运行时选中一个GameObject,按f可以让SceneView的镜头聚焦到这个GameObject,再按2下f可以让SceneView的镜头一直跟踪它。

这个技巧我在Unity2019.2.6里测试失败了,可能已经不支持了,大家可以试下自己的版本支不支持。

4. Layer的名字也支持用/分割。

如Actor/Monster,会显示如下:
在这里插入图片描述

5. Inspector里的数字框支持输入数学表达式

如在transform的Position里输入1+1,按回车后会自动变成2。

6. 同时查看2个GameObject的Inspector

点击Inspector右上角的?可以锁定Inspector,这时再选中其他物体,Inspector也不会改变。
同时可以打开一个新的没锁定的Inspector(通过?右边的小按钮),这样就可以同时打开2个不同GameObject的Inspector,对比着修改参数。

7. Debug.Log可以加上一个Object的参数,这样打印出来的log点击后会高亮这个Object。

Debug.Log("pos = " + transform.position, gameObject);

点击这条log,Hierarchy界面里对应的gameObject会高亮一下。这样就能很清晰地知道是哪个GameObject打印的log。

8. 通过AnimationCurve来显示一个不停改变的值的曲线。

有时我们会在Update里打印一个数值,来持续观察这个数值的改变。不过这样会导致Console界面里的log太多,而且不容易观看。
这时可以创建一个AnimationCurve的成员变量,每次将新的值添加到这个变量中,这样就可以在Inspector里查看这个值改变的曲线。

public class ExampleScript : MonoBehaviour
{
    public AnimationCurve plot = new AnimationCurve();

    void Update()
    {
        var val = Mathf.Sin(Time.time);
        plot.AddKey(Time.realtimeSinceStartup, val);
    }
}

在这里插入图片描述
在这里插入图片描述

9. 在Project界面里将1个Scene拖到另一个Scene上,会将这2个Scene合并出一个新的Scene。

10. Inspector里的List变量支持一次拖入多的Item。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章