C#中的协程:

      IEnumerator ShowSpiritInfo()
{
UIMessageMgr.ShowMsgWait(true); DestroyUIModelInfo(); bool isLoad = false;
AppInterface.GUIModule.CreateUISpirit(currSpiritId, delegate(UISpirit sp)
{
infoTextureCtrl.TargetSpirit = sp;
infoTextureCtrl.ui_Tx.width = ;
infoTextureCtrl.ui_Tx.height = ;
isLoad = true;
});
while (!isLoad)
yield return null;
modelTex.enabled = true;
UIMessageMgr.ShowMsgWait(false);
}

xlua中实现以上协程:

 local ShowSpiritInfo = function(previewWnd)
return util.cs_generator(function()
CS.UIMessageMgr.ShowMsgWait(true); previewWnd:DestroyUIModelInfo(); -- 加载精灵
local PlayerManager = CS.Common.AppInterface.GUIModule.PlayerManager;
local root = PlayerManager.m_ModelRoot;
local spirit = CS.UISpirit(PlayerManager.m_ModelRoot, previewWnd.currSpiritId);
PlayerManager.listSpirit:Add(spirit);
PlayerManager.dicSpirit:Add(spirit.number, spirit);
local isLoad = false;
spirit:BeginLoad(function()
isLoad = true;
end);
while false == isLoad do
coroutine.yield(CS.UnityEngine.WaitForSeconds(0.01));
end previewWnd.infoTextureCtrl.TargetSpirit = spirit;
previewWnd.infoTextureCtrl.ui_Tx.width = ;
previewWnd.infoTextureCtrl.ui_Tx.height = ;
previewWnd.modelTex.enabled = true; CS.UIMessageMgr.ShowMsgWait(false);
end)
end;

xlua中主要是 1、2、17、18、19行的写法。

调用(第10行实现):

 xlua.hotfix(CS.Modules.UI.UI_SpiritPreviewWnd, "OnChooseHandle", function(self, index)
if index >= and index <= self.currSpiritConfigList.Count then
self.currSpiritConfig = self.currSpiritConfigList[index];
self.currSpiritId = self.currSpiritConfig.f_SpiritID;
self.currSpiritData = CS.ClientData.ClientSpiritData.CreateSpiritData(self.currSpiritId);
self:RefreshSpiritInfo();
if == self.currSpiritConfigList[index].f_NextStarID then
CS.GameDefine.Mono:StartCoroutine(ShowCharacterInfo(self));
else
CS.GameDefine.Mono:StartCoroutine(ShowSpiritInfo(self));
end
end
end)

xlua 实现协程替换Unity中的协程的更多相关文章

  1. Unity中的协程(一)

    这篇文章很不错的问题,推荐阅读英文原版: Introduction to Coroutines Scripting with Coroutines   这篇文章转自:http://blog.csdn. ...

  2. Unity中的协程是什么?

    什么是协程? 1.协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行后面的代码. 2.Unity在每一帧(Frame)都会去处理对象上的协程.Unit ...

  3. 协程及Python中的协程

    1 协程 1.1协程的概念 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.(其实并没有说明白~) 我觉得单说协程,比较抽象,如果对线程有一定了解 ...

  4. Unity中使用协程进行服务端数据验证手段

    近期在做项目中的个人中心的一些事情,用户头像上传,下载,本地缓存,二级缓存,压缩,这些都要做,麻雀虽小五脏俱全啊,也是写的浑浑噩噩的, 当我们在上传用户头像的时候,向服务端发送上传头像请求之前,一般都 ...

  5. unity 中的协程

    //The coroutine will continue after all Update functionshave been calledon the next frame. ; //Conti ...

  6. Unity C#笔记 协程

    什么是协程 协同程序,在主程序运行的同时,开启另外一段逻辑处理,来协同当前程序的执行. 可能看了这段文字介绍还是有点模糊,其实可以用多线程来比较. 多线程 多线程,顾名思义,多条同时执行的线程. 最初 ...

  7. Unity中巧用协程和游戏对象的生命周期处理游戏重启的问题

    主要用到协程(Coroutines)和游戏对象的生命周期(GameObject Lifecycle)基础知识,巧妙解决了游戏重启的问题. 关于协程,这里有篇文章我觉得写的非常好,理解起来也很容易.推荐 ...

  8. 【Unity3D基础教程】给初学者看的Unity教程(五):详解Unity3D中的协程(Coroutine)

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 为什么需要协程 在游戏中有许多过程(Proc ...

  9. C#中的yield return与Unity中的Coroutine(协程)(下)

    Unity中的Coroutine(协程) 估计熟悉Unity的人看过或者用过StartCoroutine() 假设我们在场景中有一个UGUI组件, Image: 将以下代码绑定到Image using ...

随机推荐

  1. socket - option编程:SO_REUSEADDR

    网友vmstat多次提出了这个问题:SO_REUSEADDR有什么用处和怎么使用.而且很多网友在编写网络程序时也会遇到这个问题.所以特意写了这么一篇文章,希望能够解答一些人的疑难. 其实这个问题在Ri ...

  2. ssh-keygen 命令

    功能 生成.管理和转换认证密钥,包括 RSA 和 DSA 两种密钥,密钥类型可以用 -t 选项指定.如果没有指定则默认生成用于SSH-2的RSA密钥,系统管理员还可以用它产生主机密钥. 通常,这个程序 ...

  3. 写给大忙人的nginx核心配置详解

    由于当前很多应该都是前后端分离了,同时大量的基于http的分布式和微服务架构,使得很多时候应用和不同项目组之间的系统相互来回调用,关系复杂.如果使用传统的做法,都在应用中进行各种处理和判断,不仅维护复 ...

  4. java常用代码段整理(持续更新)

    FileWriter指定编码格式 FileWriter 默认是用(ISO-8859-1 or US-ASCII)西方编码的,总之不是UTF-8的,而FileWriter类有getEncoding方法, ...

  5. tp5 中使用自定义扩展类和函数

    如果是要引用其它控制器里定义的方法参考:https://www.cnblogs.com/efyefy/p/8796014.html 如果在extend定义的类和函数默认是在全局命名空间下的 new \ ...

  6. 当模版引擎遇到点("."),会按照下列顺序查询:

    字典查询,例如:foo["bar"] 属性或方法查询,例如:foo.bar 数字索引查询,例如:foo[bar]

  7. codevs1017乘积最大

    codevs1017 乘积最大 题目描述 Description 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场 ...

  8. LightOJ 1030 Discovering Gold(概率DP)题解

    题意:1~n每格都有金子,每次掷骰子,掷到多少走几步,拿走那格的金子,问你金子的期望 思路:dp[i]表示从i走到n金子的期望,因为每次最多走1<=x<=6步,所以dp[i] = a[i] ...

  9. PKM(个人知识管理)类软件收集(偶尔更新列表)

    evernote(印象笔记) Wiz 有道云 麦库 leanote GoogleKeep OneNote SimpleNote(wp家的,免费) pocket(稍后读的软件,同类的还有Instapap ...

  10. oracle单行函数 之 数字函数

    Round(数字 \ 列 [,保留小数的位数]):四舍五入   select Round(1234.45,1) from dual  =  1234.5 Trunc(数字 \ 列 [,保留小数的位数] ...