ChangeHistoryService

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan

Pengembang plugin harus menggunakan ChangeHistoryService untuk memberi tahu Studio bagaimana membatalkan dan memperbaiki perubahan yang dilakukan oleh plugin mereka kepada pengalaman dengan merekam.Sebelum membuat perubahan, plugin memanggil ChangeHistoryService:TryBeginRecording() , mengingat identifikator yang ditugaskan, lalu setelah membuat perubahan, Plugin memanggil ChangeHistoryService:FinishRecording() untuk menyelesaikan perekaman.

Plugin juga dapat secara programatik memanggil undo atau redo melalui ChangeHistoryService:Undo() atau ChangeHistoryService:Redo() .

ChangeHistoryService tidak diaktifkan saat menjalankan, jadi memanggil metodenya di pengalaman yang berjalan tidak berpengaruh.

Rangkuman

Metode

  • FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
    Keamanan Plugin

    Berkomunikasi ke Studio bahwa rekaman yang diidentifikasi selesai dan untuk mengambil operasi terakhir untuk menyelesaikan rekaman.

  • Keamanan Plugin

    Kembalikan apakah ada tindakan yang dapat dilakukan ulang, dan, jika ada, kembalikan yang terakhir dari mereka.

  • Keamanan Plugin

    Kembalikan apakah ada tindakan yang dapat dibatalkan, dan, jika ada, kembalikan yang terakhir dari mereka.

  • Keamanan Plugin
  • Redo():()
    Keamanan Plugin

    Menjalankan tindakan terakhir yang dibatalkan.

  • Keamanan Plugin

    Menghapus sejarah, menyebabkan semua titik jalan undo/redo dihapus.

  • SetEnabled(state : boolean):()
    Keamanan Plugin

    Mengatur apakah atau tidak ChangeHistoryService diaktifkan.

  • SetWaypoint(name : string):()
    Keamanan Plugin

    Tetapkan titik jalur baru yang dapat digunakan sebagai titik membatalkan atau mengulangi.

  • TryBeginRecording(name : string,displayName : string?):string?
    Keamanan Plugin

    Dimulai melacak perubahan yang dilakukan pada model data ke dalam rekaman.

  • Undo():()
    Keamanan Plugin

    Membatalkan tindakan terakhir yang diambil, untuk mana ada waypoint.

Acara

Properti

Metode

FinishRecording

()
Keamanan Plugin

Parameter

identifier: string

Mengidentifikasi rekaman dari panggilan sebelumnya ke TryBeginRecording() .Jika operasi adalah Enum.ChangeHistoryService.FinishRecordingOperation.Cancel , nilai ini diabaikan, dan rekaman ditentukan oleh konteks.

Nilai Default: ""

Mengidentifikasi operasi yang harus diambil.

Nilai Default: ""
finalOptions: Dictionary

Tabel opsional nilai untuk dikirim ke OnFinishRecording .

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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

Keamanan Plugin

Kembalikan apakah ada tindakan yang dapat dilakukan ulang, dan, jika ada, kembalikan yang terakhir dari mereka.


Memberikan nilai

GetCanUndo

Keamanan Plugin

Kembalikan apakah ada tindakan yang dapat dibatalkan, dan, jika ada, kembalikan yang terakhir dari mereka.


Memberikan nilai

IsRecordingInProgress

Keamanan Plugin

Parameter

identifier: string
Nilai Default: ""

Memberikan nilai

Redo

()
Keamanan Plugin

Menjalankan tindakan terakhir yang dibatalkan.


Memberikan nilai

()

ResetWaypoints

()
Keamanan Plugin

Menghapus sejarah, menyebabkan semua titik jalan undo/redo dihapus.


Memberikan nilai

()

SetEnabled

()
Keamanan Plugin

Mengatur apakah atau tidak ChangeHistoryService diaktifkan.Saat diatur ke false, daftar undo/redo dihapus, dan tidak diisi ulang.Saat diatur ke benar lagi, daftar asli tidak dipulihkan, tetapi operasi lebih lanjut ditambahkan ke daftar sekali lagi

Parameter

state: boolean
Nilai Default: ""

Memberikan nilai

()

SetWaypoint

()
Keamanan Plugin

Metode ini akan dihapuskan segera demi TryBeginRecording() .

ChangeHistoryService melacak sejarah plugin sebagai aliran perubahan properti. SetWaypoint() membuat potongan dalam aliran perubahan properti sehingga tindakan undo dan redo tahu di mana berhenti.

Menurut konvensi, tindakan yang dipanggil oleh pengguna di Studio harus memanggil SetWaypoint()setelah menyelesaikan serangkaian perubahan pada pengalaman.Memanggilnya sebelum sekumpulan perubahan dapat membersihkan plugin lain yang gagal mengatur waypoint, tetapi itu adalah alasan yang buruk untuk membenarkan penggunaan seperti itu di plugin Anda sendiri.

Parameter

name: string
Nilai Default: ""

Memberikan nilai

()

Contoh Kode

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

Keamanan Plugin

Metode ini memulai perekaman untuk melacak perubahan pada model data.Anda harus memanggilnya sebelum membuat perubahan untuk menghindari peringatan atau kesalahan di masa depan.

Saat rekaman selesai, Anda memanggil FinishRecording() dengan identifikasi rekaman yang dikembalikan untuk menyelesaikan rekaman dan memperbarui tumpukan undo/redo.

Metode ini akan kembali nil jika gagal memulai perekaman.Perekaman gagal jika plugin sudah memiliki perekaman sedang berlangsung, atau jika pengguna berada dalam mode Jalankan atau Bermain .

Anda dapat menggunakan IsRecordingInProgress() untuk memeriksa status perekaman plugin.

Parameter

name: string

Nama tindakan yang dilakukan cocok untuk tujuan pencatatan dan pengkodean.

Nilai Default: ""
displayName: string

Nama tindakan yang dilakukan untuk ditampilkan kepada pengguna.

Nilai Default: ""

Memberikan nilai

Contoh Kode

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

()
Keamanan Plugin

Membatalkan tindakan terakhir yang diambil, untuk mana ada waypoint.


Memberikan nilai

()

Acara

OnRecordingFinished

Keamanan Plugin

Parameter

name: string

Nama tindakan yang dilakukan cocok untuk tujuan pencatatan dan pengkodean.

displayName: string

Nama tindakan yang dilakukan untuk ditampilkan kepada pengguna.

identifier: string

Pengenal untuk rekaman.

finalOptions: Dictionary

Tabel opsional dari FinishOperation() .


OnRecordingStarted

Keamanan Plugin

Parameter

name: string

Nama tindakan yang dilakukan cocok untuk tujuan pencatatan dan pengkodean.

displayName: string

Nama tindakan yang dilakukan untuk ditampilkan kepada pengguna.


OnRedo

Keamanan Plugin

Ditembak ketika pengguna membalikkan perintah membatalkan. Waypoint menggambarkan tindakan jenis yang telah diulang.

Parameter

waypoint: string

OnUndo

Keamanan Plugin

Ditembak ketika pengguna membatalkan tindakan di studio. Waypoint menggambarkan jenis tindakan yang telah dibatalkan.

Parameter

waypoint: string