XLua Lua访问C#中的方法(四)访问枚举
https://blog.csdn.net/xmx5166/article/details/90712888
在Lua中有以下五种方法可以访问到枚举变量:
当作普通的静态属性访问
使用__CastFrom函数,从枚举值对应的数值做类型转换
使用__CastFrom函数,从枚举值对应的字符串做类型转换
直接传入枚举值对应的数值
直接传入枚举值对应的字符串
1
2
3
4
5
官方文档上只提到了前三种方法,并且方法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;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
————————————————
版权声明:本文为CSDN博主「yang854426171」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yang854426171/article/details/89297966