UH2S3L12——Lua调用枚举

本章代码关键字

1
2
3
tostring()                --枚举转字符串,传入要转换的枚举值
枚举值:ToInt() --枚举值转数字
枚举.IntToEnum() --数字转枚举值,传入数字

Lua调用C#枚举

假设我们要调用下面这个枚举

1
2
3
4
5
6
7
8
9
10
11
12
//枚举
#region Lesson2 Enum
/// <summary>
/// 自定义测试枚举
/// </summary>
public enum E_MyEnum
{
Idle,
Move,
Atk,
}
#endregion

调用Unity当中的枚举,枚举的调用规则 和 类的调用规则是一样的,
命名空间.枚举名.枚举成员​,也支持取别名

同样,如果报错,需要在CustomSetting​中去加上 然后生成代码

xLua的区别是,没有提供字符串转枚举的功能

调用Unity自带的枚举

1
2
3
4
PrimitiveType = UnityEngine.PrimitiveType
GameObject = UnityEngine.GameObject
-- GameObject中的创建几何体静态方法
local obj = GameObject.CreatePrimitive(PrimitiveType.Cube)

image

调用我们自定义的枚举

打印出的是userdata​类型,也就是保留了语言中的数据类型
这样的枚举依然是可以比较的

1
2
3
4
5
6
7
8
9
local c = E_MyEnum.Idle
local d = E_MyEnum.Move
-- 打印出的是userdat类型,也就是保留了语言中的数据类型
print(c)
if c == d then
print("枚举比较相等")
else
print("枚举比较不相等")
end

image

枚举转字符串

1
2
print("枚举转字符串")
print(tostring(c))

image

枚举转数字

1
2
3
print("枚举转数字")
print(c:ToInt())
print(d:ToInt())

image

数字转枚举

1
2
3
4
5
print("数字转枚举")
print(E_MyEnum.IntToEnum(0))
print(tostring(E_MyEnum.IntToEnum(0)))
print(E_MyEnum.IntToEnum(1))
print(tostring(E_MyEnum.IntToEnum(0)))

image