在Unity中使用lua

1 篇文章 0 订阅

lua学习直通车

项目中使用的是LuaFramework框架,也就是tolua

用C#的思路使用lua

1.单例类:创建一个lua脚本,TestSingle.lua

--[[------------------------------------------------]]--
TestSingle = {}
--定义一个名为name的变量
TestSingle.name = "test"
--age
TestSingle.age = 15
--公有变量,在引用了TestSingle之后就可以直接使用此变量
publicName = "公有变量"
--私有变量,只能在lua脚本内调用
local privateName = nil

function TestSingle.Instance(obj)
    TestSingle.para = "添加的新变量"
    --调用PrivateFunc方法
    PrivateFunc()
    --私有变量赋值
    privateName = "私有变量"
    print("单例类,并返回该类")
    return TestSingle
end
--在引用了TestSingle之后就可以直接调用次方法
function Func()
    print("直接调用的方法Func")
end
--TestSingle中的Func方法,可以理解为静态的公有方法
function TestSingle.Func()
    --定义一个局部变量,方法执行完后释放变量
    local temp = "局部变量"
    print("这是"..temp)
    print("运行了TestSingle.Func方法")
end
--TestSingl才可以调用的方法
local function PrivateFunc()
    print("只能在lua脚本内调用的方法====>PrivateFunc")
end
return TestSingle
--[[------------------------------------------------]]--

解释:

使用lua类需要引用require(“TestSingle”)

调用test = TestSingle.Instance()返回单例类对象

或者test = require("TestSingle")

可是直接test.name使用name变量

可以直接test.Func()调用方法

如果在其他脚本里同样使用单例类,它们公用相同的对象和方法,如test2 = TestSingle.Instance()

使用test2修改了变量,则test中的变量也被修改

2.对象:创建一个lua脚本,TestObject.lua

--[[------------------------------------------------]]--
TestObject = {}
--定义一个名为version的变量,这个变量是类和对象共用的,相当于静态变量
TestObject.version = "1.0"

function TestObject:New(name)
    --需要新建一个table
    local o = {}
    --关联o和TestObject
    setmetatable(o, self)
    --设置原方法为TestObject
    self.__index = self

    --为对象添加变量name并赋值
    o.name = name
    --返回对象
    return o
end
function TestObject:GetName()
    print("这个对象的name是:"..self.name)
end


--TestObject中的Func方法,
function TestObject.Func()
    print("TestObject.Func方法")
end
--可以理解为静态的私有方法
function PrivateFunc()
    print("只能在lua脚本内调用的方法====>PrivateFunc")
end
return TestObject
--[[------------------------------------------------]]--

解释:

创建对象必须要有这三部,局部变量、元表、设置原方法,然后返回该对象

local o = {}
setmetatable(o, self)
TestObject self.__index = self

__index的作用:外部访问对象的变量如果不存在,则去元表中寻找

设置对象的变量需要使用o来创建变量,如o.index = 14,如果使用TestObject创建变量,则属于TestObject的变量,TestObject作为对象只有一个,可理解成静态

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值