ChangeHistoryService
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Desenvolvedores de plugins devem usar ChangeHistoryService dizer ao Studio como desfazer e refazer as alterações que seus plugins fazem às experiências gravando.Antes de fazer alterações, um plugin chama ChangeHistoryService:TryBeginRecording() , lembrando o identificador que atribui, então depois de fazer alterações, o Plugin chama ChangeHistoryService:FinishRecording() para completar a gravação.
Plugins também podem invocar um desfazer ou refazer programaticamente através de ChangeHistoryService:Undo() ou ChangeHistoryService:Redo() .
ChangeHistoryService não está habilitado em tempo de execução, então chamar seus métodos em uma experiência em andamento não tem efeito.
Resumo
Métodos
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
Comunica ao Studio que a gravação identificada está terminada e para tomar a operação final para concluir a gravação.
Retorna se existem ações que podem ser desfeitas e, se existirem, retorna a última delas.
Retorna se há ações que podem ser desfeitas e, se houver, retorna a última delas.
Executa a última ação que foi desfeita.
Limpa o histórico, causando a remoção de todos os pontos de desfazer/refazer.
Define se o ChangeHistoryService está habilitado ou não.
Define um novo waypoint que pode ser usado como ponto de desfazer ou refazer.
Começa a rastrear as alterações feitas no modelo de dados para um registro.
Desfaz a última ação realizada, para a qual existe um waypoint.
Eventos
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
Disparado quando o usuário conclui uma ação. Os parâmetros vêm de TryBeginRecording() e FinishRecording().
Disparado quando o usuário inicia uma ação. Os parâmetros vêm de TryBeginRecording() .
Dispedido quando o usuário reverter o comando de desfazer. O Waypoint descreve a ação de tipo que foi refeita.
Dispedido 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, este valor é ignorado e a gravação é determinada pelo contexto.
Specifica 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 existem ações que podem ser desfeitas e, se existirem, retorna a última delas.
Devolução
GetCanUndo
Retorna se há ações que podem 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 a remoção de todos os pontos de desfazer/refazer.
Devolução
SetEnabled
Define se o ChangeHistoryService está habilitado ou não.Quando definido como falso, a lista de desfazer/refazer é limpa e não é recomeçada.Quando definido como verdadeiro novamente, a lista original não é restaurada, mas operações posteriores são adicionadas à lista mais uma vez
Parâmetros
Devolução
SetWaypoint
Este método será descontinuado em breve em favor de TryBeginRecording().
ChangeHistoryService rastros de plugins histórico como um fluxo de alterações de propriedade.SetWaypoint()
Por convenção, ações invocadas pelo usuário no Studio devem chamar após completar seu conjunto de alterações na experiência.Chamá-lo antes de um conjunto de alterações pode limpar outro plugin que falhou em definir um caminho, mas é uma razão pobre para justificar tal uso em seu próprio plugin.
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 inicia uma gravação para rastrear alterações no modelo de dados.Você deve chamá-la 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 desfazer/refazer.
Este método retornará nil se não conseguir iniciar uma gravação.Gravar falha se o plugin já tiver uma gravação em andamento ou se o usuário estiver no modo Executar ou Jogar .
Você pode usar IsRecordingInProgress() para verificar o status de gravação do plugin.
Parâmetros
Nome da ação que está sendo realizada adequado para fins de registro e codificação.
Nome da ação que está sendo realizada para exibir 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 realizada, para a qual existe um waypoint.
Devolução
Eventos
OnRecordingFinished
Parâmetros
Nome da ação que está sendo realizada adequado para fins de registro e codificação.
Nome da ação que está sendo realizada para exibir ao usuário.
O identificador para a gravação.
Tabela opcional de FinishOperation() .
OnRecordingStarted
Parâmetros
Nome da ação que está sendo realizada adequado para fins de registro e codificação.
Nome da ação que está sendo realizada para exibir ao usuário.
OnRedo
Dispedido quando o usuário reverter o comando de desfazer. O Waypoint descreve a ação de tipo que foi refeita.
Parâmetros
OnUndo
Dispedido quando o usuário desfaz uma ação no estúdio. Waypoint descreve o tipo de ação que foi desfeita.