13.Lua调用C#的枚举

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

×

喜欢就点赞,疼爱就打赏