13.Lua调用CSharp-枚举
13.1 知识点
准备工作
LuaManager.Instance.Init();
LuaManager.Instance.DoLuaFile("Lesson13_Lua调用CSharp_枚举");
定义好的枚举
-- 使用 C# 枚举的固定套路 CS.命名空间.枚举名.枚举成员
-- 枚举的调用规则和类的调用规则是一样的
-- 枚举也支持命名空间的别名
-- 别名
local PrimitiveType = CS.UnityEngine.PrimitiveType
local GameObject = CS.UnityEngine.GameObject
-- 通过原始模型枚举实例化立方体
local cube = GameObject.CreatePrimitive(PrimitiveType.Cube)
自定义枚举
在C#脚本自定义枚举
public enum E_StateEnum
{
State1,
State2,
State3,
}
在Lua脚本使用
-- 自定义枚举使用方法和定义好的一样,只是注意命名空间即可
E_StateEnum = CS.E_StateEnum
local state1 = E_StateEnum.State1
print(state1) -- LUA: State1: 0
枚举转换
-- 通过 枚举名.__CastFrom(内容) 进行转换
-- 数值转枚举,传入枚举成员名的对应数值,如果数值没有对应的枚举成员,则不会报错,只会打印出对应的枚举成员名
local state2 = E_StateEnum.__CastFrom(1)
print(state2) -- LUA: State2: 1
-- 字符串转枚举,传入枚举成员名,如果字符串没有对应的枚举成员,则会报错
local state3 = E_StateEnum.__CastFrom("State3")
print(state3) -- LUA: State3: 2
13.2 知识点代码
Lesson13_Lua调用CSharp_枚举.lua
print('我是Lua脚本 Lesson13_Lua调用CSharp_枚举')
print("**********知识点一 定义好的枚举************")
--使用C#枚举的固定套路 CS.命名空间.枚举名.枚举成员
--枚举的调用规则 和 类的调用规则是一样的
--枚举也支持命名空间的别名
--别名
PrimitiveType = CS.UnityEngine.PrimitiveType
GameObject = CS.UnityEngine.GameObject
--通过原始模型枚举实例化立方体
local cube = GameObject.CreatePrimitive(PrimitiveType.Cube)
print("**********知识点二 自定义枚举************")
--自定义枚举使用方法和定义好的一样 只是注意命名空间即可
E_StateEnum = CS.E_StateEnum
local state1 = E_StateEnum.State1
print(state1)--LUA: State1: 0
print("**********知识点三 枚举转换************")
--通过 枚举名.__CastFrom(内容) 进行转换
--数值转枚举 传入枚举成员名的对应数值 如果数值没有对应的枚举成员则不会报错 只是打印不出对应的枚举成员名
local state2 = E_StateEnum.__CastFrom(1)
print(state2)--LUA: State2: 1
--字符串转枚举 传入枚举成员名 若字符串没有对应枚举成员会报错
local state3 = E_StateEnum.__CastFrom("State3")
print(state3)--LUA: State3: 2
Lesson13_Lua调用CSharp_枚举
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson13_Lua调用CSharp_枚举 : MonoBehaviour
{
void Start()
{
LuaManager.Instance.Init();
LuaManager.Instance.DoLuaFile("Lesson13_Lua调用CSharp_枚举");
}
}
public enum E_StateEnum
{
State1,
State2,
State3,
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com