🌊

Roblox StudioのInstanceとは?

2024/07/21に公開

Robloxにおいて、ありとあらゆるところで出現するInstanceについて簡単にまとめます。

結論:Instance=全オブジェクト

そうです。Robloxでは全ての **オブジェクトがInstance**qです。

luauでは、置物や障害物などの物体を表すPartやそれらを制御するためのScript、またGUIの要素など全てを総称してInstance型としちゃっています。

公式ドキュメントでもシンプルに以下の記載のみです。

The Instance data type holds the constructor for Instance objects.

Robloxではディレクトリの階層の関係を親子関係で表しますが、その親も子も、彼らのステータスや特技も何もかもInstanceといったイメージです。

具体例

Instanceの代表例であるPartScriptの具体例を挙げます。といっても、これら自身がInstanceなのでオブジェクト自体の解説コードになってしまいますが...

-- sample of 'Part'

local part = Instance.new("Part")
part.Name = "MyPart"  -- オブジェクトの名前を設定
part.Position = Vector3.new(0, 10, 0)  -- 位置を設定
part.Parent = workspace  -- 親オブジェクトを設定(workspaceに追加)
-- sample of 'Script'

local script = Instance.new("Script")
script.Name = "MyScript"
script.Source = "print('Hello, world!')"  -- スクリプトのソースコードを設定
script.Parent = workspace  -- 親オブジェクトを設定(workspaceに追加)

このように、すべてがInstanceなので、PartやらScriptやらを区別せず同じように扱えたりメソッドが使えたりといったメリットがあります。

ですがその反面、すべて同じであるがゆえに、不必要なプロパティが付与されたり特定の要件に対するカスタマイズ性にかけたりするデメリットもあります。

ですので、設計する際などは特に注意が入りそうですね。。

まとめ

Instanceは全てのオブジェクトです。これだけ理解できれば問題ないです!

Discussion