注意事项:LuaState 尽量声明为静态,可以用单例模式。
首先是 LuaSvr, LuaSvr 其实是对 Lua_State 的一个封装, 而 Lua_State 在这篇博客有详细的解释,主要是管理一个lua虚拟机的执行环境, 通过名为 L 的 int 指针作为 ref。
如果用LuaState,如果需要初始化,需要自己写出初始化函数,而LuaSvr则是有封装好的Init函数。
1.利用slua状态机对象来执行lua字符串
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SLua;
public class AppDelegate0 : MonoBehaviour {
private static LuaState lua_state;
void Start () {
lua_state = new LuaState();
lua_state.doString("print(\"hello lua\")");
}
// Update is called once per frame
void Update () {
}
}
值得注意的是LuaState()的初始化不能在声明上做,否则会报错,这可能是slua里面的规定。
错误提示:get_transform is not allowed to be called from a MonoBehaviour constructor (or instance field initia
2.利用slua状态机对象来执行lua脚本
private static LuaState lua_State;
// Use this for initialization
void Start()
{
lua_State = new LuaState();
lua_State.loaderDelegate= ((string fn