0
点赞
收藏
分享

微信扫一扫

Lua 面向对象(多态)

互联网码农 2022-03-11 阅读 83

Lua 面向对象(多态)

Object = {}
function Object:new()
    local obj = {}
    setmetatable(obj,self)
    self.__index = self
    return obj
end

function Object:subClass(className)
    _G[className] = {}
    local class = _G[className]
    setmetatable(class,self)
    self.__index = self
    class.base = self
end

Object:subClass("GameObject")
GameObject.posX = 0
GameObject.posY = 0
function GameObject:Move()
    print("GameObject移动")
    self.posX = self.posX + 1
    self.posY = self.posY + 1
    print(self.posX)
    print(self.posY)
end

GameObject:subClass("Player")
function Player:Move()
    --不能使用self.base:Move()
    self.base.Move(self)
end
local p1 = Player:new()
p1:Move()
p1:Move()
local p2 = Player:new()
p2:Move()
举报

相关推荐

0 条评论