Ejemplo n.º 1
0
        // Update is called once per frame
        public virtual void Update()
        {
            _luaenv.Tick();

            if (_cotype == CoType.CO)
            {
                CoWorker();
                while (_renderQueue.Count > 0)
                {
                    Actor.RenderHandler handler = _renderQueue.Dequeue();
                    _app.StartCoroutine(CoHandler(handler));
                    //handler();
                }
            }
            else
            {
                // 此段代码可以用协程
                while (_renderQueue.Count > 0)
                {
                    Actor.RenderHandler handler = null;
                    lock (_renderQueue) {
                        handler = _renderQueue.Dequeue();
                    }
                    handler();
                }
            }
        }
Ejemplo n.º 2
0
 IEnumerator CoHandler(Actor.RenderHandler handler)
 {
     try {
         handler();
     } catch (Exception ex) {
         UnityEngine.Debug.LogException(ex);
     }
     yield break;
 }
Ejemplo n.º 3
0
 public void EnqueueRenderQueue(Actor.RenderHandler handler)
 {
     if (_cotype == CoType.THREAD)
     {
         lock (_renderQueue) {
             _renderQueue.Enqueue(handler);
         }
     }
     else if (_cotype == CoType.CO)
     {
         _renderQueue.Enqueue(handler);
     }
 }
Ejemplo n.º 4
0
 public void EnqueueRenderQueue(Actor.RenderHandler handler)
 {
     _application.EnqueueRenderQueue(handler);
 }