2、枚举和类一样,都需要将使用的枚举加入到CustomSetting文件中。使用方法也基本相同
primitiveType = UnityEngine.PrimitiveType
GameObject = UnityEngine.GameObject
local obj = GameObject.CreatePrimitive(primitiveType.Cube)
local c = E_MyEnum.Idle
print(c)
local d = E_MyEnum.Move
if c==d then
print("枚举相同")
print("枚举不相同")
3、枚举转换
枚举转字符串
tostring(c)
枚举转数字
c:ToInt()
数字转枚举
E_MyEnum.IntToEnum(0)
tolua没有提供字符串转枚举的方法
Unity向Lua传入参数问题
GameObject go = GameObject.Find("/Light");
Light light = go.GetComponent<Light>();
LuaFunction func = state.GetFunction("ChangeLightType");
1 .tolua初始化的LuaBinder.Bind(lua);方法会把所有的 CustomSetting下的注册的 C#类 在初始化tolua时全部获取内存地址进行lua映射处理,对性能有消耗
2.目前C#一些API的参数有枚举类的话必须使用枚举类来传递不能使用int数值来传值,导致如果打包后没有注册对应枚举类,API接口无法使用
注:原因1 可以通过il2cpp方式打包解决,就不会有性能问题了,不过我们项目目前转换il2cpp会有问题 ,暂时未转换
Cust...
这一部分主要讲的是如何在lua代码中访问C#中的Dictionary对象与枚举类型,相比之之前的算是比较简单的了,基本上看一下就完全会使用了
lua访问C#中的Dictionary
首先:作者也说过,对于这个例子中的方法BindMap()方法无需可以关注,这个只是为了保证例子可以独立运行,平时的开发中只需要将需要的类型添加在在CustomSetting的列表之中即可。
在Lua中访问C#枚举对象
最近在unity中尝试Lua与C#的互调(用xlua生成相关的binding代码),在Lua中访问C#侧产生的enum枚举对象时碰上个问题:
按照xlua提供的绑定接口,与用户自定义类型(class、struct)相同,lua侧现在通过生成一个userdata的方式引用C#侧的enum对象,这说明对xlua而言,C#中的enum也被视作一个class来制定binding规则。
这就导致我不能想当然地直接将C#中的某个枚举对象作为lua中的number处理,就像这样:
spaceToInt
if not spaceEquals0 then的问题
UnityEngineSpaceIntToEnum0这一篇文章主要是通过Example讲解ToLua中枚举的用法代码using UnityEngine;
using S
前言 Lua是一种面向过程的编程语言, Lua的值类型只有nill boolean number string。 Lua的引用类型只有:function table userdata thread 。 但是Lua中的Table几乎是万能的, 我们来试一下如何用Lua实现枚举的特性和功能。实现 枚举的特性是,当里面的第一个元素初始值确定之后,后面的元素累加1,如果不...