🌊
Roblox StudioのInstanceとは?
Robloxにおいて、ありとあらゆるところで出現するInstance
について簡単にまとめます。
Instance
=全オブジェクト
結論:そうです。Robloxでは全ての **オブジェクトがInstance
**qです。
luauでは、置物や障害物などの物体を表すPart
やそれらを制御するためのScript
、またGUIの要素など全てを総称してInstance
型としちゃっています。
公式ドキュメントでもシンプルに以下の記載のみです。
The Instance data type holds the constructor for Instance objects.
Robloxではディレクトリの階層の関係を親子関係で表しますが、その親も子も、彼らのステータスや特技も何もかもInstance
といったイメージです。
具体例
Instance
の代表例であるPart
とScript
の具体例を挙げます。といっても、これら自身が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