ChangeHistoryService
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Nhà phát triển plugin phải sử dụng ChangeHistoryService để cho Studio biết cách hoàn tác và thực hiện lại các thay đổi mà plugin của họ làm cho trải nghiệm bằng cách ghi lại.Trước khi thực hiện các thay đổi, một plugin gọi ChangeHistoryService:TryBeginRecording() , nhớ nhận dạng nó gán, sau khi thực hiện các thay đổi, Plugin gọi ChangeHistoryService:FinishRecording() để hoàn thành việc ghi âm.
Các plugin cũng có thể gọi lại hoặc làm lại thông qua ChangeHistoryService:Undo() hoặc ChangeHistoryService:Redo() .
ChangeHistoryService không được bật ở thời gian chạy, vì vậy gọi các phương pháp của nó trong một trải nghiệm chạy không có hiệu lực.
Tóm Tắt
Phương Pháp
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
Giao tiếp với Studio rằng ghi âm được xác định đã hoàn thành và thực hiện hoạt động cuối cùng để hoàn thành ghi âm.
Trả về xem có hành động nào có thể hoàn tác hay không, và nếu có, trả về hành động cuối cùng.
Trả về xem có hành động nào có thể hoàn tác hay không, và nếu có, trả về hành động cuối cùng.
Thực hiện hành động cuối cùng đã bị hoàn tác.
Xóa lịch sử, gây ra việc xóa tất cả các điểm dừng lại/phục hồi toàn bộ.
Bộ đặt xem có bật hoặc không bật dịch vụ Lịch sử thay đổi.
Đặt một điểm dừng mới có thể được sử dụng như điểm hoàn tác hoặc làm lại.
Bắt đầu theo dõi các thay đổi được thực hiện cho mô hình dữ liệu thành một bản ghi.
Hoàn tác hành động cuối cùng đã thực hiện, trong đó có một điểm dừng.
Sự Kiện
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
Bị bắn khi người dùng hoàn thành một hành động. Các tham số đến từ TryBeginRecording() và FinishRecording().
Bị bắn khi người dùng bắt đầu một hành động. Các tham số đến từ TryBeginRecording() .
Bị bắn khi người dùng đảo lại lệnh hoàn tác. Waypoint mô tả hành động kiểu đã được sửa lại.
Bị bắn khi người dùng hoàn tác một hành động trong studio. Waypoint mô tả loại hành động đã bị hoàn tác.
Thuộc Tính
Phương Pháp
FinishRecording
Tham Số
Xác định bản ghi từ cuộc gọi trước đến TryBeginRecording() .Nếu hoạt động là Enum.ChangeHistoryService.FinishRecordingOperation.Cancel, giá trị này bị bỏ qua, và ghi lại được xác định bởi bối cảnh.
Xác định hoạt động để thực hiện.
Bảng giá trị tùy chọn để chuyển sang OnFinishRecording .
Lợi Nhuận
Mẫu mã
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
Trả về xem có hành động nào có thể hoàn tác hay không, và nếu có, trả về hành động cuối cùng.
Lợi Nhuận
GetCanUndo
Trả về xem có hành động nào có thể hoàn tác hay không, và nếu có, trả về hành động cuối cùng.
Lợi Nhuận
Redo
Thực hiện hành động cuối cùng đã bị hoàn tác.
Lợi Nhuận
ResetWaypoints
Xóa lịch sử, gây ra việc xóa tất cả các điểm dừng lại/phục hồi toàn bộ.
Lợi Nhuận
SetEnabled
Bộ đặt xem có bật hoặc không bật dịch vụ Lịch sử thay đổi.Khi được đặt thành false, danh sách undo/redo được xóa và không được tái lấp lại.Khi đặt lại thành true, danh sách ban đầu không được khôi phục, nhưng các hoạt động tiếp theo sẽ thêm vào danh sách một lần nữa
Tham Số
Lợi Nhuận
SetWaypoint
Phương pháp này sẽ được ngừng sử dụng sớm vì ủng hộ TryBeginRecording() .
ChangeHistoryService theo dõi lịch sử plugin như một dòng thay đổi thuộc tính.SetWaypoint() tạo một cắt trong dòng thay đổi tính năng đó để các hành động hoàn tác và lặp lại biết nơi dừng lại.
Theo quy định, hành động được kích hoạt bởi người dùng trong Studio phải gọi sau khi hoàn thành bộ thay đổi của họ cho trải nghiệm.Gọi nó trước một loạt các thay đổi có thể làm sạch một plugin lỗi hạng khác không thể đặt điểm dừng, nhưng đó là một lý do tồi tệ để biện minh cho việc sử dụng như vậy trong plugin của riêng bạn.
Tham Số
Lợi Nhuận
Mẫu mã
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
Phương pháp này bắt đầu ghi lại để theo dõi các thay đổi đối với mô hình dữ liệu.Bạn phải gọi nó trước khi thực hiện các thay đổi để tránh cảnh báo hoặc lỗi trong tương lai.
Khi ghi âm hoàn thành, bạn gọi FinishRecording() với ID ghi âm trả lại để hoàn thành ghi âm và cập nhật cọc lùi/phục hồi.
Phương pháp này sẽ trả về nil nếu nó không thể bắt đầu ghi lại.Các bản ghi thất bại nếu plugin đã có một bản ghi đang diễn ra hoặc nếu người dùng đang ở trong chế độ Chạy hoặc Chơi .
Bạn có thể sử dụng IsRecordingInProgress() để kiểm tra tình trạng ghi lại của plugin.
Tham Số
Tên của hành động đang thực hiện phù hợp cho mục đích ghi lại và lập trình.
Tên của hành động được thực hiện để hiển thị cho người dùng.
Lợi Nhuận
Mẫu mã
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
Hoàn tác hành động cuối cùng đã thực hiện, trong đó có một điểm dừng.
Lợi Nhuận
Sự Kiện
OnRecordingFinished
Tham Số
Tên của hành động đang thực hiện phù hợp cho mục đích ghi lại và lập trình.
Tên của hành động được thực hiện để hiển thị cho người dùng.
ID của bản ghi.
Bảng tùy chọn từ FinishOperation().
OnRecordingStarted
Tham Số
Tên của hành động đang thực hiện phù hợp cho mục đích ghi lại và lập trình.
Tên của hành động được thực hiện để hiển thị cho người dùng.
OnRedo
Bị bắn khi người dùng đảo lại lệnh hoàn tác. Waypoint mô tả hành động kiểu đã được sửa lại.
Tham Số
OnUndo
Bị bắn khi người dùng hoàn tác một hành động trong studio. Waypoint mô tả loại hành động đã bị hoàn tác.