码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Lua热更学习--使用toLua中的协程


    合集 - Unity学习笔记(19)
    1.Unity学习笔记--基础2023-11-012.Unity学习笔记--入门2023-10-293.Unity学习笔记--数据持久化之PlayerPrefs的使用2023-11-194.Unity学习笔记--数据持久化XML文件(1)2023-11-205.Unity学习笔记--数据持久化XML文件(2)2023-12-016.Unity学习笔记--数据持久化Json2023-12-037.NGUI学习笔记(1)03-018.NGUI学习笔记203-039.NGUI学习笔记3.503-0510.NGUI学习笔记4.003-0611.Unity 热更--AssetBundle学习笔记 0.705-0112.Unity 热更--AssetBundle学习笔记 0.805-0213.Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】05-0314.[2]自定义Lua解析方式05-0615.Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本05-0716.自定义Lua解析器管理器-------演化脚本V0.505-0817.使用自定义委托来调用Lua中的多返回值和长参数类型函数05-0918.使用自定义lua解析管理器调用lua脚本中的table05-10
    19.Lua热更学习--使用toLua中的协程05-12
    收起

    [6] C#访问调table类中的成员变量和函数

    访问table中的变量和函数

    lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和function的获取调用,这里尝试获取调用。

    依然是如此,此种调用方式获取到的table中的函数是引用拷贝。

    Main.lua脚本新增内容

    CStudent = {
    _name = "TonyChang",
    _id = "202499990101",
    _sex = "male",
    CStudent = function()
    print("table中的函数")
    end
    }

    测试脚本中的调用内容:

    //--------------------------------获取类类型table
    LuaTable CStudent = CallLuaManager.Instance().LuaState.GetTable("CStudent");
    //执行构造函数
    CStudent.GetLuaFunction("CStudent").Call("TonyChang","男");
    //打印结果
    Debug.Log(CStudent["_name"]+" ," + CStudent["_id"] +" ," +CStudent["_sex"]);

    使用toLua中的协程

    lua中不支持协程,使用toLua中提供的协程方式来使用协程。

    在使用协程之前,需要在管理类中添加LuaLooper组件,并将其LuaState与外部使用执行的LuaState虚拟机绑定。

    LuaLooper luaLooper = gameObject.AddComponent();
    // Debug.Log(gameObject.name);
    luaLooper.luaState = _luaState;

    Main.lua中的协程:

    --使用toLua中提供的协程
    --制作计时器
    function Timer()
    local t = 1
    while t < 20 do
    t = t + 1
    coroutine.wait(1)
    print(t)
    end
    StopTimer()
    end
    local coroutlineTimer = nil
    function StartTimer()
    print("run")
    --开始协程时候传入类型为函数
    coroutlineTimer = coroutine.start(Timer)
    end
    function StopTimer()
    --传入要结束的协程
    coroutine.stop(coroutlineTimer)
    end

    我们在C#测试脚本中开启协程:

    //----------------------------------开始计时器
    LuaFunction startTimer = CallLuaManager.Instance().LuaState.GetFunction("StartTimer");
    startTimer.Call();
    startTimer.Dispose();

    image-20240512112431495

    当然也可以传入参数设置计时时长:

    image-20240512112758804

  • 相关阅读:
    1、Shell 概述
    对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?
    【英语:语法基础】C6.日常对话-旅行专题
    使用cgroup控制CPU使用率
    驱动开发练习,platform驱动模型的使用
    四张图片如何合成一张四宫格?
    Pytorch 入门
    Linux相关指令(下)
    【深度学习】——损失函数(均方差损失和交叉熵损失)
    C语言——数据在内存中的存储_学习笔记
  • 原文地址:https://www.cnblogs.com/TonyCode/p/18187626
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号