ChangeHistoryService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Plugin-Entwickler müssen verwenden ChangeHistoryService, um Studio mitzuteilen, wie Änderungen, die ihre Plugins an Erlebnissen durch Aufzeichnung machen, rückgängig gemacht und wiederholt werden.Bevor Änderungen vorgenommen werden, ruft ein Plugin ChangeHistoryService:TryBeginRecording() auf, sich an den Identifikator zu erinnern, den es zuweist, und nach Änderungen ruft das Plugin ChangeHistoryService:FinishRecording() auf, um die Aufzeichnung abzuschließen.
Plugins können auch programmatisch eine Rückgängigmachung oder Wiederholung durch ChangeHistoryService:Undo() oder ChangeHistoryService:Redo() aufrufen.
ChangeHistoryService ist zur laufzeit nicht aktiviert, sodass das aufrufen seiner methoden in einer laufenden erfahrung keine auswirkung hat.
Zusammenfassung
Methoden
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
Kommuniziert mit Studio, dass die identifizierte Aufnahme abgeschlossen ist und die letzte Operation durchgeführt werden soll, um die Aufnahme abzuschließen.
Gibt zurück, ob es Aktionen gibt, die rückgängig gemacht werden können, und, wenn es welche gibt, gibt es die letzte von ihnen zurück.
Gibt zurück, ob es Aktionen gibt, die rückgängig gemacht werden können, und, wenn es welche gibt, gibt es die letzte von ihnen zurück.
Führe die letzte Aktion aus, die rückgängig gemacht wurde.
Löscht die Geschichte, wodurch alle Rückgängig/Wiederholen-Wegpunkte entfernt werden.
Legt fest, ob der ChangeHistoryService aktiviert ist oder nicht.
Legt einen neuen Wegpunkt fest, der als Rückgängigkeits- oder Wiederholungspunkt verwendet werden kann.
Beginnt die Änderungen am Datenmodell in eine Aufzeichnung zu verfolgen.
Rückgängig die letzte ausgeführte Aktion, für die es einen Wegpunkt gibt.
Ereignisse
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
Feuert ab, wenn der Benutzer eine Actionabschließt. Die Parameter stammen von TryBeginRecording() und FinishRecording().
Feuert, wenn der Benutzer eine Actionbeginnt. Die Parameter kommen von TryBeginRecording().
Feuert, wenn der Benutzer den Rückgabebefehl umkehrt. Waypoint beschreibt die Art-Aktion, die wiederholt wurde.
Feuert ab, wenn der Benutzer eine Aktion im Studio rückgängig macht. Waypoint beschreibt die Art-Aktion, die rückgängig gemacht wurde.
Eigenschaften
Methoden
FinishRecording
Parameter
Identifiziert die Aufzeichnung von der vorherigen Anruf an TryBeginRecording() .Wenn die Operation Enum.ChangeHistoryService.FinishRecordingOperation.Cancel ist, wird dieser Wert ignoriert, und die Aufzeichnung wird durch den Kontext bestimmt.
Gibt die Operation an, die durchgeführt werden soll.
Optionale Tabelle von Werten, die an OnFinishRecording übergeben werden.
Rückgaben
Code-Beispiele
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
Gibt zurück, ob es Aktionen gibt, die rückgängig gemacht werden können, und, wenn es welche gibt, gibt es die letzte von ihnen zurück.
Rückgaben
GetCanUndo
Gibt zurück, ob es Aktionen gibt, die rückgängig gemacht werden können, und, wenn es welche gibt, gibt es die letzte von ihnen zurück.
Rückgaben
Redo
Führe die letzte Aktion aus, die rückgängig gemacht wurde.
Rückgaben
ResetWaypoints
Löscht die Geschichte, wodurch alle Rückgängig/Wiederholen-Wegpunkte entfernt werden.
Rückgaben
SetEnabled
Legt fest, ob der ChangeHistoryService aktiviert ist oder nicht.Wenn auf false gesetzt, wird die Rückgängig/Wiederholen-Liste geleert und nicht wiederbefüllt.Wenn es wieder auf wahr gesetzt wird, wird die ursprüngliche Liste nicht wiederhergestellt, sondern weitere Operationen werden einmal mehr an die Liste angehängt
Parameter
Rückgaben
SetWaypoint
Diese Methode wird bald veraltet sein zugunsten von TryBeginRecording() .
ChangeHistoryService verfolgt plugin-historie als stream von eigenschaftsänderungen.SetWaypoint() erstellt einen schnitt in diesem stream von eigenschaftsänderungen, so dass die rückgängig- und wiederholungsaktionen wissen, wo sie aufhören.
Gemäß Konvention müssen Benutzeraktionen in Studio aufgerufen werden, nachdem sie ihre Änderungen an der Erlebnisabgeschlossen haben.Nenn es bevor ein Satz von Änderungen gereinigt werden kann, ein weiteres fehlgeschlagenes Plugin, das keinen Wegpunkt festlegen konnte, aber es ist ein schlechter Grund, eine solche Verwendung in deinem eigenen Plug-inzu rechtfertigen.
Parameter
Rückgaben
Code-Beispiele
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
Diese Methode beginnt eine Aufzeichnung, um Änderungen am Modellzu verfolgen.Du musst es vor Änderungen anrufen, um zukünftige Warnungen oder Fehler zu vermeiden.
Wenn die Aufnahme abgeschlossen ist, rufen Sie FinishRecording() mit dem zurückgegebenen Aufzeichnungsidentifikator auf, um die Aufnahme abzuschließen und den Rückgängig/Wiederholungs-Stack zu aktualisieren.
Diese Methode gibt nil zurück, wenn sie nicht in der Lage ist, eine Aufzeichnung zu beginnen.Aufnahmen scheitern, wenn das Plugin bereits eine Aufnahme im Gange hat, oder wenn der Benutzer im Lauf - oder Spiel -Modus ist.
Du kannst IsRecordingInProgress() verwenden, um den Aufzeichnungsstatus des Plug-inzu überprüfen.
Parameter
Name der ausgeführten Aktion, geeignet für Zwecke der Aufzeichnung und des Codierens.
Name der Aktion, die zum Anzeigen für den Benutzer ausgeführt wird.
Rückgaben
Code-Beispiele
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
Rückgängig die letzte ausgeführte Aktion, für die es einen Wegpunkt gibt.
Rückgaben
Ereignisse
OnRecordingFinished
Parameter
Name der ausgeführten Aktion, geeignet für Zwecke der Aufzeichnung und des Codierens.
Name der Aktion, die zum Anzeigen für den Benutzer ausgeführt wird.
Die Identifikator für die Aufzeichnung.
Optioneller Tisch von FinishOperation().
OnRecordingStarted
Parameter
Name der ausgeführten Aktion, geeignet für Zwecke der Aufzeichnung und des Codierens.
Name der Aktion, die zum Anzeigen für den Benutzer ausgeführt wird.
OnRedo
Feuert, wenn der Benutzer den Rückgabebefehl umkehrt. Waypoint beschreibt die Art-Aktion, die wiederholt wurde.
Parameter
OnUndo
Feuert ab, wenn der Benutzer eine Aktion im Studio rückgängig macht. Waypoint beschreibt die Art-Aktion, die rückgängig gemacht wurde.