代码之家  ›  专栏  ›  技术社区  ›  LeeLime5000

团结|如何在10秒后让事情发生而不延误比赛

  •  0
  • LeeLime5000  · 技术社区  · 2 年前

    你好,我一直很难解决这个问题。基本上,我希望在10秒后发生一些事情,而不会延迟启动功能或使用更新功能减慢帧速度。我对unity很陌生,所以如果有什么需要我提供的,请告诉我。谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   Giawa    2 年前

    有很多方法!以下是几个例子:

    1. 使用统一的协同程序( https://docs.unity3d.com/Manual/Coroutines.html )
        void Start()
        {
            StartCoroutine(DoSomethingAfterTenSeconds());
        }
    
        IEnumerator DoSomethingAfterTenSeconds()
        {
            yield return new WaitForSeconds(10);
    
            // now do something
        }
    
    1. 使用 FixedUpdate Update 要等待10秒:
        private float _delay = 10;
    
        public void FixedUpdate()
        {
            if (_delay > 0)
            {
                _delay -= Time.fixedDeltaTime;
    
                if (_delay <= 0)
                {
                    // do something, it has been 10 seconds
                }
            }
        }
    
    1. 使用async/await代替协同路由( https://forum.unity.com/threads/c-async-await-can-totally-replace-coroutine.1026571/ )