Object

非推奨を表示

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

作成できません
複製されていません

オブジェクトは Roblox クラスの基本クラスです。Roblox エンジンが定義するすべてのクラスに対するベースクラスです。Roblox エンジンが定義するすべてのメンバーを継承します。オブジェクトを直接作成することはできません。

概要

プロパティ

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

    この読み取りのみの文字列は、Object に属するクラスを表示します。

方法

  • オブジェクトのプロパティが変更されるときに発動するイベントを取得します。

  • IsA(className : string):bool
    並列書き込み

    オブジェクトのクラスが指定されたクラスと一致するか、またはオーバーライドされるかを返します。

イベント

  • オブジェクトのプロパティが変更された直後に即座に発射されますが、いくつかの制限があります。

プロパティ

ClassName

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

この読み取りのみの文字列は、Object に属するクラスを表示します。

このプロパティは、Object:IsA()Instance:FindFirstChildOfClass() など、オブジェクトをタイプで識別するために使用されるさまざまな機能と一緒に使用できます。

このプロパティは、スクリプトで読み取るだけであり、変更することはできません。オブジェクトのクラスを変更したい開発者は、代わりに新しい Object を作成する必要があります。

Class.Object:IsA() とは、オブジェクトがクラスの継承を無視する特定のクラスに属するかどうかをチェックするために使用できます。たとえば:


for _, child in workspace:GetChildren() do
if child.ClassName == "Part" then
print("Found a Part")
-- will find Parts in model, but NOT TrussParts, WedgeParts, etc
end
end

方法

GetPropertyChangedSignal

このメソッドは、Changed イベントと同じように動作するイベントを返しますが、Changed イベントのみが発動することを除きます。一般的に、このメソッドを代わりに Class.Object.Changed|Changed に接続して、プロパティ名をチェッ

Class.ValueBase オブジェクト、例えば IntValueStringValue など、変更後の 0> Class.Object.Changed|Changed0> イベントを発動させる、その内容の ValueBase3> プロパティの変更を検出する方法を提供

このイベントは、接続された関数に引数を渡さないので、変更されたプロパティの値はスクリプト内で直接読み取られる必要があります。

制限

このメソッドによって返されるイベントは、火事

さらに、返されたイベントは、変更されるプロパティの変更が非常に頻繁であっても、および/またはそのようなプロパティの変更ではなくても、発動しない可能性があります。ゲームロジックに影響を与える可能性のあるプロパティの変更については、特に注意してテストすることをお勧めします。

パラメータ

property: string

接続するプロパティ。


戻り値

プロパティが変更されるときに発信される信号。

コードサンプル

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.

Old-to-New Values with Changed

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.

Changed and 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 が返されます。

パラメータ

className: string

オブジェクトのクラスに対するクラスです。 ケースセンシティブ。


戻り値

オブジェクトのクラスが一致しているかどうか、または指定されたクラスの子クラスであるかを記述します。

コードサンプル

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.

Instance:IsA()

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 オブジェクトのような IntValueStringValue などの、このイベントは、オブジェクトの 1>Value1> プロパティが変更されるときにのみ発動します。4>Class.ValueBase

制限

このイベントは、不要な物理的変更、例えばClass.Base

さらに、このイベントは、変更が非常に頻繁に行われるプロパティの変更に対して発動しない場合があり、/またはそのプロパティには発動しない場合があります。ゲームロジックに影響を与える可能性のあるプロパティの変更については、特に注意してテストすることをお勧めします。

パラメータ

property: string

変更されたプロパティの名前。


コードサンプル

This sample demonstrates the subtleties of the Changed event on normal objects and "-Value" objects.

Changed Event

-- 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.

Change Detector

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