ChangeHistoryService

Hiển Thị Bản Đã Lỗi Thời

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

Không Thể Tạo
Dịch Vụ

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?):()
    Bảo Mật Plugin

    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.

  • Bảo Mật Plugin

    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.

  • Bảo Mật Plugin

    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.

  • Bảo Mật Plugin
  • Redo():()
    Bảo Mật Plugin

    Thực hiện hành động cuối cùng đã bị hoàn tác.

  • Bảo Mật Plugin

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

  • SetEnabled(state : boolean):()
    Bảo Mật Plugin

    Bộ đặt xem có bật hoặc không bật dịch vụ Lịch sử thay đổi.

  • SetWaypoint(name : string):()
    Bảo Mật Plugin

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

  • TryBeginRecording(name : string,displayName : string?):string?
    Bảo Mật Plugin

    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.

  • Undo():()
    Bảo Mật Plugin

    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

Thuộc Tính

Phương Pháp

FinishRecording

()
Bảo Mật Plugin

Tham Số

identifier: string

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.

Giá Trị Mặc Định: ""

Xác định hoạt động để thực hiện.

Giá Trị Mặc Định: ""
finalOptions: Dictionary

Bảng giá trị tùy chọn để chuyển sang OnFinishRecording .

Giá Trị Mặc Định: ""

Lợi Nhuận

()

Mẫu mã

To commit an undo/redo record, you need to first call TryBeginRecording() followed by calling FinishRecording().

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

Bảo Mật Plugin

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

Bảo Mật Plugin

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

IsRecordingInProgress

Bảo Mật Plugin

Tham Số

identifier: string
Giá Trị Mặc Định: ""

Lợi Nhuận

Redo

()
Bảo Mật Plugin

Thực hiện hành động cuối cùng đã bị hoàn tác.


Lợi Nhuận

()

ResetWaypoints

()
Bảo Mật Plugin

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ảo Mật Plugin

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ố

state: boolean
Giá Trị Mặc Định: ""

Lợi Nhuận

()

SetWaypoint

()
Bảo Mật Plugin

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ố

name: string
Giá Trị Mặc Định: ""

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.

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

Bảo Mật Plugin

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ố

name: string

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.

Giá Trị Mặc Định: ""
displayName: string

Tên của hành động được thực hiện để hiển thị cho người dùng.

Giá Trị Mặc Định: ""

Lợi Nhuận

Mẫu mã

To commit an undo/redo record, you need to first call TryBeginRecording() followed by calling FinishRecording().

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

()
Bảo Mật Plugin

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

Bảo Mật Plugin

Tham Số

name: string

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.

displayName: string

Tên của hành động được thực hiện để hiển thị cho người dùng.

identifier: string

ID của bản ghi.

finalOptions: Dictionary

Bảng tùy chọn từ FinishOperation().


OnRecordingStarted

Bảo Mật Plugin

Tham Số

name: string

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.

displayName: string

Tên của hành động được thực hiện để hiển thị cho người dùng.


OnRedo

Bảo Mật Plugin

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ố

waypoint: string

OnUndo

Bảo Mật Plugin

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.

Tham Số

waypoint: string