Changed
The Changed event fires right after most properties change on objects. It is possible to find the present value of a changed property by using object[property]
. To get the value of a property before it changes, you must have stored the value of the property before it changed.
If you are only interested in listening to the change of a specific property, consider using the GetPropertyChangedSignal
method instead to get an event that only fires when a given property changes.
This event does not fire for physics-related changes, like when the CFrame
, Velocity
, RotVelocity
, Position
, Orientation
and CFrame
properties of a BasePart
change due to gravity. To detect changes in these properties, consider using a physics-based event like RunService.Stepped
or BasePart.Touched
. A while-true-do loop can also work.
For “-Value” objects, this event behaves differently: it only fires when the Value
property changes. See individual pages for IntValue
, StringValue
, etc for more information. To detect other changes in these objects, you must use GetPropertyChangedSignal
instead.
Parameters
Name | Type | Default | Description |
---|---|---|---|
|
The name of the property that changed. |
Code Samples
Changed Event
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 = .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"
Change Detector
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