ChangeHistoryService
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Os desenvolvedores de plugins devem usar Class.ChangeHistoryService para dizer ao Studio como desfazer e refazer as alterações que seus plugins fazem às experiências ao gravar. Antes de fazer alterações, um plugin chama ChangeHistoryService, lembrando-se do identificador que atribui, então, após fazer alterações, o
Plugins também podem invocar invocar programaticamente um desfazer ou refazer através de ChangeHistoryService:Undo() ou ChangeHistoryService:Redo() .
ChangeHistoryService não é habilitado no tempo de execução, então chamar seus métodos em uma experiência em execução não tem nenhum efeito.
Resumo
Métodos
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):void
Comunica-se ao Studio que a gravação identificada está terminada e para levar a operação final para completar a gravação.
Retorna se houver ações que possam ser desfeitas e, se houver, retorna a última delas.
Retorna se houver ações que possam ser desfeitas e, se houver, retorna a última delas.
Executa a última ação que foi desfeita.
Limpa o histórico, causando todos os waypoints de desfazer/refazer serem removidos.
Define se o ChangeHistoryService está ativado ou não.
Define um novo ponto de interesse que pode ser usado como um ponto de desfazer ou refazer.
Começa a rastrear as alterações feitas ao modelo de dados em um arquivo.
Desfaz a última ação tomada, para a qual existe um waypoint.
Eventos
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operationn : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
Fired quando o usuário completa uma ação. Os parâmetros vêm de TryBeginRecording() e FinishRecording() .
Iniciado quando o usuário inicia uma ação. Os parâmetros vêm de TryBeginRecording() .
Fired quando o usuário desiste do comando de desfazer. Waypoint descreve o tipo de ação que foi refeita.
Dispensado quando o usuário desfaz uma ação no estúdio. Waypoint descreve o tipo de ação que foi desfeita.
Propriedades
Métodos
FinishRecording
Parâmetros
Identifica a gravação da chamada anterior para TryBeginRecording() . Se a operação for Enum.ChangeHistoryService.FinishRecordingOperation.Cancel, esse valor é ignorado e a gravação é determinada pelo contexto.
Especifica a operação a ser tomada.
Tabela opcional de valores para passar para OnFinishRecording .
Devolução
Amostras 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
Retorna se houver ações que possam ser desfeitas e, se houver, retorna a última delas.
Devolução
GetCanUndo
Retorna se houver ações que possam ser desfeitas e, se houver, retorna a última delas.
Devolução
Redo
Executa a última ação que foi desfeita.
Devolução
ResetWaypoints
Limpa o histórico, causando todos os waypoints de desfazer/refazer serem removidos.
Devolução
SetEnabled
Define se o Serviço de Histórico de Mudanças está ativado ou não. Quando definido como falso, a lista de desfaz/refaz é limpa e não é repopulado. Quando definido como verdadeiro novamente, a lista original não é restaurada, mas novas operações são adicionadas à lista uma vez mais
Parâmetros
Devolução
SetWaypoint
Este método será desativado em breve em favor de TryBeginRecording() .
ChangeHistoryService rastreia o histórico de plugins como uma stream de mudanças de propriedade. SetWaypoint() cria uma cut naquele stream de mudanças de propriedade para que as ações de desfazer e refazer saibam onde parar.
Por convenção, ações invocadas pelo usuário no Studio devem ser chamadas para Class.ChangeHistoryService:SetWaypoint()|SetWaypoint() depois de completar seu conjunto de alterações na experiência. Chamá-lo 1> antes1> de uma alteração pode limpar outro plugin que falhou em definir um ponto de referência, mas é uma raz
Parâmetros
Devolução
Amostras 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 começa uma gravação para rastrear alterações no modelo de dados. Você deve chamá-lo antes de fazer alterações para evitar futuras advertências ou erros.
Quando a gravação é concluída, você chama FinishRecording() com o identificador de gravação retornado para concluir a gravação e atualizar a pilha de desfaz/refaz.
Este método retornará nil se não puder iniciar uma gravação. Gravações falharão se o plugin já tiver uma gravação em andamento ou se o usuário estiver em Correr ou Jogar modo.
Você pode usar IsRecordingInProgress() para verificar o status de gravação do plugin.
Parâmetros
Nome da ação sendo executada para fins de registro e codificação.
Nome da ação sendo executada para ser exibida ao usuário.
Devolução
Amostras 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
Desfaz a última ação tomada, para a qual existe um waypoint.
Devolução
Eventos
OnRecordingFinished
Parâmetros
Nome da ação sendo executada para fins de registro e codificação.
Nome da ação sendo executada para ser exibida ao usuário.
O identificador da gravação.
Tabela opcional de FinishOperation() .
OnRecordingStarted
Parâmetros
Nome da ação sendo executada para fins de registro e codificação.
Nome da ação sendo executada para ser exibida ao usuário.
OnRedo
Fired quando o usuário desiste do comando de desfazer. Waypoint descreve o tipo de ação que foi refeita.
Parâmetros
OnUndo
Dispensado quando o usuário desfaz uma ação no estúdio. Waypoint descreve o tipo de ação que foi desfeita.