ChangeHistoryService

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

插件开发者 必须使用 Class.ChangeHistoryService 告诉 Studio 如何撤销和重做插件对体验的更改,通过录制。在更改之前,插件调用 Class.ChangeHistoryService:TryBeginRecording(),记住它分配的标识符,然后在更改之后,插件调用 Class.ChangeHistoryService:FinishRecording() 来完

插件还可以通过 ChangeHistoryService:Undo()ChangeHistoryService:Redo() 来程序化撤销或重做。

ChangeHistoryService 在执行时间时不启用,所以在运行体验中调用它的方法无效。

概要

方法

  • FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):void
    插件安全性

    向 Studio 通知已完成识别的录音,并完成最终操作以完成录音。

  • 插件安全性

    返回是否有可以撤销的操作,以及, 如果有, 返回最后一个.

  • 插件安全性

    返回是否有可撤销的操作,如果有,还会返回上一步。

  • 插件安全性
  • Redo():void
    插件安全性

    执行上一个已撤消的操作。

  • 插件安全性

    清除历史,导致所有撤销/重做方向点被移除。

  • SetEnabled(state : bool):void
    插件安全性

    设置是否启用更改历史服务。

  • SetWaypoint(name : string):void
    插件安全性

    设置一个新的 Waypoint,可以用作撤销或重做点。

  • TryBeginRecording(name : string,displayName : string?):string?
    插件安全性

    将数据模型上的更改变成录音。

  • Undo():void
    插件安全性

    撤销最后一个已执行的操作,为其存在一个方向点。

活动

属性

方法

FinishRecording

void
插件安全性

参数

identifier: string

确定从以前的调用到 TryBeginRecording() 的录像。如果操作是 Enum.ChangeHistoryService.FinishRecordingOperation.Cancel,此值将被忽略,并且录像由上下文决定。

指定要执行的操作。

finalOptions: Dictionary

可选的值表以便传到 OnFinishRecording


返回

void

代码示例

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

插件安全性

返回是否有可以撤销的操作,以及, 如果有, 返回最后一个.


返回

GetCanUndo

插件安全性

返回是否有可撤销的操作,如果有,还会返回上一步。


返回

IsRecordingInProgress

插件安全性

参数

identifier: string

返回

Redo

void
插件安全性

执行上一个已撤消的操作。


返回

void

ResetWaypoints

void
插件安全性

清除历史,导致所有撤销/重做方向点被移除。


返回

void

SetEnabled

void
插件安全性

设置是否启用更改历史服务。设置为“关闭”时,取消/撤销列表将清空,不会重复。设置为“真”时,原始列表不会恢复,但是更多操作将被添加到列表中一次更多。

参数

state: bool

返回

void

SetWaypoint

void
插件安全性

此方法将在 Class.ChangeHistoryService:TryBeginRecording()|TryBeginRecording() 的前提下被TryBeginRecording()

ChangeHistoryService 跟踪插件历史为一个属性更改流。SetWaypoint() 创建一个切割在该流中的属性更改,以便撤销和重做操作知道要停止哪里。

按照协议,Studio 的用户邀请操作在 必须 调用SetWaypoint()后才能完成其对体验的更改。在调用它之前,调用它 完成其对体验的更改的一组更改后,可能清理另一个因未设置方位而导致的插件,但

参数

name: string

返回

void

代码示例

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

插件安全性

此方法开始记录数据模型的更改。你必须先调用它,以避免未来的警告或错误。

当录制完成后,您使用 FinishRecording() 与返回的录制识别器调用,完成录制并更新撤销/重做堆栈。

此方法将返回 nil 如果它无法开始录制。如果插件已有录制进行中,或者用户正处于 运行播放 模式,则录制将失败。

您可以使用 IsRecordingInProgress() 来检查插件的录像状态。

参数

name: string

适合日志和代码目的的操作名称。

displayName: string

显示给用户的操作名称。


返回

代码示例

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

void
插件安全性

撤销最后一个已执行的操作,为其存在一个方向点。


返回

void

活动

OnRecordingFinished

插件安全性

参数

name: string

适合日志和代码目的的操作名称。

displayName: string

显示给用户的操作名称。

identifier: string

用于记录的标识。


OnRecordingStarted

插件安全性

参数

name: string

适合日志和代码目的的操作名称。

displayName: string

显示给用户的操作名称。


OnRedo

插件安全性

用户反向执行撤销命令时发生错误。Waypoint描述已重做的类型操作。

参数

waypoint: string

OnUndo

插件安全性

在用户在工作室中撤销操作时触发。 方向描述已撤销的类型操作。

参数

waypoint: string