美文网首页
ToLua的Example示例学习笔记01_HelloWorld

ToLua的Example示例学习笔记01_HelloWorld

作者: 凌枫望星月 | 来源:发表于2020-05-10 17:08 被阅读0次

    展示了最小的tolua#环境,以及执行一段lua代码。

    1」代码

    操作代码如下:

    using UnityEngine;
    using LuaInterface;
    using System;
    
    public class HelloWorld : MonoBehaviour
    {
      void Awake()
      {
          LuaState lua = new LuaState();
          lua.Start();
          string hello =
              @"                
                  print('hello tolua#')                                  
              ";
          
          lua.DoString(hello, "HelloWorld.cs");
          lua.CheckTop();
          lua.Dispose();
          lua = null;
      }
    }
    

    2」需要了解的部分

    • 首先说一下整体的感受:整体的逻辑比较简单,使用ToLua的相关类和方法都要调用命名空间LuaInterface,而调用Lua脚本必须先要创建一个虚拟机,就是LuaState lua = new LuaState();,这个例子使用了lua.DoString()的方法执行一段Lua脚本,运行完后用lua.Dispose()释放掉。

    3」值得注意的方法

    • LuaState.Start 负责初始化LuaState,包括环境配置和基本库加载。它需要在tolua代码加载到内存后调用。如果使用assetbunblde加载lua文件,调用Start()之前assetbundle必须加载好。

    • LuaState.Dostring 负责执行一段Lua代码,除了例子较少使用这种方法加载代码,它无法避免代码重复加载覆盖,需要调用者自己保证。第二个参数用于调试信息,用于提示出错代码所在的文件名称。

    • LuaState.CheckTop 检查堆栈是否平衡,一般放在Update中,C#中任何使用lua堆栈操作,都需要调用者自己平衡堆栈(参考LuaFunction以及LuaTable代码), 当CheckTop出现警告时其实早已经离开了堆栈操作范围,这时需自行review代码。

    • LuaState.Dispose 释放LuaState以及其资源。

    相关文章

      网友评论

          本文标题:ToLua的Example示例学习笔记01_HelloWorld

          本文链接:https://www.haomeiwen.com/subject/azolnhtx.html