👻

【ロブロックス】オブジェクト指向入門~メタテーブルでクラスを作る~

2024/07/13に公開

はじめに

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()

ファイル構造

参考記事、動画

このプレイリストに入っている動画は結構分かりやすいものが多いです
https://www.youtube.com/watch?v=2NVNKPr-7HE&list=PLKyxobzt8D-KZhjswHvqr0G7u2BJgqFIh

まとめ

実際のところどのようにOOP(オブジェクト指向)をプロジェクトに適応するのかイメージがつかめていません。イメージとしてはサーバースクリプトをハンドラにしてplayerをキーにしてクラスをとってきて実行する感じなのかなぁと想像してます(笑)

Landelテックブログ

Discussion