本文为博主原创文章,欢迎转载,请保留出处:http://blog.csdn.net/andrewfan

Unity编辑器中何时需要协程

当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理。比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种变化过程要经历无数中间步骤,调用N多次Update,如果直接在Update中不断刷新,界面很容易直接卡死。所以在一个协程中进行一些优化,只保留用户最后一次参数修正,省去中间步骤,就会好很多。这属于Unity编辑器的内容,也属于优化的内容,还是放在优化中吧。

解决问题思路

Unity官网的questions里面也有很多人在搜索这个问题,不过后来是看到有个人提到了这个方法。问题的关键点就是“EditorApplication.update ”,有个这样的方法,你把要执行的协程传递给它就可以在编辑器下自动执行循环调用。

老外的写法

当然,后来我也找到一个老外的写法,代码贴出来如下:

using UnityEngine;using UnityEditor;using System.Collections;using System.Collections.Generic;using System.Runtime.CompilerServices;public static class EditorCoroutineRunner{    private class EditorCoroutine : IEnumerator
    {        private Stack<IEnumerator> executionStack;        public EditorCoroutine(IEnumerator iterator)        {            this.executionStack = new Stack<IEnumerator>();            this.executionStack.Push(iterator);
        }        public bool MoveNext()        {
            IEnumerator i = this.executionStack.Peek();            if (i.MoveNext())
            {                
        
		

网友评论