Unity熱更新02-Lua基礎-014-Lua"面向物件"總結
阿新 • • 發佈:2020-10-28
--面向物件實現 --萬物之父 所有物件的基類 Object --封裝 Object = {} --例項化方法 function Object:new() local obj = {} --給空物件設定元表 以及 __index self.__index = self setmetatable(obj, self) return obj end --繼承 function Object:subClass(className) --根據名字生成一張表 就是一個類 _G[className] = {} local obj = _G[className] --設定自己的“父類” obj.base = self --給子類設定元表 以及 __index self.__index = self setmetatable(obj, self) end --申明一個新的類 Object:subClass("GameObject") --成員變數 GameObject.posX = 0 GameObject.posY = 0 --成員方法 function GameObject:Move() self.posX = self.posX + 1 self.posY = self.posY + 1 end --例項化物件使用 local obj = GameObject:new() print(obj.posX) obj:Move() print(obj.posX) local obj2 = GameObject:new() print(obj2.posX) obj2:Move() print(obj2.posX) --申明一個新的類 Player 繼承 GameObject GameObject:subClass("Player") --多型 重寫了 GameObject的Move方法 function Player:Move() --base呼叫父類方法 用.自己傳第一個引數 self.base.Move(self) end print("****") --例項化Player物件 local p1 = Player:new() print(p1.posX) p1:Move() print(p1.posX) local p2 = Player:new() print(p2.posX) p2:Move() print(p2.posX)