Object
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
オブジェクトは Roblox クラスの基本クラスです。Roblox エンジンが定義するすべてのクラスに対するベースクラスです。Roblox エンジンが定義するすべてのメンバーを継承します。オブジェクトを直接作成することはできません。
概要
方法
オブジェクトのプロパティが変更されるときに発動するイベントを取得します。
オブジェクトのクラスが指定されたクラスと一致するか、またはオーバーライドされるかを返します。
イベント
オブジェクトのプロパティが変更された直後に即座に発射されますが、いくつかの制限があります。
プロパティ
ClassName
この読み取りのみの文字列は、Object に属するクラスを表示します。
このプロパティは、Object:IsA() や Instance:FindFirstChildOfClass() など、オブジェクトをタイプで識別するために使用されるさまざまな機能と一緒に使用できます。
このプロパティは、スクリプトで読み取るだけであり、変更することはできません。オブジェクトのクラスを変更したい開発者は、代わりに新しい Object を作成する必要があります。
Class.Object:IsA() とは、オブジェクトがクラスの継承を無視する特定のクラスに属するかどうかをチェックするために使用できます。たとえば:
for _, child in workspace:GetChildren() doif child.ClassName == "Part" thenprint("Found a Part")-- will find Parts in model, but NOT TrussParts, WedgeParts, etcendend
方法
GetPropertyChangedSignal
このメソッドは、Changed イベントと同じように動作するイベントを返しますが、Changed イベントのみが発動することを除きます。一般的に、このメソッドを代わりに Class.Object.Changed|Changed に接続して、プロパティ名をチェッ
Class.ValueBase オブジェクト、例えば IntValue や StringValue など、変更後の 0> Class.Object.Changed|Changed0> イベントを発動させる、その内容の ValueBase3> プロパティの変更を検出する方法を提供
このイベントは、接続された関数に引数を渡さないので、変更されたプロパティの値はスクリプト内で直接読み取られる必要があります。
制限
このメソッドによって返されるイベントは、火事
さらに、返されたイベントは、変更されるプロパティの変更が非常に頻繁であっても、および/またはそのようなプロパティの変更ではなくても、発動しない可能性があります。ゲームロジックに影響を与える可能性のあるプロパティの変更については、特に注意してテストすることをお勧めします。
パラメータ
接続するプロパティ。
戻り値
プロパティが変更されるときに発信される信号。
コードサンプル
This code sample demonstrates how to save a value before a changed event fires on it in order to get more information about a change.
local part = Instance.new("Part")
local currentColor = part.BrickColor
local function onBrickColorChanged()
local newColor = part.BrickColor
print("Color changed from", currentColor.Name, "to", newColor.Name)
currentColor = newColor
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Really blue")
This code sample demonstrates the equivalence of the Changed event and event returned by GetPropertyChangedSignal.
local part = Instance.new("Part")
local function onBrickColorChanged()
print("My color is now " .. part.BrickColor.Name)
end
local function onChanged(property)
if property == "BrickColor" then
onBrickColorChanged()
end
end
part:GetPropertyChangedSignal("BrickColor"):Connect(onBrickColorChanged)
part.Changed:Connect(onChanged)
-- Trigger some changes (because we connected twice,
-- both of these will cause two calls to onBrickColorChanged)
part.BrickColor = BrickColor.new("Really red")
part.BrickColor = BrickColor.new("Institutional white")
IsA
IsA は、オブジェクトのクラスが 同等ですか または指定のクラスの 子クラス である文字列とを返します。この関数は、他の言語の インス
最も一般的に、この関数はオブジェクトが Class.Part のような種類のパーツであるかどうかをテストするために使用されます
local function paintFigure(character, color)
-- キャラクターの子オブジェクトをイテレート
for _, child in character:GetChildren() do
-- シャツ、パンツ、ヒューマノイドなど、非パーツオブジェクトをフィルターアウト
-- R15 はメッシュパーツを使用し、R6 はパーツを使用しますので、ここでベースパーツを使用して両方を検出します:
if child:IsA("BasePart") then
child.BrickColor = color
end
end
end
paintFigure(game.Players.Player.Character, BrickColor.new("Bright blue"))
すべてのクラスは Object から継承されるため、 object:IsA("Object") を呼び出すと常に true が返されます。
パラメータ
オブジェクトのクラスに対するクラスです。 ケースセンシティブ。
戻り値
オブジェクトのクラスが一致しているかどうか、または指定されたクラスの子クラスであるかを記述します。
コードサンプル
Demonstrates determining the class of Workspace using Instance:IsA()
Workspace is of class 'Workspace', so the first statement is true. Workspace is not of class 'BasePart', so the second statement is false. Workspace inherits from Instance and therefore is of class 'Instance', so the third statement is true.
local Workspace = game:GetService("Workspace")
print(Workspace:IsA("Workspace")) -- true
print(Workspace:IsA("BasePart")) -- false
print(Workspace:IsA("Instance")) -- true
イベント
Changed
このイベントは、オブジェクトプロパティが変更された直後に発生し、ほとんどの使用ケースに使用されます (下の制限を参照してください)。変更されたプロパティの新しい値は は パラメーターとして渡されるため、object[property] を使用してアクセスする必要があります。たとえば:
object.Changed:Connect(function(property)
print("The new property's value is", object[property])
end)
特定のプロパティの変更を聞くことにだけ興味がある場合は、GetPropertyChangedSignal() メソッドを代わりに使用してください。
Class.ValueBase オブジェクトのような IntValue や StringValue などの、このイベントは、オブジェクトの 1>Value1> プロパティが変更されるときにのみ発動します。4>Class.ValueBase
制限
このイベントは、不要な物理的変更、例えばClass.Base
さらに、このイベントは、変更が非常に頻繁に行われるプロパティの変更に対して発動しない場合があり、/またはそのプロパティには発動しない場合があります。ゲームロジックに影響を与える可能性のあるプロパティの変更については、特に注意してテストすることをお勧めします。
パラメータ
変更されたプロパティの名前。
コードサンプル
This sample demonstrates the subtleties of the Changed event on normal objects and "-Value" objects.
-- Demonstrate the Changed event by creating a Part
local part = Instance.new("Part")
part.Changed:Connect(print)
-- This fires Changed with "Transparency"
part.Transparency = 0.5
-- Similarly, this fires Changed with "Number"
part.Name = "SomePart"
-- Since changing BrickColor will also change other
-- properties at the same time, this line fires Changed
-- with "BrickColor", "Color3" and "Color3uint16".
part.BrickColor = BrickColor.Red()
-- A NumberValue holds a double-precision floating-point number
local vNumber = Instance.new("NumberValue")
vNumber.Changed:Connect(print)
-- This fires Changed with 123.456 (not "Value")
vNumber.Value = 123.456
-- This does not fire Changed
vNumber.Name = "SomeNumber"
-- A StringValue stores one string
local vString = Instance.new("StringValue")
vString.Changed:Connect(print)
-- This fires Changed with "Hello" (not "Value")
vString.Value = "Hello"
This code sample demonstrates the Changed event firing within a parent object.
local object = script.Parent
local function onChanged(property)
-- Get the current value of the property
local value = object[property]
-- Print a message saying what changed
print(object:GetFullName() .. "." .. property .. " (" .. typeof(value) .. ") changed to " .. tostring(value))
end
object.Changed:Connect(onChanged)
-- Trigger a simple change in the object (add an underscore to the name)
object.Name = "_" .. object.Name