--构造方法,构造方法的名字是随便起的,习惯性命名为new()   function Class:new(x,y)        local self = {}  --初始化self,如果没有这句,那么类所建立的对象如果有一个改变,其他对象都会改变        setmetatable(self, Class)  --将self的元表设定为Class        self.x = x   --属性值初始化       self.y = y       return self  --返回自身  --这里定义类的其他方法  function Class:test()   print(self.x,self.y)  function Class:plus()   self.x = self.x + 1   self.y = self.y + 1

--设置元表和__index元方法是必须的,需要借助lua的查找机制来实现类的继承和多态

1.模拟枚举2.lua实现类,继承,多态父类: --类的声明,这里声明了类名还有属性,并且给出了属性的初始值 Class = {x=0,y=0} --设置元表的索引,想模拟类的话,这步操作很关键 Class.__index = Class --构造方法,构造方法的名字是随便起的,习惯性命名为new() function Class:new(x,y) ... local Enum = require " enum " -- Enums can be created like so: local Number = Enum ( " Zero " , " One " , " Two " , " Three " ) -- To control the starting value of an enum, the first value can be set. local States = Enum ({ [ " Paused " ] = - 1 , -- Our enum will now start at -1 instead of 0. " Active " , -- > 0 " Win " , -- > 1 " Lose " , "NEXT_COUNT_DOWN", -- 下一波次倒计时 "MONSTER_MOVE_FRAME", -- 怪物移动帧动画 "MONSTER_MOVE_ACTION", -- 怪物移动动作 DIRECTION = -- 怪物移动方向 "D...
转自:http://groups.google.com/group/jianguhan  用 lua 来写游戏脚本的确是一件很方便的事情,但是有时候需要用到 枚举 型时就有点麻烦了,因为 lua 里时没有 枚举 型变量这个东西的,所以要使用 枚举 还 得自己转换一下,我写了一个函数用来做这种转换:  function CreatEnumTable(tbl, index)      assert(IsTab
Unity在 使用 Lua 的过程中,经常会将 枚举 型导出为 XXXEnum_wrap.cs 如果遇到热更新一个没有导出的 型,就瓜起了,这里添加一个绕开 型导出的小tips lua 中对 枚举 赋值,支持 枚举 名称和 枚举 的Int值 这样用起来就很爽了
Lua Code中注册C/C++的 枚举 非常容易,就像注册全局变量一样。我们使用 枚举 名称作为命名空间,来避免注册的 枚举 发生冲突。注册的 枚举 存储在全局环境(线程环境)中。 当在 Lua Code中访问 枚举 时,通过名称来访问对应的值。
local animal1 = Animal:new("Animal") local animal2 = Dog:new("Dog") local animal3 = Cat:new("Cat") animal1:speak() -- 输出 "Animal speaks." animal2:speak() -- 输出 "Dog barks." animal3:speak() -- 输出 "Cat meows." 在这个例子中,Animal 是一个基 ,Dog 和 Cat 是 Animal 的子 。在 Animal 中定义了一个 speak 函数,该函数输出 "Animal speaks.",在 Dog 和 Cat 中重载了该函数,实现了 多态 。在测试中,分别创建了一个 Animal 对象、一个 Dog 对象和一个 Cat 对象,并调用它们的 speak 函数,输出了不同的结果。