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以及其资源。

你可能感兴趣的:(ToLua的Example示例学习笔记01_HelloWorld)