ChangeHistoryService
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Eklenti geliştiricileri eklentilerinin deneyimlere yaptığı değişiklikleri kaydederek nasıl geri alınacağını ve yeniden yapılacağını Studio'ya söylemek için ChangeHistoryService kullanmalıdır.Değişiklik yapmadan önce, bir eklenti çağrır ChangeHistoryService:TryBeginRecording() , atadığı tanımlayıcıyı hatırlayarak, sonra değişiklik yaptıktan sonra, eklenti kaydı bitirmek için çağrır ChangeHistoryService:FinishRecording() .
Eklentiler ayrıca programatik olarak bir geri al veya yeniden yapmayı ChangeHistoryService:Undo() veya ChangeHistoryService:Redo() aracılığıyla çağırabilir.
ChangeHistoryService çalışma sırasında etkinleştirilmediğinden, yöntemlerini çalışan bir deneyimde çağırmak hiçbir etkiye sahip değil.
Özet
Özellikler
Yöntemler
- FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
Tanımlanan kaydın bitirildiğini ve kaydı bitirmek için son operasyonun yapılması gerektiğini Stüdyoya iletir.
Geri alınabilen eylemler olup olmadığını ve eğer varsa, sonuncusunu döndürür.
Geri alınabilen eylemler olup olmadığını ve eğer varsa, sonuncusunu döndürür.
Geri alınan son eylemi yürütür.
Tarihi temizler, böylece tüm geri alma/yeniden yapma noktaları kaldırılır.
Değişiklik geçmişi hizmetinin etkinleştirilip etkinleştirilmediğini ayarlar.
Geri alma veya yeniden yapma noktası olarak kullanılabilecek yeni bir yol noktası belirler.
Veri modeline yapılan değişiklikleri kayıda izlemeye başlar.
Son yapılan eylemi geri alır, için bir yol noktası vardır.
Etkinlikler
- OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
Kullanıcı bir aksiyontamamladığında ateşlenir. Parçalar TryBeginRecording() ve FinishRecording() 'den gelir.
Kullanıcı bir aksiyonbaşlattığında ateşlenir. Parçalar TryBeginRecording() 'dan gelir.
Kullanıcı geri gitme komutunu tersine çevirdiğinde ateş edilir. Waypoint geri yapılan tür eylemi tanımlar.
Kullanıcı stüdyoda bir eylemi geri aldığında ateş edilir. Yol noktası geri alınan eylemin türünü tanımlar.
Özellikler
Yöntemler
FinishRecording
Parametreler
Önceki çağrıdan kaydı tanımlar TryBeginRecording() 'a.Operasyon Enum.ChangeHistoryService.FinishRecordingOperation.Cancel ise, bu değer göz ardı edilir ve kayıt, konteks tarafından belirlenir.
Alınacak işlemi belirtir.
OnFinishRecording geçmek için isteğe bağlı değer tablosu.
Dönüşler
Kod Örnekleri
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
Geri alınabilen eylemler olup olmadığını ve eğer varsa, sonuncusunu döndürür.
Dönüşler
GetCanUndo
Geri alınabilen eylemler olup olmadığını ve eğer varsa, sonuncusunu döndürür.
Dönüşler
Redo
Geri alınan son eylemi yürütür.
Dönüşler
ResetWaypoints
Tarihi temizler, böylece tüm geri alma/yeniden yapma noktaları kaldırılır.
Dönüşler
SetEnabled
Değişiklik geçmişi hizmetinin etkinleştirilip etkinleştirilmediğini ayarlar.Yalan olarak ayarlanırsa, geri al/yeniden yap listesi temizlenir ve yeniden doldurulmaz.Yeniden doğru olarak ayarlanırken, orijinal liste geri yüklenmez, ancak daha fazla işlem listeye bir kez daha eklenir
Parametreler
Dönüşler
SetWaypoint
Bu yöntem yakında eskiye düşecek ve TryBeginRecording() le desteklenecek.
ChangeHistoryService izleri özellik değişiklikleri akışı olarak plugin geçmişi izler.SetWaypoint() bu özellik değişikliklerinin akışında bir kesme oluşturur, böylece geri alma ve yeniden yapma eylemlerinin nerede durması gerektiğini bilir.
Konvansiyona göre, Studio'da kullanıcı tarafından çağrılan eylemler bir deneyime değişiklik setlerini bitirdikten sonra çağrılmalıdır sonra çünkü çalışmalarını bitirdikten sonra çağrılan eylemler kullanıcı tarafından çağrılır.Bunu önce bir dizi değişiklik çağırmak, bir yol noktası belirlemeyi başaramayan başka bir hatalı eklentiyi temizleyebilir, ancak kendi plugininizde bu kullanımı haklı çıkarmak için kötü bir sebep.
Parametreler
Dönüşler
Kod Örnekleri
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
Bu yöntem, veri modelindeki değişiklikleri izlemek için kayıt başlatır.Siz değişiklik yapmadan önce onu çağırmalısınız gelecekteki uyarıları veya hataları önlemek için.
Kayıt bitirildiğinde, döndürülen kayıt tanımlayıcısı ile FinishRecording() 'yi arayın ve kaydı bitirin ve geri git/geri yapma yığınını güncelleyin.
Bu yöntem, kayıt başlatmada başarısız olursa nil döndürecektir.Eğer eklentide zaten bir kayıt devam ediyorsa veya kullanıcı Kaydet veya Oynat modunda ise kayıtlar başarısız olur.
eklentikayıt durumunu kontrol etmek için IsRecordingInProgress() kullanabilirsiniz.
Parametreler
Kayıt ve kodlama amaçları için uygun olan eylemin adı.
Kullanıcıya görüntülemek için gerçekleştirilen eylemin adı.
Dönüşler
Kod Örnekleri
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
Son yapılan eylemi geri alır, için bir yol noktası vardır.
Dönüşler
Etkinlikler
OnRecordingFinished
Parametreler
Kayıt ve kodlama amaçları için uygun olan eylemin adı.
Kullanıcıya görüntülemek için gerçekleştirilen eylemin adı.
Kayıt için tanımlayıcı.
Opsiyonel tablo FinishOperation() 'den.
OnRecordingStarted
Parametreler
Kayıt ve kodlama amaçları için uygun olan eylemin adı.
Kullanıcıya görüntülemek için gerçekleştirilen eylemin adı.
OnRedo
Kullanıcı geri gitme komutunu tersine çevirdiğinde ateş edilir. Waypoint geri yapılan tür eylemi tanımlar.
Parametreler
OnUndo
Kullanıcı stüdyoda bir eylemi geri aldığında ateş edilir. Yol noktası geri alınan eylemin türünü tanımlar.