GetPropertyChangedSignal
This method returns an event that behaves exactly like the Changed
event, except that the event only fires when the given property changes. It’s generally a good idea to use this method instead of a connection to Changed
with a function that checks the property name. Subsequent calls to this method on the same object with the same property name return the same event.
print(object:GetPropertyChangedSignal("Name") == object:GetPropertyChangedSignal("Name")) --> always true
ValueBase
objects, such as IntValue
and StringValue
, use a modified Changed
event that fires with the contents of the Value
property. As such, this method provides a way to detect changes in other properties of those objects. For example, to detect changes in the Name
property of an IntValue
, use IntValue:GetPropertyChangedSignal("Name"):Connect(someFunc)
since the Changed
event of IntValue
objects only detect changes on the Value
property.
Parameters
Name | Type | Default | Description |
---|---|---|---|
|
Returns
Return Type | Summary |
---|---|
Code Samples
Old-to-New Values with Changed
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") -- Save the current state 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) -- Make some changes part.BrickColor = BrickColor.new("Really red") part.BrickColor = BrickColor.new("Really blue")
Changed and GetPropertyChangedSignal
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 -- Manual detection of a property change local function onChanged(property) if property == "BrickColor" then onBrickColorChanged() end end -- Connect both events 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")