unity常见问题(二)

目录

 

1.性能比较 

2.unscaledDeltaTime和 time.deltaTime的区别

 3.调用顺序

1.性能比较 

下面两部分代码 根据GC来看第二个性能比较好

public class TestGc : MonoBehaviour
{

    private List<float> random = new List<float>();
    //private float[] random = new float[100000];
    void Start()
    {
        GetRandom();
    }
    public void GetRandom() 
    {
        for (int i = 0; i < 100000; i++)
        {
            random[i].Add(Random.value);
        }
    }
}

public class TestGc : MonoBehaviour
{

    //private List<float> random = new List<float>();
    private float[] random = new float[100000];
    void Start()
    {
        GetRandom();
    }
    public void GetRandom() 
    {
        for (int i = 0; i < 100000; i++)
        {
            random[i] = Random.value;
        }
    }
}


2.unscaledDeltaTime和 time.deltaTime的区别

unscaledDeltaTime 表示 上一帧到这一真的准确的间隔时间,
time.deltaTime表示前者 unscaledDeltaTime 乘上 Time.timeScale

Time.time 和Time.realtimeSinceStartup 也是同理
后者等于前者乘上  Time.timeScale
所以判断一些暂停时的逻辑 使用Time.realtimeSinceStartup 和unscaledDeltaTime

 3.调用顺序

两个物体 同时创建A 的脚本的awake()先调用 
正确的执行顺序为 A awake() -> A onenable() ->B awake() ->B onenable()

unity中凡是使用 unityEngine 这个命名空间的脚本或者说 方法 都不能在主线程之外使用

猜你喜欢

转载自blog.csdn.net/m0_52021450/article/details/124488378