6.C#调用Lua变量

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


6.1 知识点

准备工作

初始化Lua管理器并执行Lua脚本

// 初始化Lua管理器
LuaManager.Instance.Init();
// 执行Lua脚本
LuaManager.Instance.DoLuaFile("Lesson06_CSharp调用Lua_变量的获取和赋值");
print('我是Lua脚本 Lesson06_CSharp调用Lua_变量的获取和赋值')

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

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

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

全局变量的获取与赋值

Global.Get<T> 获取全局变量

// 使用Lua管理器中的全局属性的 Get 泛型方法 传入变量的类型和变量名 得到Lua变量
int testNumber = LuaManager.Instance.Global.Get<int>("testNumber");
Debug.Log("testNumber:" + testNumber);  // 6

bool testBool = LuaManager.Instance.Global.Get<bool>("testBool");
Debug.Log("testBool:" + testBool);  // True

float testFloat = LuaManager.Instance.Global.Get<float>("testFloat");
Debug.Log("testFloat:" + testFloat);  // 6.66

double testDouble = LuaManager.Instance.Global.Get<double>("testFloat");
Debug.Log("testFloat_double:" + testDouble);  // 6.66

string testString = LuaManager.Instance.Global.Get<string>("testString");
Debug.Log("testString:" + testString);  // 666666

Global.Set 赋值全局变量

// 使用Lua管理器中的全局属性的 Set 方法 传入变量名和要设置的值 赋值Lua变量
testNumber = 666;
LuaManager.Instance.Global.Set("testNumber", testNumber);
int testNumber_new = LuaManager.Instance.Global.Get<int>("testNumber");
Debug.Log("testNumber_new:" + testNumber_new);  // 666

局部变量不可获取和赋值

// 尝试获取局部变量
// int local = LuaManager.Instance.Global.Get<int>("testLocal"); 
// 报错 InvalidCastException: can not assign nil to int
// Debug.Log("testLocal:" + local);

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.Collections;
using System.Collections.Generic;
using UnityEngine;

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

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

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

        //使用Lua管理器中的全局属性的 Get泛型方法 传入变量的类型和变量名 得到Lua变量

        int testNumber = LuaManager.Instance.Global.Get<int>("testNumber");
        Debug.Log("testNumber:" + testNumber);//6

        bool testBool = LuaManager.Instance.Global.Get<bool>("testBool");
        Debug.Log("testBool:" + testBool);//True


        float testFloat = LuaManager.Instance.Global.Get<float>("testFloat");
        Debug.Log("testFloat:" + testFloat);//6.66

        double testDouble = LuaManager.Instance.Global.Get<double>("testFloat");
        Debug.Log("testFloat_double:" + testDouble);//6.66


        string testString = LuaManager.Instance.Global.Get<string>("testString");
        Debug.Log("testString:" + testString);//666666

        #endregion

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

        //使用Lua管理器中的全局属性的 Set方法 传入变量名和要设置的值 赋值Lua变量

        testNumber = 666;
        LuaManager.Instance.Global.Set("testNumber", testNumber);
        int testNumber_new = LuaManager.Instance.Global.Get<int>("testNumber");//重新得到 看看Lua变量是否改值了
        Debug.Log("testNumber_new:" + testNumber_new);//666


        #endregion

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

        //int local = LuaManager.Instance.Global.Get<int>("testLocal");//报错 InvalidCastException: can not assign nil to int
        //Debug.Log("testLocal:" + local);

        #endregion
    }
}


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

×

喜欢就点赞,疼爱就打赏