Instance

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

作成できません
閲覧できません

インスタンスは、Roblox クラスの階層にあるすべてのクラスのベースクラスです。インスタンスオブジェクトを直接作成することはできません。

インスタンスには、コードでオブジェクトを作成するための特別な関数があります。この関数は Instance.new() という名前でクラスを取ります。この関数はクラスの名前をパラメーターとして取り、作成されたオブジェクトを返します。抽象クラスとサービスはインスタンス.new 関数で作成できません。

概要

プロパティ

  • 並列読み取り

    Class.Instance とその子孫を Class.Instance:Clone() でクローンでき、保存/公開できるかどうかを決定します。

  • Capabilities:SecurityCapabilities
    並列読み取り

    このコンテナ内のスクリプトに使用できるコンピューターのセット。

  • 並列読み取り

    Class.Instance のユニークでない識別子。

  • 複製されていません
    並列読み取り

    Class.Instance の親を決定します。

  • 非表示
    並列読み取り
    非推奨

    Class.CoreGui オブジェクトを保護するために使用されていた古いプロパティ。

  • 複製されていません
    並列読み取り

    インスタンスをサンドボックスコンテナに変換します。

  • UniqueId:UniqueId
    複製されていません
    スクリプト作成できません
    並列読み取り

方法

  • AddTag(tag : string):void

    インスタンスにタグを適用します。

  • この関数は、インスタンスの子をすべて破壊します。

  • インスタンスとそのすべての子孫をコピーし、 Class.Instance.Archivable|Archivable ではないインスタンスをコピーしません。

  • Destroy():void

    Class.Instance.Parent プロパティを nil に設定し、Instance.Parent プロパティをロックし、すべての接続を切断し、すべての子供に Destroy を呼び出します。

  • 並列書き込み

    Class.Instance の最初の祖先が、Instance.Name が与えられた名前と同等です。

  • 並列書き込み

    Class.Instance の最初の祖先が、Object.ClassName が与えられたキッズネームと同等であることが示されます。

  • 並列書き込み

    Class.Instance の最初の祖先が、Object:IsA() が与えられたキャッスト名のために返されます。

  • FindFirstChild(name : string,recursive : bool):Instance
    並列書き込み

    Class.Instance が与えられた名前で見つかった最初の子を返します。

  • 並列書き込み

    Class.Instance の最初の子、ClassName の Class.Instance は、与えられたクラス名と同じです。

  • FindFirstChildWhichIsA(className : string,recursive : bool):Instance
    並列書き込み

    Class.Instance の最初の子 Object:IsA() について、Class.Object:IsA() が与えられたキッズ名のために true が返されます。

  • 並列書き込み

    Class.Instance.Name を与えた最初の子孫を返します。

  • 並列書き込み

    インスタンスに関連付けられた Actor を返します。

  • GetAttribute(attribute : string):Variant
    並列書き込み

    与えられた属性名に割り当てられた値を返します。

  • 与えられた属性が変更されるときに発動するイベントを返します。

  • 並列書き込み

    インスタンスの属性の辞書を返します。

  • GetChildren():Instances
    並列書き込み

    すべてのインスタンスの子を含むアレイを返します。

  • GetDebugId(scopeLength : number):string
    閲覧できません
    プラグインのセキュリティ

    Roblox が内部で使用するデバッグ ID のコード化された文字列をRoblox(ロブロックス)します。

  • 並列書き込み

    インスタンスのすべての子孫を含むアレイを返します。

  • 並列書き込み

    インスタンスの祖先を記述する文字列を返します。

  • GetStyled(name : string):Variant
  • 並列書き込み

    インスタンスに適用されたすべてのタグのアレイを取得します。

  • 並列書き込み

    インスタンスにタグが与えられているかどうかをチェックします。

  • IsAncestorOf(descendant : Instance):bool
    並列書き込み

    Class.Instance が与えられた子孫の祖先である場合、Class.Instance は true です。

  • 並列書き込み

    Class.Instance が与えられた祖先の子孫である場合、Class.Instance は true です。

  • RemoveTag(tag : string):void

    インスタンスからタグを削除します。

  • SetAttribute(attribute : string,value : Variant):void

    与えられた名前のアトリビュートを与えられた値に設定します。

  • WaitForChild(childName : string,timeOut : number):Instance
    イールド可能

    Class.Instance の子を返し、指定された名前で返します。子が存在しない場合は、子が存在するまで現在のスレッドを返します。

イベント

プロパティ

Archivable

並列読み取り

このプロパティは、エクスペリエンスが公開されたり保存されたりするときにインスタンスを含めるかどうかを決定します。Clone() をインスタンスの祖先に直接呼び出すと、Clone() が返されます。

コピーオプションを使用して Duplicate または Copy / Paste を使用してオブジェクトをコピーすると、自分の 1> Class.Instance.Archivable|Archivable プロパティを無視し、コピーのための4> Class.Instance.Archivable|Archivable を設定し


local part = Instance.new("Part")
print(part:Clone()) --> Part
part.Archivable = false
print(part:Clone()) --> nil

Capabilities

SecurityCapabilities
並列読み取り
Robloxのスクリプトセキュリティ

このインスタンス内のスクリプトに使用できるコンピューターのセットを設定します。コンピューターのプロパティを有効にする必要があります。Instance.Sandboxed

このプロパティは実験的な機能によって使用されています。スクリプトカプシティページ参照。

Name

並列読み取り

Class.Instance のユニークでない識別子。

このプロパティは、オブジェクトを識別する唯一の識別子です。名前は必ずしもユニークな識別子ではありませんが、オブジェクトの子供の複数は同じ名前を共有することがあります。名前はオブジェクトのハイエラルーィを整理し、スクリプトが特定のオブジェクトにアクセスできるようにするために使用されます。インスタンスの名前は 100 文字

オブジェクトの名前は、次のメソッドを使用してデータモデル階層を介してオブジェクトにアクセスするために常に使用されます:


local baseplate = workspace.Baseplate
local 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 workspace
local part = Instance.new("Part")
part.Parent = workspace
-- Instance new can also take Parent as a second parameter
Instance.new("NumberValue", workspace)

Class.DataModel インスタンスが親になっている間、特定のプロパティに変更が行われると、エンジンは追加のワークを内部で実行する必要があります (たとえば、レプリケーション、レンダリング、およびGUIレイアウトの場合)。必要に応じて、インスタンスのプロパティを変更する前に Class.DataModel

オブジェクトレプリケーション

サーバーが作成するオブジェクトは、コピーされたオブジェクトに親化されるまでクライアントにはレプリケートされません。当サーバーでオブジェクトを作成する場合、多くのプロパティを設定することをお勧めします。これにより、オブジェクトがコピーされるたびに、親化されることが保証されます。


local part = Instance.new("Part") -- ここで 2 番目のパラメーターを使用しないでください
part.Anchored = true
part.BrickColor = BrickColor.new("Really red")
-- 多くの他のプロパティ変更がここにこれかもしれません...
-- 親を最後に設定してください!
part.Parent = workspace

しかし、Model の親がまだ設定されていないパーツに親を与える場合、そのパーツを親にすることは、モデルがまだレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケートされていないため、モデルがレプリケ

RobloxLocked

非表示
並列読み取り
プラグインのセキュリティ

このプロパティは、CoreGui サービスのユーザーによって不正な方法で変更されることから、オブジェクトを保護します。それはデプレートされていますが、何もしません。

Sandboxed

複製されていません
並列読み取り
Robloxのスクリプトセキュリティ

インスタンスをサンドボックスコンテナに変更します。サンドボックスコンテナは、特定のコンテナ内のスクリプトのアクションを制限する試作機能です。

詳細は、スクリプトカプシティページを参照してください。

UniqueId

UniqueId
複製されていません
スクリプト作成できません
並列読み取り
Robloxのセキュリティ

方法

AddTag

void

このメソッドは、タグがすでに適用されている場合でもタグにインスタンスにタグを適用します。タグを成功して追加すると、 CollectionService:GetInstanceAddedSignal() によって作成されたシグナルが発動します。

インスタンスにタグを付けると、タグの機能を提供するためにいくつかのリソースが使用されることがあります。たとえば、イベント接続やテーブルなどです。メモリ漏れを防ぐためには

パラメータ

tag: string

戻り値

void

ClearAllChildren

void

この関数は、インスタンスの子をすべて破壊します。

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() do
if instance:IsA("BasePart") then
instance:Destroy()
end
end

戻り値

void

コードサンプル

Instance:ClearAllChildren

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

クローン は、Archivable 以外のすべてのインスタンスのコピーを作成します。このメソッドは、 Class.Instance

クローンされたインスタンスに ObjectValue.Value などの参照プロパティが設定されている場合、コピーのプロパティの値は、オリジナルの値によります:

  • 参照プロパティがクローンされたインスタンスを参照している場合、コピーはコピーに参照します。
  • 参照プロパティがクローンされていないオブジェクトを参照している場合、コピーに同じ値が保持されます。

戻り値

コードサンプル

Cloning an Instance

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

void

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 = nil
wait(2)
object.Parent = workspace

オブジェクトを期限付きで破壊するには、Debris:AddItem() を使用します。


戻り値

void

コードサンプル

Instance:Destroy()

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() を参照してください。

パラメータ

name: string

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> も存在し、クラスの相続を尊重

パラメータ

className: string

Class.Object.className を検索する必要があります。


戻り値

Class.Instance が見つかりました。

FindFirstAncestorWhichIsA

並列書き込み

Class.Instance の最初の祖先が、Object:IsA() が与えられたキャッスト名のために返されます。

この関数は、Instance.Parent のすぐ下にあるインスタンスの即座に開始し、DataModel に向上します。マッチする祖先が見つからない場合は、nilを返します。

Class.Instance:FindFirstAncestorOfClass() とは異なり、この関数は Object:IsA() を使用しています。これはクラスの相続に対応します。たとえば:


print(part:IsA("Part")) --> true
print(part:IsA("BasePart")) --> true
print(part:IsA("Instance")) --> true

ですから、次のコードサンプルは、BasePart の最初の祖先を返します、WedgePartMeshPart または 2>Class.Part2> であるかどうかにかかわらず。


local part = object:FindFirstAncestorWhichIsA("BasePart")

また、Instance:FindFirstAncestor() を参照してください。

パラメータ

className: string

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 then
part.Transparency = 0.5
end

プロパティに一致する子を見つける

オブジェクトの 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 = part
local c = part.Color --> 色3
local c2 = part:FindFirstChild("Color") --> The Folder

この方法で FindFirstChild() を使用すると、新しいプロパティの紹介がコードにリスクを与えることなくなります。

パフォーマンスノート

FindFirstChild() は、ドットオペレーターを使用するよりも約 20% 長く、および参照

パラメータ

name: string

検索する Instance.Name

recursive: bool

検索を再帰的に実行するかどうか。

既定値: false

戻り値

Class.Instance が見つかりました。

コードサンプル

Instance:FindFirstChild

local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end

FindFirstChildOfClass

並列書き込み

Class.Instance の最初の子、ClassName の Class.Instance は、与えられたクラス名と同じです。

一致する子供が見つからない場合、この関数は nil を返します。

Class.Instance:FindFirstChildWhichIsA() この関数は、クラスが指定された名前空間に一致するオブジェクトのみを返します。クラス遺継を無視します。

名前で子を検索している開発者は、代わりに Instance:FindFirstChild() を使用する必要があります。

パラメータ

className: string

Class.Object.className を検索する必要があります。


戻り値

Class.Instance が見つかりました。

コードサンプル

Instance:FindFirstChildOfClass

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 の最初の子、WedgePartMeshPart または 2>Class.Part2> であるかどうかにかかわらず、最初の 5>Class.BasePart5> 子を返します。


local part = object:FindFirstChildWhichIsA("BasePart")

名前で子を検索している開発者は、代わりに Instance:FindFirstChild() を使用する必要があります。

パラメータ

className: string

検索する Object.ClassName

recursive: bool

検索を再帰的に実行するかどうか。

既定値: false

戻り値

Class.Instance が見つかりました。

FindFirstDescendant

並列書き込み

Class.Instance.Name を与えた最初の子孫を返します。

このメソッドは使用できません。インスタンスの最初の子孫を見つけるには、recursive の代わりに Instance:FindFirstChild() パラメータを使用してください。

パラメータ

name: string

Class.Instance.Name を検索する。


戻り値

Class.Instance が見つかりました。

GetActor

並列書き込み

Class.Instance が Actor である場合、Actor 自体が返されます。そうでない場合、最も近い祖先 1>Class.Actor1> が返されます。4>Class.Actor4> が祖先でない場合、結果は 7>nil7> です。


戻り値

Class.Actor が見つかりました。

GetAttribute

Variant
並列書き込み

このメソッドは、指定された属性名に割り当てられた値を返します。属性名が割り当てられていない場合は、nilが返されます。

たとえば、次のコードスナップは、次にインスタンスの 最初の位置 属性の値を取得します:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local initialPosition = instance:GetAttribute("InitialPosition")
print(initialPosition)

参照してください

パラメータ

attribute: string

取得される属性の名前。


戻り値

Variant

与えられた属性名に割り当てられた値。如果属性が割り当てられていない場合は、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 を参照して、インスタンス上の任意の属性が変更されるときに実行されます。

パラメータ

attribute: string

変更信号が返される特定のアトリビュートの名前です。


戻り値

与えられた属性が変更されるときに発動するイベント。

GetAttributes

並列書き込み

このメソッドは、キーがアトリビュートの名前であり、値が非- nil 値の場合、キーの値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が鍵の名前であるため、鍵の値が��

たとえば、次のコードのスナップショットは、インスタンスの属性と値を出力します:


local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
part:SetAttribute("CanUse", true)
for name, value in part:GetAttributes() do
print(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

Instances
並列書き込み

すべてのインスタンスの直接子を含むアレイ (数値でインデックスされたテーブル) を返します。また、オブジェクトの Class.Instance.Parent|Parent が等しいオブジェクトの Class.Instance の子である場合も同様です。数値または一般的な for-ループを使用してイテレートできます:


-- 数値の for-ループ例
local children = workspace:GetChildren()
for i = 1, #children do
local child = children[i]
print(child.Name .. " is child number " .. i)
end

-- 一般的な for-ループ例
local children = workspace:GetChildren()
for i, child in children do
print(child.Name .. " is child number " .. i)
end

子供たちは、オブジェクトに Parent プロパティを設定された順序でソートされます。

また、GetDescendants 関数を参照してください。


戻り値

Instances

インスタンスの子を含むアレイ。

コードサンプル

Instance:GetChildren

local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end

GetDebugId

閲覧できません
プラグインのセキュリティ

Roblox が内部で使用するデバッグ ID のコード化された文字列をRoblox(ロブロックス)します。

注:

  • このアイテムは保護されています。 Script または LocalScript で使用しようとすると、エラーが発生します
  • デバッグID は、デバッグプロセスで使用される ID です。これにより、デバッガーはプログラムの実行前に各インストラクションを読むことができます。Roblox のすべてのオブジェクトはプロセスとして実行され、必要に応じてデバッグできます。
  • これは、同じ名前のオブジェクトを別々に区別する必要があるプラグインにとって便利です (例: 同じ名前のオブジェクト)

パラメータ

scopeLength: number

スコープの長さ。

既定値: 4

戻り値

デバッグ ID ストリン文字列。

コードサンプル

Instance:GetDebugId

print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12

GetDescendants

並列書き込み

このオブジェクトメソッドは、そのオブジェクトのすべての子供を含むアレイを返します。Instance:GetChildren() は、オブジェクトの即座の子供だけを返しますが、このメソッドは、オブジェクトの子供、その子供の子供、などとすべての子供を見つけます。


戻り値

インスタンスの子孫を含むアレイ。

コードサンプル

Instance:GetDescendants

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 の完全な名前。

コードサンプル

Instance:GetFullName

-- 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
Instance:GetFullName Lua Implementation

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

GetStyled

Variant

パラメータ

name: string

戻り値

Variant

GetTags

並列書き込み

このメソッドは、タグ を適用したインスタンスのアレイを返します。AddTag() で、プロパティ ウィンドウで、または実行時に 2>Class.Instance:AddTag()|AddTag()2> でタグを追加できます。

このメソッドは、インスタンス上の複数のタグで何かをするときに便利です。ただし、このメソッドを使用して、単一のタグの存在をチェックすることは効率が悪いため、HasTag() を使用して、特定のタグをチェックする代わりに使用してはなりません。


戻り値

HasTag

並列書き込み

このメソッドは、提供されたタグがオブジェクトに追加された場合に true を返します。プロパティ ウィンドウでタグを追加するか、実行時に AddTag() でタグを追加できます。

パラメータ

tag: string

戻り値

IsAncestorOf

並列書き込み

Class.Instance が与えられた子孫の祖先である場合、Class.Instance は true です。

オブジェクトの Instance.Parent は、オブジェクトの Instance.Parent またはその親の 1>Class.Instance.Parent1> が 4>Class.Instance4> に設定されている場合、オブジェクトの祖先として扱われます。

また、 Instance:IsDescendantOf() を参照してください。

パラメータ

descendant: Instance

Class.Instance の子孫。


戻り値

Class.Instance が与えられた子孫の祖先である場合は、Class.Instance はその後継者です。

コードサンプル

Instance:IsAncestorOf()

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() を参照してください。

パラメータ

ancestor: Instance

祖先 Instance


戻り値

Class.Instance が与えられた祖先の子孫である場合は、Class.Instance は与えられます。

コードサンプル

Instance:IsDescendantOf

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

void

このメソッドはインスタンスからタグを削除します。タグがない場合でもエラーは発生しません。タグを削除すると、CollectionService:GetInstanceRemovedSignal() によって作成されたシグナルが発信されます。

インスタンスにタグをマークすると、タグの機能を提供するためにいくつかのリソースが使用されることがよくあります。たとえば、イベント接続やテーブルなどです。メモリ漏れを防ぐためには、タグが必要なくなったときにこれらをきれいにする (ディスコネクト、nil など) が良いです。

パラメータ

tag: string

戻り値

void

SetAttribute

void

このメソッドは、与えられた名前のアトリビュートを与えられた値に設定します。如果与えられた値が nil である場合、アトリビュートはデフォルトで返されるため、削除されます。

たとえば、次のコードスナップは、インスタンスの 最初の位置 属性を Vector3.new(0, 10, 0) に設定します:


local part = workspace.Part
part:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))

制限

名前の要件と制限:

  • 名前には、アルファ数字のみ使用し、下矢印を使用してください。
  • 空き文字、またはユニークなシンボルは許可されていません。
  • 文字列は 100 文字以下でなければなりません。
  • 名前は、 RBX 以外の Roblox コアスクリプトで始まることはできません。

アトリビュートをサポートされていないタイプに設定入力ようとしているときにエラーが発生します。

参照してください:

パラメータ

attribute: string

設定される属性の名前です。

value: Variant

指定された属性を設定する値。


戻り値

void

WaitForChild

イールド可能

Class.Instance の子を timeOut に戻ります。子が存在しない場合は、子が存在するまで現在のスレッドを返します。nil パラメーターが指定されている場合、このメソッドは指定された数秒後に時間切れになり、1>0>nil1>0> を返します。

主な使用

WaitForChild() は、LocalScript のクライアント側コードで実行されているコードの重要な側面です。Roblox

注意

  • この関数は、呼び出し時に与えられた名前の子が存在する場合には返さない。
  • Instance:FindFirstChild() は、オブジェクトが存在すると仮定されているオブジェクトの WaitForChild() に対するより効率的な代替です。
  • このメソッドを 5 秒以上にわたって呼び出し、timeOut パラメーターが指定されていない場合は、スレッドが無期限で生成できる可能性があります。

パラメータ

childName: string

Class.Instance.Name を検索する必要があります。

timeOut: number

オプションのタイムアウトパラメーター。


戻り値

Class.Instance が見つかりました。

コードサンプル

Instance:WaitForChild

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 イベントを使用してください。

パラメータ

child: Instance

Class.Instance の親が変更された Instance.Parent

parent: Instance

Class.Instance の新しい Instance は、Instance.Parent の親が変更されました。


コードサンプル

Instance.AncestryChanged

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() を参照してください。これは、特定の属性が変更されるときに発動するイベントを返します。

パラメータ

attribute: string

変更された属性の名前。


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 を参照してください。

パラメータ

child: Instance

追加された Instance


コードサンプル

Instance.ChildAdded

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 を参照してください。

パラメータ

child: Instance

削除された Instance


コードサンプル

Instance.ChildRemoved

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 を参照してください。

パラメータ

descendant: Instance

追加された Instance


コードサンプル

Instance.DescendantAdded

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 を参照してください。

パラメータ

descendant: Instance

削除される Instance があります。


コードサンプル

Instance.DescendantRemoving

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.


コードサンプル

Using the Destroying Event (Immediate signals)

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()
Using the Destroying Event (Deferred signals)

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