ChangeHistoryService
*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.
플러그인 개발자 는 레코딩을 통해 플러그인이 경험에 적용하는 변경을 취소하고 다시 수행하도록 Studio에 알리기 위해 ChangeHistoryService 사용해야 합니다.변경하기 전에 플러그인은 ChangeHistoryService:TryBeginRecording() 을 호출하여 할당된 식별자를 기억하고, 변경 사항을 적용한 후에는 플러그인이 ChangeHistoryService:FinishRecording() 를 호출하여 녹음을 완료합니다.
플러그인은 또한 ChangeHistoryService:Undo() 또는 ChangeHistoryService:Redo()를 통해 실행 취소 또는 다시 실행을 프로그래밍 방식으로 호출할 수 있습니다.
ChangeHistoryService 는 런타임에 활성화되지 않으므로 실행 중인 경험에서 메서드를 호출하면 효과가 없습니다.
요약
메서드
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
식별된 레코딩이 완료되었으며 최종 작업을 수행하여 레코딩을 완료하도록 Studio에 통신합니다.
되돌릴 수 있는 작업이 있는지 여부를 반환하고, 있으면 마지막 작업을 반환합니다.
취소할 수 있는 작업이 있는지 여부를 반환하고, 있으면 마지막 작업을 반환합니다.
취소된 마지막 작업을 실행합니다.
기록을 지우고 모든 실행 취소/다시 실행 경로가 제거됩니다.
변경 내역 서비스를 활성화할지 여부를 설정합니다.
실행 취소나 다시 실행할 수 있는 새로운 웨이포인트를 설정합니다.
데이터 모델에 적용된 변경 사항을 기록으로 추적하기 시작합니다.
방향점이 있는 마지막 행동을 취소합니다.
이벤트
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
사용자가 액션완료하면 발사됩니다. 매개변수는 TryBeginRecording() 및 FinishRecording() 에서 옵니다.
사용자가 액션시작할 때 발사됩니다. 매개변수는 TryBeginRecording() 에서 옵니다.
사용자가 실행 취소 명령을 되돌릴 때 발생합니다. 웨이포인트는 다시 실행된 유형 작업을 설명합니다.
사용자가 스튜디오에서 작업을 취소할 때 발생합니다. 웨이포인트는 취소된 작업 유형을 설명합니다.
속성
메서드
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)
Redo
반환
ResetWaypoints
반환
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
-- 그러나 작업 전에 SetWaypoint를 호출하면 문제가 발생하지 않습니다.
-- 작업 이후에만 호출이 필요하므로 중복됩니다.
--변경 내역 서비스: 웨이포인트 설정("네온으로 선택 설정")
for _, part in pairs(parts) do
part.Material = Enum.Material.Neon
end
-- 작업을 완료한 후 SetWaypoint 호출
ChangeHistoryService:SetWaypoint("Set selection to neon")
else
-- 할 일은 없습니다. 경우에 따라 SetWaypoint를 호출할 필요가 없습니다.
-- 행동이 경험에 변경을 일으키지 않았습니다.
end
end)
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)