6.C#调用Lua变量

6.CSharp调用Lua-变量的获取和赋值


6.1 知识点

准备工作

初始化Lua管理器,创建Lua脚本并在C#脚本调用

LuaManager.Instance.Init();
LuaManager.Instance.Require("Lesson06_CSharp调用Lua_变量的获取和赋值");

print('我是Lua脚本 Lesson06_CSharp调用Lua_变量的获取和赋值')

在Lua脚本中设置全局和局部变量

--设置一些全局变量
testNumber = 6
testBool = true
testFloat = 6.66
testString = "666666"

--局部变量不可获取和赋值
local testLocal = 10

全局变量的获取与赋值

中括号获取全局变量

//直接中括号访问
Debug.Log(LuaManager.Instance.LuaState["testNumber"]);//6
Debug.Log(LuaManager.Instance.LuaState["testBool"]);//True
Debug.Log(LuaManager.Instance.LuaState["testFloat"]);//6.66
Debug.Log(LuaManager.Instance.LuaState["testString"]);//666666

中括号赋值全局变量

//赋值到C#后修改 不起作用
int testNumber = Convert.ToInt32(LuaManager.Instance.LuaState["testNumber"]);
Debug.Log(testNumber);//6
testNumber = 666;
Debug.Log(LuaManager.Instance.LuaState["testNumber"]);//6

//直接修改可以成功
LuaManager.Instance.LuaState["testNumber"] = 666;
Debug.Log(LuaManager.Instance.LuaState["testNumber"]);//666

//可以在C#添加Lua的全局变量
Debug.Log(LuaManager.Instance.LuaState["addValue"]);//NUll
LuaManager.Instance.LuaState["addValue"] = "123";
Debug.Log(LuaManager.Instance.LuaState["addValue"]);//123

局部变量不可获取和赋值

Debug.Log(LuaManager.Instance.LuaState["testLocal"]);//NUll

6.2 知识点代码

Lesson06_CSharp调用Lua_变量的获取和赋值.lua

print('我是Lua脚本 Lesson06_CSharp调用Lua_变量的获取和赋值')

--设置一些变量
testNumber = 6
testBool = true
testFloat = 6.66
testString = "666666"

--局部变量不可获取和赋值
local testLocal = 10

Lesson06_CSharp调用Lua_变量的获取和赋值

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson06_CSharp调用Lua_变量的获取和赋值 : MonoBehaviour
{
    void Start()
    {
        LuaManager.Instance.Init();
        LuaManager.Instance.Require("Lesson06_CSharp调用Lua_变量的获取和赋值");

        #region 知识点一 全局变量的获取

        //直接中括号访问
        Debug.Log(LuaManager.Instance.LuaState["testNumber"]);//6
        Debug.Log(LuaManager.Instance.LuaState["testBool"]);//True
        Debug.Log(LuaManager.Instance.LuaState["testFloat"]);//6.66
        Debug.Log(LuaManager.Instance.LuaState["testString"]);//666666


        #endregion

        #region 知识点二 全局变量的赋值

        //赋值到C#后修改 不起作用
        int testNumber = Convert.ToInt32(LuaManager.Instance.LuaState["testNumber"]);
        Debug.Log(testNumber);//6
        testNumber = 666;
        Debug.Log(LuaManager.Instance.LuaState["testNumber"]);//6

        //直接修改可以成功
        LuaManager.Instance.LuaState["testNumber"] = 666;
        Debug.Log(LuaManager.Instance.LuaState["testNumber"]);//666

        //可以在C#添加Lua的全局变量
        Debug.Log(LuaManager.Instance.LuaState["addValue"]);//NUll
        LuaManager.Instance.LuaState["addValue"] = "123";
        Debug.Log(LuaManager.Instance.LuaState["addValue"]);//123

        #endregion

        #region 知识点三 局部变量不可获取和赋值

        Debug.Log(LuaManager.Instance.LuaState["testLocal"]);//NUll

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏