ToLua的Example示例学习笔记01_HelloWorld

展示了最小的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以及其资源。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。