Unity新手村—开发小技巧记录(一)

  第一篇博客它来了!学习unity的过程中,总会遇到一些零碎的知识点和技巧,在此整理记录,方便日后查看,Unity版本:2018.3.2f1。

  因为还是个萌新,如果有写的不对或不好的地方,敬请谅解。

  1.使用RuntimeInitializeOnLoadMethod特性的静态方法会在场景加载后直接调用(这个脚本不需要挂载到物体上)

    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
    public static void Test()
    {
        Debug.Log("start game");
    }

 

2.使用SerializeField将私有变量暴露在检视面板中,使用HideInInspector特性在检视面板中隐藏公有变量

    [SerializeField]
    private int PrivateVar;

    [HideInInspector]
    public int PublicVar;

3.用以下代码获得一个随机的布尔值

bool x= (Random.value > 0.5f);

4.将动画的speed属性设为-1即可倒放动画

5.如果只是存储一些变量的话,建议使用结构体而不是类,以减少垃圾回收

6.以下代码可以在第一个协程结束时启动第二个协程

    IEnumerator First()
    {
        yield return StartCoroutine(Second());
    }

    IEnumerator Second()
    {
        yield return 0;
    }

7.以下代码可以让编辑器暂停,方便调试

EditorApplication.isPaused = true;

8.可以将文件夹的快捷方式拖入项目,方便打开

9.使用CompareTag来比较标签而不是obj.Tag=="player",效率更高

        GameObject obj;
        if (obj.CompareTag("player"))
        {
            Debug.Log("Is Player");
        }

10.Debug支持一些简单样式

Debug.Log("<color=red>Oh!!!</color>");

11.怎么忽略控制台警告

先查看警告中的代号,就是CS之后的数字,这里是0414,再到脚本中最上方加上以下代码

#pragma warning disable 0414

回到Unity编译,就不会再弹出警告了

12.不要频繁使用Camera.main,它其实就是......

Camera.main = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();

13.比较距离时不要用Vector3.distance

Vector3.sqrMagnitude用于得到向量长度未开方的值,使用(a - b).sqrMagnitude和距离平方作比较,这样不用做开方运算,效率更高

    Vector3 a;
    Vector3 b;
    float distance = 1f;
    void Update()
    {
        if ((a - b).sqrMagnitude < distance * distance)
        {
            //todo
        }
    }

14.给检视面板添加一些效果

    [Header("等级")]     //给变量加上标题文字
    public int level;
    [Space]                   //空行
    [TextArea]              //多行输入框
    public string Des;
    [Range(0,10)]          //滑动条
    public float Speed=1;
    [Tooltip("生命值")]  //鼠标移到变量上出现的提示
    public int Hp = 100;

15.在项目中搜索同类型资源

在Project视图上方的搜素栏可以按类型搜索资源,使用“t:资源类型”,比如t:scene可以搜索到所有场景,t:script可以搜索到所有脚本

 

 

 还可以在前面加上资源名称的子字符串,比如test t:scene可以搜索所有名字中带“test”的场景

 

  第一篇暂时先写这么多,以后再继续更新其他小技巧。

 

猜你喜欢

转载自www.cnblogs.com/LiveForGame/p/10475743.html