Slua的基本操作

本文介绍了Slua的基本操作,强调了LuaState应尽量声明为静态,并提供了使用LuaSvr进行初始化的建议。在执行Lua字符串和脚本时,注意LuaState的初始化不能在声明时完成,且lua_State.loaderDelegate需有特定参数。此外,通过LuaSvr调用lua文件中的函数时,若直接使用luaState会遇到更多初始化问题。为在Lua中调用C#类,需在C#类上添加特定的自定义Lua类属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意事项: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值