Instance
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
インスタンスは、Roblox クラスの階層にあるすべてのクラスのベースクラスです。インスタンスオブジェクトを直接作成することはできません。
インスタンスには、コードでオブジェクトを作成するための特別な関数があります。この関数は Instance.new() という名前でクラスを取ります。この関数はクラスの名前をパラメーターとして取り、作成されたオブジェクトを返します。抽象クラスとサービスはインスタンス.new 関数で作成できません。
概要
プロパティ
Class.Instance とその子孫を Class.Instance:Clone() でクローンでき、保存/公開できるかどうかを決定します。
このコンテナ内のスクリプトに使用できるコンピューターのセット。
Class.Instance のユニークでない識別子。
Class.Instance の親を決定します。
Class.CoreGui オブジェクトを保護するために使用されていた古いプロパティ。
インスタンスをサンドボックスコンテナに変換します。
方法
インスタンスにタグを適用します。
この関数は、インスタンスの子をすべて破壊します。
インスタンスとそのすべての子孫をコピーし、 Class.Instance.Archivable|Archivable ではないインスタンスをコピーしません。
Class.Instance.Parent プロパティを nil に設定し、Instance.Parent プロパティをロックし、すべての接続を切断し、すべての子供に Destroy を呼び出します。
Class.Instance の最初の祖先が、Instance.Name が与えられた名前と同等です。
Class.Instance の最初の祖先が、Object.ClassName が与えられたキッズネームと同等であることが示されます。
Class.Instance の最初の祖先が、Object:IsA() が与えられたキャッスト名のために返されます。
Class.Instance が与えられた名前で見つかった最初の子を返します。
Class.Instance の最初の子、ClassName の Class.Instance は、与えられたクラス名と同じです。
Class.Instance の最初の子 Object:IsA() について、Class.Object:IsA() が与えられたキッズ名のために true が返されます。
Class.Instance.Name を与えた最初の子孫を返します。
インスタンスに関連付けられた Actor を返します。
与えられた属性名に割り当てられた値を返します。
与えられた属性が変更されるときに発動するイベントを返します。
インスタンスの属性の辞書を返します。
すべてのインスタンスの子を含むアレイを返します。
Roblox が内部で使用するデバッグ ID のコード化された文字列をRoblox(ロブロックス)します。
インスタンスのすべての子孫を含むアレイを返します。
インスタンスの祖先を記述する文字列を返します。
インスタンスに適用されたすべてのタグのアレイを取得します。
インスタンスにタグが与えられているかどうかをチェックします。
Class.Instance が与えられた子孫の祖先である場合、Class.Instance は true です。
Class.Instance が与えられた祖先の子孫である場合、Class.Instance は true です。
インスタンスからタグを削除します。
与えられた名前のアトリビュートを与えられた値に設定します。
Class.Instance の子を返し、指定された名前で返します。子が存在しない場合は、子が存在するまで現在のスレッドを返します。
イベント
オブジェクトのプロパティの Instance.Parent が変更されると、ファイアーを起動します。
Class.Instance のアトリビュートが変更されるときにファイアーされます。
オブジェクトがこの Instance に親化される後に発動します。
子供がこの Instance から削除された後に発動します。
Class.Instance に追加された後にファイアー。
Class.Instance の子孫が削除される直前にファイアをインストールします。
インスタンスが Instance:Destroy() で破壊される直前にファイアを開始します。
プロパティ
Archivable
このプロパティは、エクスペリエンスが公開されたり保存されたりするときにインスタンスを含めるかどうかを決定します。Clone() をインスタンスの祖先に直接呼び出すと、Clone() が返されます。
コピーオプションを使用して Duplicate または Copy / Paste を使用してオブジェクトをコピーすると、自分の 1> Class.Instance.Archivable|Archivable プロパティを無視し、コピーのための4> Class.Instance.Archivable|Archivable を設定し
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
このインスタンス内のスクリプトに使用できるコンピューターのセットを設定します。コンピューターのプロパティを有効にする必要があります。Instance.Sandboxed 。
このプロパティは実験的な機能によって使用されています。スクリプトカプシティページ参照。
Name
Class.Instance のユニークでない識別子。
このプロパティは、オブジェクトを識別する唯一の識別子です。名前は必ずしもユニークな識別子ではありませんが、オブジェクトの子供の複数は同じ名前を共有することがあります。名前はオブジェクトのハイエラルーィを整理し、スクリプトが特定のオブジェクトにアクセスできるようにするために使用されます。インスタンスの名前は 100 文字
オブジェクトの名前は、次のメソッドを使用してデータモデル階層を介してオブジェクトにアクセスするために常に使用されます:
local baseplate = workspace.Baseplatelocal baseplate = workspace["Baseplate"]local baseplate = workspace:FindFirstChild("BasePlate")
ドットオペレーターを使用してオブジェクトにアクセスするには、オブジェクトの名前は特定の構文に従わなければなりません。オブジェクトの名前はアンダースコアまたは文字列で始まる必要があります。オブジェクトの名前の残りは、文字、数字、またはアンダースコアでなければなりません (他の特殊文字は
同じ名前のオブジェクトが複数ある場合、その名前でオブジェクトをインデックスする試みは、Instance:FindFirstChild() のような、その名前で同じオブジェクトを返すだけですが、必ずしも望ましいオブジェクトではありません。如果コードでオブジェクトにアクセスする必要がある場合は、ユニー
注、インスタンスの階層を示す完全な名前は、Instance:GetFullName() を使用して入手できます。
Parent
親 プロパティは、Instance の 親 を決定します。次の用語は、このプロパティを設定する方法について一般的に使用されています:
- オブジェクトは、子 (親がそのオブジェクトに設定されている) の他のオブジェクトです。
- Class.Instance の子孫は、そのオブジェクトの子孫であり、子孫の子孫も含まれます。
- Class.Instance の先祖は、Instance のインスタンスの子です。
多くの他の API メンバーの名前は、このプロパティから取得されます。たとえば、GetChildren や、FindFirstChild などです。
Class.Instance:Remove()|Remove 機能は、このプロパティを 0 に設定します。 Destroy を呼び出すと、Instance の親とそのすべての子供を 1>nil1> に設定し、4>lock4> 親プロパティを設
このプロパティはまた、オブジェクトがゲーム内に存在するかどうかを管理するためにも使用されます。オブジェクトの親が DataModel にある場合、またはスクリプトによって参照される他の
新しく作成されたオブジェクトは、Instance.new() を使用して作成される場合、親を持ちません。通常、親が設定されるまでは、オブジェクトの最も基本的な作成は 2つのステップです:オブジェクトを作成し、その後親を設定する。
-- Create a part and parent it to the workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.new("NumberValue", workspace)
Class.DataModel インスタンスが親になっている間、特定のプロパティに変更が行われると、エンジンは追加のワークを内部で実行する必要があります (たとえば、レプリケーション、レンダリング、およびGUIレイアウトの場合)。必要に応じて、インスタンスのプロパティを変更する前に Class.DataModel
オブジェクトレプリケーション
サーバーが作成するオブジェクトは、コピーされたオブジェクトに親化されるまでクライアントにはレプリケートされません。当サーバーでオブジェクトを作成する場合、多くのプロパティを設定することをお勧めします。これにより、オブジェクトがコピーされるたびに、親化されることが保証されます。
local part = Instance.new("Part") -- ここで 2 番目のパラメーターを使用しないでくださいpart.Anchored = truepart.BrickColor = BrickColor.new("Really red")-- 多くの他のプロパティ変更がここにこれかもしれません...-- 親を最後に設定してください!part.Parent = workspace
しかし、Model の親がまだ設定されていないパーツに親を与える場合、そのパーツを親にすることは、モデルがまだレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケ
Sandboxed
インスタンスをサンドボックスコンテナに変更します。サンドボックスコンテナは、特定のコンテナ内のスクリプトのアクションを制限する試作機能です。
詳細は、スクリプトカプシティページを参照してください。
UniqueId
方法
AddTag
このメソッドは、タグがすでに適用されている場合でもタグにインスタンスにタグを適用します。タグを成功して追加すると、 CollectionService:GetInstanceAddedSignal() によって作成されたシグナルが発動します。
インスタンスにタグを付けると、タグの機能を提供するためにいくつかのリソースが使用されることがあります。たとえば、イベント接続やテーブルなどです。メモリ漏れを防ぐためには
パラメータ
戻り値
ClearAllChildren
この関数は、インスタンスの子をすべて破壊します。
Class.Instance:Destroy() は、使用しているオブジェクトの子供たちにも Class.Instance:Destroy() と呼び出されるため、この関数はすべての子孫を破壊します。
ClearAllChildren の代替
開発者がすべての子孫を破壊しないでください、<a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft-edge-help">エディジュード\ または <a href="https://developer.microsoft.com/en-jp/microsoft-edge/microsoft-edge-help">エディジュード\ を使用して、オブジェクトをループして<a href="https://developer.microsoft.com/en-us/microsoft-edge/m
for _, instance in object:GetDescendants() doif instance:IsA("BasePart") theninstance:Destroy()endend
戻り値
コードサンプル
local part = Instance.new("Part")
-- add some sparkles
for _ = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
end
print("Part has", #part:GetChildren(), "children")
--> Part has 3 children
part:ClearAllChildren()
print("Part has", #part:GetChildren(), "children")
--> Part has 0 children
Clone
クローン は、Archivable 以外のすべてのインスタンスのコピーを作成します。このメソッドは、 Class.Instance
クローンされたインスタンスに ObjectValue.Value などの参照プロパティが設定されている場合、コピーのプロパティの値は、オリジナルの値によります:
- 参照プロパティがクローンされたインスタンスを参照している場合、コピーはコピーに参照します。
- 参照プロパティがクローンされていないオブジェクトを参照している場合、コピーに同じ値が保持されます。
戻り値
コードサンプル
local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace
Destroy
Class.Instance.Parent プロパティを Instance.Parent に設定し、 Class.Instance.Parent プロパティをロックし、すべての接続を切断し、1>Destroy1> を呼び出します。この機能は、オブジェクトが再び必要なくなった場合に正
ヒント: オブジェクトの Destroy を呼び出した後、オブジェクト (またはその子孫) に関連する変数をゼロに設定します。これにより、コードはオブジェクトに関する何ものもアクセスできなくなります。
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- これをしないでください:print(part.Name) --> "Hello, world"-- これを行うと、上記の行が機能しなくなります:part = nil
このメソッドで Instance が破壊されると、Instance.Parent プロパティはロックされるため、再使用できません。一時的にオブジェクトを削除する場合は、Parent を 2>Class.Instance2> に設定します。たとえば、5>Class.Instance.Parent|Parent5> を 8>Class.Instance8> に
object.Parent = nilwait(2)object.Parent = workspace
オブジェクトを期限付きで破壊するには、Debris:AddItem() を使用します。
戻り値
コードサンプル
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Class.Instance の最初の祖先が、Instance.Name が与えられた名前と同等です。
この関数は、Instance.Parent のすぐ下にあるインスタンスの即座に開始し、DataModel に向上します。マッチする祖先が見つからない場合は、nilを返します。
次のコードスナップでは、「Car」という名前のオブジェクトの最初の祖先を見つけます。
local car = object:FindFirstAncestor("Car")
特定のクラスの祖先を見つけるバリアントの場合は、Instance:FindFirstAncestorOfClass() および Instance:FindFirstAncestorWhichIsA() を参照してください。
パラメータ
Class.Instance.Name を検索する必要があります。
戻り値
Class.Instance が見つかりました。
FindFirstAncestorOfClass
Class.Instance の最初の祖先が、Object.ClassName が与えられたキッズネームと同等であることが示されます。
この関数は、Instance.Parent のすぐ下にあるインスタンスの即座に開始し、DataModel に向上します。マッチする祖先が見つからない場合は、nilを返します。
この関数の共通の使用は、Model を探しています。BasePart が属する。たとえば:
local model = part:FindFirstAncestorOfClass("Model")
この関数は、Instance:FindFirstAncestor()の変体で、Object.ClassName プロパティをチェックする代わりに Instance.Name を使用します。2>Class.Instance:FindFirstAncestorWhichIsA()2> も存在し、クラスの相続を尊重
パラメータ
Class.Object.className を検索する必要があります。
戻り値
Class.Instance が見つかりました。
FindFirstAncestorWhichIsA
Class.Instance の最初の祖先が、Object:IsA() が与えられたキャッスト名のために返されます。
この関数は、Instance.Parent のすぐ下にあるインスタンスの即座に開始し、DataModel に向上します。マッチする祖先が見つからない場合は、nilを返します。
Class.Instance:FindFirstAncestorOfClass() とは異なり、この関数は Object:IsA() を使用しています。これはクラスの相続に対応します。たとえば:
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
ですから、次のコードサンプルは、BasePart の最初の祖先を返します、WedgePart、MeshPart または 2>Class.Part2> であるかどうかにかかわらず。
local part = object:FindFirstAncestorWhichIsA("BasePart")
また、Instance:FindFirstAncestor() を参照してください。
パラメータ
Class.Object.className を検索する必要があります。
戻り値
Class.Instance が見つかりました。
FindFirstChild
Class.Instance の最初の子供を、指定された名前で返します。
or nil が存在しない場合。オプションの recursive 引数が true の場合、この関数は、Instance のすべての子孫を検索しますが、1> recursive1> の直接子孫を検索しません。
オブジェクトの存在をチェック
FindFirstChild は、オブジェクトが存在するかどうかを確認する必要がある場合には必要です。子をドットオペレータを使用してインデックスすると、子が存在しない場合にエラーが発生します。
-- ワークスペースにパーツが存在しない場合は、次の行のエラーが発生します:workspace.Part.Transparency = 0.5
FindFirstChild を使用して、パーツを最初にチェックし、if 文を使用して必要なコードを実行します。
local part = workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
プロパティに一致する子を見つける
オブジェクトの Name は、Parent のプロパティと同じ場合があります。Class.Instance.Name|Name を使用すると、子供たちは名前を共有する場合、2>Class.Instance.Parent|Parent2> のプロパティの優先権を取ります。
次の例で、 Folder という名前の Part に、 Part.Color プロパティが追加されます。 2>Class.Part.Color2> は、フォルダの 5>Class.Part.Color5> にも参照されます。 8>Class.Part.Color8> は、1>Datatype.Color3
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c = part.Color --> 色3local c2 = part:FindFirstChild("Color") --> The Folder
この方法で FindFirstChild() を使用すると、新しいプロパティの紹介がコードにリスクを与えることなくなります。
パフォーマンスノート
FindFirstChild() は、ドットオペレーターを使用するよりも約 20% 長く、および参照
パラメータ
検索する Instance.Name 。
検索を再帰的に実行するかどうか。
戻り値
Class.Instance が見つかりました。
コードサンプル
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Class.Instance の最初の子、ClassName の Class.Instance は、与えられたクラス名と同じです。
一致する子供が見つからない場合、この関数は nil を返します。
Class.Instance:FindFirstChildWhichIsA() この関数は、クラスが指定された名前空間に一致するオブジェクトのみを返します。クラス遺継を無視します。
名前で子を検索している開発者は、代わりに Instance:FindFirstChild() を使用する必要があります。
パラメータ
Class.Object.className を検索する必要があります。
戻り値
Class.Instance が見つかりました。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid
while not humanoid do
humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
character.ChildAdded:Wait()
end
end
FindFirstChildWhichIsA
Class.Instance の最初の子 Object:IsA() について、Class.Object:IsA() が与えられたキッズ名のために true が返されます。
一致する子供が見つからない場合、この関数は nil を返します。オプションの再帰引数が true の場合、この関数は Instance のすべての子供を検索しますが、直接子供を検索するのではありません。
Class.Instance:FindFirstChildOfClass() とは異なり、この関数は Object:IsA() を使用しています。これはクラスの相続を尊重します。たとえば:
print(part:IsA("Part")) --> 真print(part:IsA("BasePart")) --> 真print(part:IsA("Instance")) --> true
ですから、次のコードサンプルは、 BasePart の最初の子、WedgePart、MeshPart または 2>Class.Part2> であるかどうかにかかわらず、最初の 5>Class.BasePart5> 子を返します。
local part = object:FindFirstChildWhichIsA("BasePart")
名前で子を検索している開発者は、代わりに Instance:FindFirstChild() を使用する必要があります。
パラメータ
検索する Object.ClassName 。
検索を再帰的に実行するかどうか。
戻り値
Class.Instance が見つかりました。
FindFirstDescendant
Class.Instance.Name を与えた最初の子孫を返します。
このメソッドは使用できません。インスタンスの最初の子孫を見つけるには、recursive の代わりに Instance:FindFirstChild() パラメータを使用してください。
パラメータ
Class.Instance.Name を検索する。
戻り値
Class.Instance が見つかりました。
GetActor
Class.Instance が Actor である場合、Actor 自体が返されます。そうでない場合、最も近い祖先 1>Class.Actor1> が返されます。4>Class.Actor4> が祖先でない場合、結果は 7>nil7> です。
戻り値
Class.Actor が見つかりました。
GetAttribute
このメソッドは、指定された属性名に割り当てられた値を返します。属性名が割り当てられていない場合は、nilが返されます。
たとえば、次のコードスナップは、次にインスタンスの 最初の位置 属性の値を取得します:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
参照してください
- Instance:SetAttribute() は、指定された名前のアトリビュートを指定された値に設定します。
- Instance:GetAttributes() は、インスタンスの属性のキーバリューペアの辞書を返します。
パラメータ
取得される属性の名前。
戻り値
与えられた属性名に割り当てられた値。如果属性が割り当てられていない場合は、nil が返されます。
GetAttributeChangedSignal
この関数は、Changed イベントと同じように動作するイベントを返しますが、特定のアトリビュートが変更されるときのみを発動します。これは、GetPropertyChangedSignal() のアトリビュートの場合と同じです。
一般的に、このメソッドを使用することは、Changed のコネクションではなく、Class.Object.Changed|Changed の関数でアトリビュート名をチェックすることで良いです。同じアトリビュート名のメソッドを同じオブジェクトで呼び出すと、同じイベントが返されます。
次のコード例は、部品の 最初の位置 属性が変更されると、関数 attributeChanged() が発動する信号を返します:
local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)
また、Instance.AttributeChanged を参照して、インスタンス上の任意の属性が変更されるときに実行されます。
パラメータ
変更信号が返される特定のアトリビュートの名前です。
戻り値
与えられた属性が変更されるときに発動するイベント。
GetAttributes
このメソッドは、キーがアトリビュートの名前であり、値が非- nil 値の場合、キーの値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が��
たとえば、次のコードのスナップショットは、インスタンスの属性と値を出力します:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(name .. " = " .. value)end
また、Instance:GetAttribute() を参照して、指定された属性名に割り当てられた値を返します。
戻り値
ストリングの名前であり、変異値である場合がある属性の変異パーを変異単語典に登録します。A dictionary of string → variant pairs for each attribute where the string is the name of the attribute and the variant is a non-nil value.
GetChildren
すべてのインスタンスの直接子を含むアレイ (数値でインデックスされたテーブル) を返します。また、オブジェクトの Class.Instance.Parent|Parent が等しいオブジェクトの Class.Instance の子である場合も同様です。数値または一般的な for-ループを使用してイテレートできます:
-- 数値の for-ループ例local children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- 一般的な for-ループ例local children = workspace:GetChildren()for i, child in children doprint(child.Name .. " is child number " .. i)end
子供たちは、オブジェクトに Parent プロパティを設定された順序でソートされます。
また、GetDescendants 関数を参照してください。
戻り値
インスタンスの子を含むアレイ。
コードサンプル
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
Roblox が内部で使用するデバッグ ID のコード化された文字列をRoblox(ロブロックス)します。
注:
- このアイテムは保護されています。 Script または LocalScript で使用しようとすると、エラーが発生します
- デバッグID は、デバッグプロセスで使用される ID です。これにより、デバッガーはプログラムの実行前に各インストラクションを読むことができます。Roblox のすべてのオブジェクトはプロセスとして実行され、必要に応じてデバッグできます。
- これは、同じ名前のオブジェクトを別々に区別する必要があるプラグインにとって便利です (例: 同じ名前のオブジェクト)
パラメータ
スコープの長さ。
戻り値
デバッグ ID ストリン文字列。
コードサンプル
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
このオブジェクトメソッドは、そのオブジェクトのすべての子供を含むアレイを返します。Instance:GetChildren() は、オブジェクトの即座の子供だけを返しますが、このメソッドは、オブジェクトの子供、その子供の子供、などとすべての子供を見つけます。
戻り値
インスタンスの子孫を含むアレイ。
コードサンプル
local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end
GetFullName
インスタンスの祖先を記述する文字列を返します。文字列は、オブジェクトの Name とその祖先の間にある期間で構成されています。DataModel ( game ) は考慮
Class.Instance が、DataModel の子でない、トップレベルの一つを含むすべての祖先を検討すると、この関数は最上位の一つを含むすべての祖先を検討します。
この関数はログとデバッグ用に便利です。返されたストリングを任意の有用なオペレーションのために解析しようとしないでください;この関数はオブジェクト名の期間(または他のシンボル)を超えることはありません。つまり、その出力は Lua の識別子であることが多くの場合、保証されていません。
戻り値
Class.Instance の完全な名前。
コードサンプル
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetTags
このメソッドは、タグ を適用したインスタンスのアレイを返します。AddTag() で、プロパティ ウィンドウで、または実行時に 2>Class.Instance:AddTag()|AddTag()2> でタグを追加できます。
このメソッドは、インスタンス上の複数のタグで何かをするときに便利です。ただし、このメソッドを使用して、単一のタグの存在をチェックすることは効率が悪いため、HasTag() を使用して、特定のタグをチェックする代わりに使用してはなりません。
戻り値
HasTag
このメソッドは、提供されたタグがオブジェクトに追加された場合に true を返します。プロパティ ウィンドウでタグを追加するか、実行時に AddTag() でタグを追加できます。
パラメータ
戻り値
IsAncestorOf
Class.Instance が与えられた子孫の祖先である場合、Class.Instance は true です。
オブジェクトの Instance.Parent は、オブジェクトの Instance.Parent またはその親の 1>Class.Instance.Parent1> が 4>Class.Instance4> に設定されている場合、オブジェクトの祖先として扱われます。
また、 Instance:IsDescendantOf() を参照してください。
パラメータ
Class.Instance の子孫。
戻り値
Class.Instance が与えられた子孫の祖先である場合は、Class.Instance はその後継者です。
コードサンプル
local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))
IsDescendantOf
Class.Instance が与えられた祖先の子孫である場合、Class.Instance は true です。
Class.Instance は、インスタンスの親または親の親がオブジェクトに設定されている場合、オブジェクトの後継者として扱われます。
注意、 DataModel は nil の子です。これは、IsDescendantOf が nil のパラメーターでチェックするオブジェクトが削除されているかどうかを確認するために使用できません。
また、Instance:IsAncestorOf() を参照してください。
パラメータ
戻り値
Class.Instance が与えられた祖先の子孫である場合は、Class.Instance は与えられます。
コードサンプル
local part = Instance.new("Part")
print(part:IsDescendantOf(game))
--> false
part.Parent = workspace
print(part:IsDescendantOf(game))
--> true
part.Parent = game
print(part:IsDescendantOf(game))
--> true
RemoveTag
このメソッドはインスタンスからタグを削除します。タグがない場合でもエラーは発生しません。タグを削除すると、CollectionService:GetInstanceRemovedSignal() によって作成されたシグナルが発信されます。
インスタンスにタグをマークすると、タグの機能を提供するためにいくつかのリソースが使用されることがよくあります。たとえば、イベント接続やテーブルなどです。メモリ漏れを防ぐためには、タグが必要なくなったときにこれらをきれいにする (ディスコネクト、nil など) が良いです。
パラメータ
戻り値
SetAttribute
このメソッドは、与えられた名前のアトリビュートを与えられた値に設定します。如果与えられた値が nil である場合、アトリビュートはデフォルトで返されるため、削除されます。
たとえば、次のコードスナップは、インスタンスの 最初の位置 属性を Vector3.new(0, 10, 0) に設定します:
local part = workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
制限
名前の要件と制限:
- 名前には、アルファ数字のみ使用し、下矢印を使用してください。
- 空き文字、またはユニークなシンボルは許可されていません。
- 文字列は 100 文字以下でなければなりません。
- 名前は、 RBX 以外の Roblox コアスクリプトで始まることはできません。
アトリビュートをサポートされていないタイプに設定入力ようとしているときにエラーが発生します。
参照してください:
- Instance:GetAttribute() は、与えられた属性名に割り当てられた値を返します。
- Instance:GetAttributes() は、インスタンスの属性のキーバリューペアの辞書を返します。
パラメータ
設定される属性の名前です。
指定された属性を設定する値。
戻り値
WaitForChild
Class.Instance の子を timeOut に戻ります。子が存在しない場合は、子が存在するまで現在のスレッドを返します。nil パラメーターが指定されている場合、このメソッドは指定された数秒後に時間切れになり、1>0>nil1>0> を返します。
主な使用
WaitForChild() は、LocalScript のクライアント側コードで実行されているコードの重要な側面です。Roblox
注意
- この関数は、呼び出し時に与えられた名前の子が存在する場合には返さない。
- Instance:FindFirstChild() は、オブジェクトが存在すると仮定されているオブジェクトの WaitForChild() に対するより効率的な代替です。
- このメソッドを 5 秒以上にわたって呼び出し、timeOut パラメーターが指定されていない場合は、スレッドが無期限で生成できる可能性があります。
パラメータ
戻り値
Class.Instance が見つかりました。
コードサンプル
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
イベント
AncestryChanged
オブジェクトのプロパティの Instance.Parent が変更されると、ファイアーを起動します。
このイベントには 2つのパラメータ、子供 と親 が含まれています。子供 は、実際に変更された 2> Class.Instance2> の親を参照します。5>親5> は、このインスタンスの新しい 8> Class.Instance.Parent
インスタンスの削除をスタジオで追跡するためには、エクスプローラーやプラグインを介して手動で削除するか、Instance:Destroy() を使用してください。Instance.Destroying を使用する必要がある場合は、Class.Instance.Destroying イベントを使用してください。
パラメータ
Class.Instance の親が変更された Instance.Parent。
Class.Instance の新しい Instance は、Instance.Parent の親が変更されました。
コードサンプル
local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end
AttributeChanged
このイベントは、インスタンス上の任意の属性が変更されるときに発生します。包含する属性が nil に設定されている場合も含まれます。変更された属性の名前は、接続された関数に渡されます。
たとえば、次のコードスナップは、パーツの属性の変更が発生したときに attributeChanged() 機能を呼び出して、ファイアを起動します:
local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
また、Instance:GetAttributeChangedSignal() を参照してください。これは、特定の属性が変更されるときに発動するイベントを返します。
パラメータ
変更された属性の名前。
ChildAdded
オブジェクトがこの Instance に親化される後に発動します。
注意、この関数をクライアントで使用して、サーバーによって作成されたオブジェクトを検出するときは、Instance:WaitForChild() を使用する必要があります。これは、オブジェクトとその子孫が、サーバーからクライアントに一度にレプリケートされることは保証されていないためです。たとえば:
workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
注:この関数は、Instance の即座の子供にのみ機能します。子孫をすべて捕獲する機能には、Instance.DescendantAdded を使用してください。
また、 Instance.ChildRemoved を参照してください。
パラメータ
コードサンプル
local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace
ChildRemoved
子供がこの Instance から削除された後に発動します。
Removed は、オブジェクトの親がこの Instance から何かの外に変更されたときに発生します。このイベントは、子供が破壊される (使用中の Instance を使用して) 時にも発生します。注意、このイベントは、子供が破壊される (使用中の Instance:Destroy() を使用して)
この関数は Instance の即座の子供にのみ機能します。子孫をすべて捕獲する機能には Instance.DescendantRemoving を使用してください。
また、Instance.ChildAdded を参照してください。
パラメータ
コードサンプル
local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()
DescendantAdded
子孫が Instance に追加されると、DescendantAdded イベントが発動します。
DescendantAdded は、すべての子孫に対して、オブジェクトを Instance に親にすると、このオブジェクトとすべての子孫の親に個々にイベントが発生します。
開発者は、Instance の即座の子供たちにのみ気をつける必要があります。代わりに Instance.ChildAdded を使用してください。
また、Instance.DescendantRemoving を参照してください。
パラメータ
コードサンプル
local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace
DescendantRemoving
このイベントは、すぐに前 の親Instance の変更を発動させ、子孫 インスタンスが再び2>子孫2>ではなくなります。5> Class.Instance:Destroy()|Destroy()5>
このイベントが発生すると、前に子孫の削除が発生するため、子孫の親はこのイベント発生時に変更されません。如果子孫が親の直接子孫である場合、このイベントはClass.Instance.ChildRemoved の前に発生します。
子孫が子孫を持っている場合、このイベントは、子孫が最初に発動し、その後、子孫の子孫が発動します。
警告
このイベントは、削除される親オブジェクトによって発動します。親オブジェクトを別のものに設定すると、 Parent の子オブジェクトを設定できません。以下は、これを示す例です:
workspace.DescendantRemoving:Connect(function(descendant)
-- Do not manipulate the parent of the descendant in this function!
-- This event fires BECAUSE the parent was manipulated, and the change hasn't happened yet
-- Therefore, it is problematic to change the parent like this:
descendant.Parent = game
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
また、DescendantAdded を参照してください。
パラメータ
コードサンプル
workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil
Destroying
Class.Instance は、接続された関数がまだ使用しているメモリからは削除されないです。ただし、Instance が関数の発生場所で表示される場合は、nil とその子孫は 1>nil1> に親化されます。
Class.Workspace.SignalBehavior プロパティが Enum.SignalBehavior.Immediate に設定されている場合、このイベントは、Instance またはその先祖の 1つが 1> Class.Instance:Destroy() で破壊される直前に即座に発動します。
Class.Workspace.SignalBehavior プロパティが Enum.SignalBehavior.Deferred に設定されている場合、このイベントは次の再開ポイントで発生し、Instance またはその先祖の 1つが 1>Class.Instance:Destroy() で破壊されるときに発生します。
Class.Instance.Destroying イベントをスクリプトの自分の Instance.Destroying に接続すると、スクリプトがコールバックを実行する前に Class.Instance.Destroying されます。つまり、スクリプトは実行されないようになります。
Studio の Instance を手動で削除するなど、Class.Instance を Studio で削除すると、Instance は削除されません。代わりに、親が 2>nil2> に設定されます。5>Class.Instance.AncestryChanged5> を追跡するために 8>Class.
コードサンプル
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())