lua如何继承unity类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua如何继承unity类相关的知识,希望对你有一定的参考价值。

参考技术A Lua元表使用 中的__index元方法可以实现面向对象和继承关系:

lua中没有类的概念,只有table,但可以用__index模拟类和对象:

local A =

function A:new(name)
self.__index = self

return setmetatable(
name = name
, self)
end

function A:print()
print("name is ", self.name)
end

local a = A:new("Tony")
a:print()
-- output: name is Tony

A和a两个表之间的关联是这样的:

这里name是表a的key,print是表A的函数,当用a调用print时,找到的元表A中的__index(指向A自己)中的print方法,而方法内的self是调用者a,所以self.name是a的name。
(Lua中的self)

两个类之间同样可以用__index实现继承关系:

local Person =
function Person:new(name)
self.__index = self
return setmetatable(
name = name
, self)
end
function Person:print()
print("name is ", self.name)
end

local Student = setmetatable(, Person)
Student.super = Person
function Student:new(name, score)
self.__index = self

local student = self.super:new(name)
student.score = score

setmetatable(student, self)
return student
end
function Student:print()
self.super.print(self)
print("score is ", self.score)
end

local s = Student:new("Tony", 98)
s:print()

-- output :
-- name is Tony
-- score is 98

以上是关于lua如何继承unity类的主要内容,如果未能解决你的问题,请参考以下文章

Unity Unity脚本类为什么要尽量避免继承MonoBehaviour类?

Unity脚本类为啥要尽量避免继承MonoBehaviour类

3、在Unity3D中创建一个脚本,默认继承哪个类。( )?

Unity脚本类为啥要尽量避免继承MonoBehaviour类

Unity脚本类为啥要尽量避免继承MonoBehaviour类

unity 子类挂载在对象上,获取继承类总是空?