在Lua中有以下五种方法可以访问到枚举变量:
当作普通的静态属性访问
使用__CastFrom函数,从枚举值对应的数值做类型转换
使用__CastFrom函数,从枚举值对应的字符串做类型转换
直接传入枚举值对应的数值
直接传入枚举值对应的字符串
官方文档上只提到了前三种方法,并且方法2和方法3需要生成代码才能使用,不过经过实验发现,不生成代码时上述五种方法都能够使用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
[LuaCallCSharp]
public enum Language
{
PHP,
Charp,
Python,
C,
Java
}
[LuaCallCSharp]
public class ChooseLanguage
{
public void GetLanguage(Language lang)
{
switch (lang)
{
case Language.PHP:
Debug.Log("选择了PHP语言");
break;
case Language.Charp:
Debug.Log("选择了Charp语言");
break;
case Language.Python:
Debug.Log("选择了Python语言");
break;
case Language.C:
Debug.Log("选择了C语言");
break;
case Language.Java:
Debug.Log("Java");
break;
}
}
}
print('启动了Lua')
function init()
print("执行了Lua的全局方法init")--无参数的方法
CreatUnityObj()
end
function CreatUnityObj()
local Language=CS.Language
local choose=CS.ChooseLanguage()
--共有五中方法访问C#枚举值
--1、当作普通的静态属性访问
--2、使用__CastFrom函数,从枚举值对应的数值做类型转换
--3、使用__CastFrom函数,从枚举值对应的字符串做类型转换
--4、直接传入枚举值对应的数值
--5、直接传入枚举值对应的字符串
choose:GetLanguage(Language.PHP)
choose:GetLanguage(Language.__CastFrom(1))--索引从0开始
choose:GetLanguage(Language.__CastFrom('Python'))
choose:GetLanguage(3)
choose:GetLanguage('Java')
end


本文介绍了在XLua框架下,Lua脚本访问C#枚举类型的五种不同方法,包括官方文档提及的三种以及两种无需额外生成代码即可使用的技巧。
访问枚举&spm=1001.2101.3001.5002&articleId=89297966&d=1&t=3&u=5eb9acc124c94fa7b54cb4ee3edd4fea)
1943

被折叠的 条评论
为什么被折叠?



