帧循环和主线程

笑着哭i 提交于 2019-12-04 17:57:33

概念

  • Unity主线程:为保证数据安全,Unity核心的游戏逻辑全部都是在一个线程里完成,即Unity主线程
  • 帧循环:在主线程上运行一次完整的游戏逻辑, 称为完成一次帧循环。

注意

  • 一个逻辑帧通常指一次包含了以Update()为主的循环调用过程。因为我们游戏的逻辑大部分都是在Update()里面
  • 一个逻辑帧里面可能包含了多次FixedUpdate()的调用。
  • Unity中是可以使用多线程的,但需要注意在Unity里一些关键性的数据在其它线程是不能访问修改的。
    private void Start() 
    {
        ThreadStart threadStart = new ThreadStart(ThreadMain);
        Thread thread = new Thread(threadStart);
        thread.Start();
        Debug.Log("UnityMain线程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());
    }

    private void ThreadMain() 
    {
        Debug.Log("New线程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());
        //运行会报错:get_transform can only be called from the main thread.
        Debug.Log(transform.gameObject.name);
    }

Unity限制使用多线程的原因

  • 保证数据安全
  • 降低编程难度

为何还能保持高效率的运行?

  • Unity在底层实现了线程池,引擎底层来实现一些可使用多线程处理的任务。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!