-
在lua中使用输出函数
案例14讲的是在lua中使用输出函数。lua片断是一个测试射线的方法,在调用.Physics.Raycast()时,返回了两个变量,一个bool值,一个hit。将原本C#中的输出参数变成了返回值直接返回。调用方法和其他的一样处理。值得注意的一点是:输出参数在lua中是不需要传参的,传递nil即可,这一点可以参见我在luaInterface中的测试(点击此处)。但是在例子中同样有个例子将输出参数进行了传参,但是不影响输出结果。
-
使用ProtoBuffer
案例15讲解是在lua中使用protobuffer。 关于protoBuff的介绍可以参见文章:https://blog.csdn.net/xiaoxiaoyusheng2012/article/details/81129261。关于protobuf的使用(收发)我也不是很了解。只能稍作讲解。在lua片段中定义了两个function,一个用于给potobuf赋值,一个解析protobuf。在赋值的函数中,用到了SerializeToString()方法,该方法是将proto数据进行序列化的方法。然后用一个数组TestProtol.data来接受序列化后的结果。TestProtol是一个自定义的类,里面就是一个byte数组字段,不过该字段用了LuaByteBufferAttribute特性,将其生成wrap文件用,用于存储proto序列化的结果。proto的赋值和我们正常给字段赋值没有任何区别,实际上,proto在使用的时候,会生成对应的类,来供C#使用。在解析方法中,使用ParseFromString()方法解析protobuf,参数是之前的TestProtol.data。
这当中还有一点关于protobuf的使用知识点,就是extensions关键字的用法,可以看到,在protobuf文件中,Person字段是没有关于Phone的数据的,但是在赋值的时候,这里使用了Extensions方法,为Person字段添加了一个Phone的数据进去,然后一同赋值后进行了序列化。