ChangeHistoryService

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
Servicio

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?):()
    Seguridad del plugin

    Se comunica con Studio que la grabación identificada está terminada y para tomar la operación final para completar la grabación.

  • Seguridad del plugin

    Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.

  • Seguridad del plugin

    Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.

  • Seguridad del plugin
  • Redo():()
    Seguridad del plugin

    Ejecuta la última acción que se deshizo.

  • Seguridad del plugin

    Limpia la historia, causando que todos los puntos de deshacer/rehacer se eliminen.

  • SetEnabled(state : boolean):()
    Seguridad del plugin

    Establece si el servicio de historia de cambios está habilitado o no.

  • SetWaypoint(name : string):()
    Seguridad del plugin

    Establece un nuevo punto de ruta que se puede utilizar como punto de deshacer o de rehacer.

  • TryBeginRecording(name : string,displayName : string?):string?
    Seguridad del plugin

    Empieza a rastrear los cambios realizados al modelo de datos en una grabación.

  • Undo():()
    Seguridad del plugin

    Deshace la última acción tomada, para la cual existe un punto de ruta.

Eventos

Propiedades

Métodos

FinishRecording

()
Seguridad del plugin

Parámetros

identifier: string

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.

Valor predeterminado: ""

Specifica la operación a tomar.

Valor predeterminado: ""
finalOptions: Dictionary

Tabla opcional de valores para pasar a OnFinishRecording.

Valor predeterminado: ""

Devuelve

()

Muestras de código

To commit an undo/redo record, you need to first call TryBeginRecording() followed by calling FinishRecording().

ChangeHistoryService:TryBeginRecording

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

Seguridad del plugin

Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.


Devuelve

GetCanUndo

Seguridad del plugin

Devuelve si hay acciones que se pueden deshacer y, si hay algunas, devuelve la última de ellas.


Devuelve

IsRecordingInProgress

Seguridad del plugin

Parámetros

identifier: string
Valor predeterminado: ""

Devuelve

Redo

()
Seguridad del plugin

Ejecuta la última acción que se deshizo.


Devuelve

()

ResetWaypoints

()
Seguridad del plugin

Limpia la historia, causando que todos los puntos de deshacer/rehacer se eliminen.


Devuelve

()

SetEnabled

()
Seguridad del plugin

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

state: boolean
Valor predeterminado: ""

Devuelve

()

SetWaypoint

()
Seguridad del plugin

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

name: string
Valor predeterminado: ""

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.

ChangeHistoryService:SetWaypoint

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

Seguridad del plugin

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

name: string

Nombre de la acción que se realiza adecuada para fines de registro y codificación.

Valor predeterminado: ""
displayName: string

Nombre de la acción que se realiza para mostrar al usuario.

Valor predeterminado: ""

Devuelve

Muestras de código

To commit an undo/redo record, you need to first call TryBeginRecording() followed by calling FinishRecording().

ChangeHistoryService:TryBeginRecording

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

()
Seguridad del plugin

Deshace la última acción tomada, para la cual existe un punto de ruta.


Devuelve

()

Eventos

OnRecordingFinished

Seguridad del plugin

Parámetros

name: string

Nombre de la acción que se realiza adecuada para fines de registro y codificación.

displayName: string

Nombre de la acción que se realiza para mostrar al usuario.

identifier: string

El identificador de la grabación.

finalOptions: Dictionary

Tabla opcional de FinishOperation() .


OnRecordingStarted

Seguridad del plugin

Parámetros

name: string

Nombre de la acción que se realiza adecuada para fines de registro y codificación.

displayName: string

Nombre de la acción que se realiza para mostrar al usuario.


OnRedo

Seguridad del plugin

Se despedida cuando el usuario revierte el comando de deshacer. Waypoint describe la acción de tipo que se ha revertido.

Parámetros

waypoint: string

OnUndo

Seguridad del plugin

Se despedaza cuando el usuario deshace una acción en el estudio. Waypoint describe el tipo de acción que se ha deshecho.

Parámetros

waypoint: string