--构造方法,构造方法的名字是随便起的,习惯性命名为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 函数,输出了不同的结果。