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
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
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
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.