ChangeHistoryService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Los desarrolladores de plugins deben usar ChangeHistoryService para decirle a Studio cómo deshacer y rehacer los cambios que sus plugins hacen a las experiencias al grabar.Antes de hacer cambios, un plugin llama ChangeHistoryService:TryBeginRecording() , recordando el identificador que asigna, luego después de hacer cambios, el Plugin llama ChangeHistoryService:FinishRecording() para completar la grabación.
Los plugins también pueden invocar programáticamente un deshacer o rehacer a través de ChangeHistoryService:Undo() o ChangeHistoryService:Redo() .
ChangeHistoryService no está habilitado en tiempo de ejecución, por lo que llamar a sus métodos en una experiencia en ejecución no tiene efecto.
Resumen
Métodos
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
Se comunica con Studio que la grabación identificada está terminada y para tomar la operación final para completar la grabación.
Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.
Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.
Ejecuta la última acción que se deshizo.
Limpia la historia, causando que todos los puntos de deshacer/rehacer se eliminen.
Establece si el servicio de historia de cambios está habilitado o no.
Establece un nuevo punto de ruta que se puede utilizar como punto de deshacer o de rehacer.
Empieza a rastrear los cambios realizados al modelo de datos en una grabación.
Deshace la última acción tomada, para la cual existe un punto de ruta.
Eventos
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
Se desfuega cuando el usuario completa una acción. Los parámetros provienen de TryBeginRecording() y FinishRecording().
Se despedaza cuando el usuario comienza una acción. Los parámetros provienen de TryBeginRecording() .
Se despedida cuando el usuario revierte el comando de deshacer. Waypoint describe la acción de tipo que se ha revertido.
Se despedaza cuando el usuario deshace una acción en el estudio. Waypoint describe el tipo de acción que se ha deshecho.
Propiedades
Métodos
FinishRecording
Parámetros
Devuelve
Muestras de código
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
local toolbar = plugin:CreateToolbar("Example Plugin")
local button = toolbar:CreateButton("Neon it up", "", "")
button.Click:Connect(function()
local parts = {}
for _, part in pairs(Selection:Get()) do
if part:IsA("BasePart") then
parts[#parts + 1] = part
end
end
if #parts < 1 then
-- Nada que hacer.
return
end
local recording = ChangeHistoryService:TryBeginRecording("Set selection to neon")
if not recording then
-- Manija el error aquí. Esto indica que tu plugin comenzó una anterior
-- grabando y nunca lo completó. Solo puedes tener una grabación
-- por plugin activo a la vez.
return
end
for _, part in pairs(parts) do
part.Material = Enum.Material.Neon
end
ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
end)
Redo
Devuelve
ResetWaypoints
Devuelve
SetWaypoint
Parámetros
Devuelve
Muestras de código
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
local toolbar = plugin:CreateToolbar("Example Plugin")
local button = toolbar:CreateButton("Neon it up", "", "")
button.Click:Connect(function()
local parts = {}
for _, part in pairs(Selection:Get()) do
if part:IsA("BasePart") then
parts[#parts + 1] = part
end
end
if #parts > 0 then
-- Calling SetWaypoint before the work will not cause any issues, however
-- it is redundant, only the call AFTER the work is needed.
--ChangeHistoryService:SetWaypoint("Setting selection to neon")
for _, part in pairs(parts) do
part.Material = Enum.Material.Neon
end
-- Call SetWaypoint AFTER completing the work
ChangeHistoryService:SetWaypoint("Set selection to neon")
else
-- Nothing to do. You do not need to call SetWaypoint in the case where
-- the action did not end up making any changes to the experience.
end
end)
TryBeginRecording
Parámetros
Devuelve
Muestras de código
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
local toolbar = plugin:CreateToolbar("Example Plugin")
local button = toolbar:CreateButton("Neon it up", "", "")
button.Click:Connect(function()
local parts = {}
for _, part in pairs(Selection:Get()) do
if part:IsA("BasePart") then
parts[#parts + 1] = part
end
end
if #parts < 1 then
-- Nada que hacer.
return
end
local recording = ChangeHistoryService:TryBeginRecording("Set selection to neon")
if not recording then
-- Manija el error aquí. Esto indica que tu plugin comenzó una anterior
-- grabando y nunca lo completó. Solo puedes tener una grabación
-- por plugin activo a la vez.
return
end
for _, part in pairs(parts) do
part.Material = Enum.Material.Neon
end
ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
end)