👻
【ロブロックス】オブジェクト指向入門~メタテーブルでクラスを作る~
はじめに
Luaって構造体しかなくて元々C#やVerseを触ってた身としてはちょっと違和感がありましたwGo言語も少し触っていてそれもクラスがなかったことを思い出しました。
サンプルを見てやったらLuaでのクラスの作り方とGoでの作り方は少し似ていたので案外すんなり腑に落ちたので共有します。
やること
Partをスポーンし三秒後に破壊する。
クラスを作る
モジュールスクリプトを作成します。
local sample = {}
sample.__index = sample
--インスタンスを作る
function sample.new()
local instance = setmetatable({}, sample)
instance.level = 1
return instance
end
--PartをスポーンしPartとインスタンスを紐づける
function sample:spawn()
local instance = Instance.new("Part")
instance.Parent = workspace
self.object = instance
end
--パートを破壊しクラスが持てるobjectを空にする
function sample:destroy()
self.object:Destroy()
self.object = nil
end
return sample
クラスを実行する
local Sample = require(script.Sample)
-- インスタンス生成
local firstSample = Sample.new()
print("sampleの中身 ", firstSample)
task.wait(3)
-- スポーン
firstSample:spawn()
task.wait(3)
--破壊する
firstSample:destroy()
ファイル構造
参考記事、動画
このプレイリストに入っている動画は結構分かりやすいものが多いです
まとめ
実際のところどのようにOOP(オブジェクト指向)をプロジェクトに適応するのかイメージがつかめていません。イメージとしてはサーバースクリプトをハンドラにしてplayerをキーにしてクラスをとってきて実行する感じなのかなぁと想像してます(笑)
Discussion