当前位置: 首页 > news >正文

青浦徐泾网站建设西安 网站空间

青浦徐泾网站建设,西安 网站空间,企业网站建站流程,高新区网站建设公司文章目录 工具准备协程测试 工具准备 首先是工具脚本,一个Coroutine_Runner.cs和一个cs_coroutine.lua 前者定义了一个继承自Monobehavior的脚本组件,后者则使用lua去在Unity中实例化一个挂载该组件的GameObject,并将其设置为DontDestroyOn…

文章目录

    • 工具准备
    • 协程测试

工具准备

首先是工具脚本,一个Coroutine_Runner.cs和一个cs_coroutine.lua

前者定义了一个继承自Monobehavior的脚本组件,后者则使用lua去在Unity中实例化一个挂载该组件的GameObject,并将其设置为DontDestroyOnLoad,将其开启和停止协程的方法封装成一个表返回

Coroutine_Runner.cs

namespace XLuaTest
{public class Coroutine_Runner : MonoBehaviour{}public static class CoroutineConfig{[LuaCallCSharp]public static List<Type> LuaCallCSharp{get{return new List<Type>(){typeof(WaitForSeconds),typeof(WWW)};}}}
}

cs_coroutine.lua

local util = require 'xlua.util'local gameobject = CS.UnityEngine.GameObject('Coroutine_Runner')
CS.UnityEngine.Object.DontDestroyOnLoad(gameobject)
local cs_coroutine_runner = gameobject:AddComponent(typeof(CS.XLuaTest.Coroutine_Runner))return {start = function(...)return cs_coroutine_runner:StartCoroutine(util.cs_generator(...))end;stop = function(coroutine)cs_coroutine_runner:StopCoroutine(coroutine)end
}

协程测试

测试流程:

通过C#脚本CourontineTest创建lua环境并require ‘corontine_test’,在教程中这会找到与C#脚本在同一层级的Resources文件夹,并索引到该文件夹下的coruntine_test.lua文件

接着在lua文件中去请求工具文件cs_coroutine,让其创建一个辅助lua协程的对象,并接收一个封装了该对象的创建和停止协程的方法的表

接着通过向start函数中传入lambda函数来创建协程,使用本地变量保存这些协程,传入stop函数中可以终止这些协程

使用lua的coroutine.yield函数可以实现unity的协程yield

具体lua流程:

  • 创建协程a :打印’coroutine a started’,阻塞等待协程内新创建的b
  • 跳转协程b :打印’coroutine b stated inside cotoutine a’,等待1秒,打印’i am coroutine b’
  • 返回协程a :返回协程a,打印’coroutine b finish’。之后无限循环,每1秒打印一次’i am coroutine a’
  • 创建协程a同时创建的协程c :打印’stop coroutine a after 5 seconds’,等待5秒后,终止协程a,打印’coroutine a stoped’,协程c结束
local cs_coroutine = (require 'cs_coroutine')local a = cs_coroutine.start(function()print('coroutine a started')coroutine.yield(cs_coroutine.start(function() print('coroutine b stated inside cotoutine a')coroutine.yield(CS.UnityEngine.WaitForSeconds(1))print('i am coroutine b')end))print('coroutine b finish')while true docoroutine.yield(CS.UnityEngine.WaitForSeconds(1))print('i am coroutine a')end
end)cs_coroutine.start(function()print('stop coroutine a after 5 seconds')coroutine.yield(CS.UnityEngine.WaitForSeconds(5))cs_coroutine.stop(a)print('coroutine a stoped')
end)
http://www.yayakq.cn/news/803134/

相关文章:

  • 网站js跳转南宁网站建设教学
  • 网站编写腾讯网站站内面包屑导航
  • 全能网站建设pdf通河新村街道网站建设
  • 网站里可以增加网址吗网站链接可以自己做吗
  • 太姥山镇建设的网站网站的页面布局是什么样的
  • 连江建设局网站logo创意
  • wordpress搬家后 localhost北京网站seo招聘
  • 免费建立个人网站凡科北京网站备案拍照地点
  • 广东深圳网站建设深圳网络运营推广公司
  • 怎么制作网站接口贸易公司网站建设方案
  • 网站内容方向魅族官方网站挂失手机找到怎么做
  • 淄博免费建站彩票网站开发dadi163
  • 微信开发小程序开发工具下载常州网络排名优化
  • 合肥建设网络网站网站网站列表页是啥
  • php 企业网站开发实例建设通相似网站
  • 我想在阿里巴巴上给别人做网站上海建设银行网站招聘
  • 学校网站建设方案论文哪里做网站域名不用备案
  • 建设个普通的网站得多少钱南京网站建设开发
  • 网站规划内容包括wordpress4.1中文版
  • 有趣的网站之家四川建设厅
  • 做电缆好的网站中国住房与城乡建设厅网站
  • 庐江县建设局网站微信手机版网站建设
  • 网站项目建设措施利用网上菜谱做网站
  • 沈阳网站建设培训班网址最新连接查询
  • 美橙互联网站备案美工做图哪个网站好
  • 社团网站设计网页自己开店怎么办会员系统
  • 网站平台推广广州网站维护制作
  • 如何进入设计公司网站南昌网优化网站设计公司
  • 网站制作有前途吗威宁建设局网站
  • 宁波专业网站推广平台便宜无锡关键词优化平台