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
Identifica la grabación desde la llamada anterior a TryBeginRecording() .Si la operación es Enum.ChangeHistoryService.FinishRecordingOperation.Cancel, este valor se ignora y la grabación se determina por el contexto.
Specifica la operación a tomar.
Tabla opcional de valores para pasar a OnFinishRecording.
Devuelve
Muestras de código
To commit an undo/redo record, you need to first call TryBeginRecording() followed by calling FinishRecording().
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
-- Nothing to do.
return
end
local recording = ChangeHistoryService:TryBeginRecording("Set selection to neon")
if not recording then
-- Handle error here. This indidcates that your plugin began a previous
-- recording and never completed it. You may only have one recording
-- per plugin active at a time.
return
end
for _, part in pairs(parts) do
part.Material = Enum.Material.Neon
end
ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
end)
GetCanRedo
Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.
Devuelve
GetCanUndo
Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.
Devuelve
Redo
Ejecuta la última acción que se deshizo.
Devuelve
ResetWaypoints
Limpia la historia, causando que todos los puntos de deshacer/rehacer se eliminen.
Devuelve
SetEnabled
Establece si el servicio de historia de cambios está habilitado o no.Cuando se establece en falso, la lista de deshacer/rehacer se limpia y no se rellena.Cuando se establece en verdad de nuevo, la lista original no se restaura, pero las operaciones posteriores se añaden a la lista una vez más
Parámetros
Devuelve
SetWaypoint
Este método se descontinuará pronto a favor de TryBeginRecording().
ChangeHistoryService rastrea el historial del plugin como un flujo de cambios de propiedad.SetWaypoint() crea un corte en ese flujo de cambios de propiedad para que las acciones de deshacer y rehacer sepan dónde detenerse.
Por convención, las acciones invocadas por el usuario en Studio deben llamar después de completar su conjunto de cambios a la experiencia.Llamarlo antes de un conjunto de cambios puede limpiar otro plugin que no pudo establecer un punto de ruta, pero es una mala razón para justificar tal uso en tu propio complemento.
Parámetros
Devuelve
Muestras de código
In order for the waypoints to work correctly, you need to set one both before AND after you perform the action that should be able to be undone.
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
Este método inicia una grabación para rastrear los cambios en el aplicación de modeladodatos.Debes llamarlo antes de hacer cambios para evitar futuras advertencias o errores.
Cuando la grabación se complete, llama FinishRecording() con el identificador de grabación devuelto para completar la grabación y actualizar la pila de deshacer/rehacer.
Este método devolverá nil si no comienza una grabación.Las grabaciones fallan si el plugin ya tiene una grabación en progreso, o si el usuario está en Ejecutar o Reproducir modo.
Puedes usar IsRecordingInProgress() para verificar el estado de grabación del complemento.
Parámetros
Nombre de la acción que se realiza adecuada para fines de registro y codificación.
Nombre de la acción que se realiza para mostrar al usuario.
Devuelve
Muestras de código
To commit an undo/redo record, you need to first call TryBeginRecording() followed by calling FinishRecording().
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
-- Nothing to do.
return
end
local recording = ChangeHistoryService:TryBeginRecording("Set selection to neon")
if not recording then
-- Handle error here. This indidcates that your plugin began a previous
-- recording and never completed it. You may only have one recording
-- per plugin active at a time.
return
end
for _, part in pairs(parts) do
part.Material = Enum.Material.Neon
end
ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
end)
Undo
Deshace la última acción tomada, para la cual existe un punto de ruta.
Devuelve
Eventos
OnRecordingFinished
Parámetros
Nombre de la acción que se realiza adecuada para fines de registro y codificación.
Nombre de la acción que se realiza para mostrar al usuario.
El identificador de la grabación.
Tabla opcional de FinishOperation() .
OnRecordingStarted
Parámetros
Nombre de la acción que se realiza adecuada para fines de registro y codificación.
Nombre de la acción que se realiza para mostrar al usuario.
OnRedo
Se despedida cuando el usuario revierte el comando de deshacer. Waypoint describe la acción de tipo que se ha revertido.
Parámetros
OnUndo
Se despedaza cuando el usuario deshace una acción en el estudio. Waypoint describe el tipo de acción que se ha deshecho.