A ObjectValue is an object whose purpose is to store a single reference to another object. If this object is duplicated within studio and the value refers to an object also being copied, then the new ObjectValue will point to the copied object instead of the original. Otherwise, the same value is kept. Copying and pasting this object will clear the value field.
The value of this can be set within studio like other reference-type fields (such as Model.PrimaryPart): click the field within the Properties window, then click the object you wish to set it to within the game view or Explorer window. You can clear the field (set it to nil) by clicking the X that appears when you click the field.
Like all "-Value" objects, this single value is stored in the Value property. The Changed event for this (and other objects like it) will fire with the new value being stored in the object, instead of a string representing the property being changed.
local objectValue = Instance.new("ObjectValue")objectValue.Name = "MyBaseplateReference"objectValue.Value = workspace:FindFirstChild("Baseplate")objectValue.Parent = workspace
This event fires whenever the ObjectValue.Value property is changed. It will run with the new value being stored in the argument object, instead of a string representing the property being changed.
This event, like other changed events, can be used to track when an ObjectValue changes and to track the different values that it may change to.
For instance, this even may be useful in games that rely on ObjectValues to track game states and values, such as RPG targeting systems.
local function printName(object)print(object.Name)endworkspace.ObjectValue.Changed:Connect(printName)workspace.ObjectValue.Value = workspace.Part1 --> Part1