3.8 Unity中使用协程
协程是在Unity中经常使用的一种辅助处理模式。比如,我们需要设计一个人一边走动一边去观察周围的情况,走动和观察这两种运动同时进行。这时我们可以使用多线程来处理这个问题,但是多线程在内存和CPU的调度时间上具有一些风险。此时在Unity中最常用的处理方式是使用协程。
Unity中协程的执行原理是什么呢?下面具体介绍。
Unity使用IEnumerator迭代器作为程序执行的标记,当它遇到条件->yield return语句时会挂起。当条件满足并且执行到程序的下一帧时,程序继续从这个点开始执行。
Unity在每一帧(Frame)中都会执行协程。Unity是在Update后(主要是在LateUpdate后)处理协程的运行节点,检查协程的条件是否满足。
协程跟Update具有相似之处,它也是在程序运行的每一帧中都会执行心跳函数功能。如果有要执行的函数和迭代器,就会基于当前所在的协程迭代器进行运转。
另外也要注意协程运行的条件和关键节点:如果在一个对象的前期调用协程,协程会立即运行到第一个yield return语句处,如果是yield return null,就会在同一帧再次被唤醒。经过测试验证,协程至少是在每帧的LateUpdate()后运行。下面是在Unity中使用协程的脚本代码,它展示了Unity中协程的使用方法,具体示例代码如下:文章来源地址https://www.toymoban.com/news/detail-846744.html
using UnityEngine;
using System.Collections;
public class TestCoroutine : MonoBehaviour {
//标示单位,确定是否在Start函数后启动了协程
private bool _isStartCall = false;
//标示单位,是否在Update函数后
private bool _isUpdateCall = false;
//标示单位,是否在LateUpdate后调用
private bool _isLateUpdateCall = false;
// Use this for initialization
void Start () {
if (!_isStartCall)
{
Debug.Log("Start 协程Call Begin");
//启动下面的StartCoutine中的协程函数
StartCoroutine(Sta
文章来源:https://www.toymoban.com/news/detail-846744.html
到了这里,关于Unity与C++网络游戏开发实战:基于VR、AI与分布式架构 【1.6】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!