ChangeHistoryService

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
บริการ

นักพัฒนาปลั๊กอิน ต้องใช้ เพื่อบอก Studio วิธียกเลิกและทำซ้ำการเปลี่ยนแปลงที่ปลั๊กอินของพวกเขาทำให้กับประสบการณ์โดยการบันทึกก่อนที่จะทำการเปลี่ยนแปลง, ปลั๊กอินเรียก ChangeHistoryService:TryBeginRecording() จดจำตัวระบุที่มันกำหนด, จากนั้นหลังจากทำการเปลี่ยนแปลง, ปลั๊กอินเรียก ChangeHistoryService:FinishRecording() เพื่อสรุปการบันทึก

ปลั๊กอินยังสามารถเรียกยกเลิกหรือทำซ้ำผ่าน ChangeHistoryService:Undo() หรือ ChangeHistoryService:Redo() ได้โดยอัตโนมัติ

ChangeHistoryService ไม่ได้เปิดใช้งานในเวลาทำงาน ดังนั้นการเรียกวิธีการของมันในประสบการณ์ที่กําลังดําเนินอยู่จึงไม่มีผล

สรุป

วิธีการ

  • FinishRecording(identifier : string,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):()
    การรักษาความปลอดภัยของปลั๊กอิน

    สื่อสารกับสตูดิโอว่าการบันทึกที่ระบุได้สิ้นสุดแล้วและจะดำเนินการเสร็จสิ้นการบันทึกโดยใช้การดำเนินการสุดท้าย

  • การรักษาความปลอดภัยของปลั๊กอิน

    คืนว่ามีการดำเนินการที่สามารถยกเลิกได้หรือไม่ และหากมี จะคืนการดำเนินการล่าสุด

  • การรักษาความปลอดภัยของปลั๊กอิน

    คืนว่ามีการดำเนินการที่สามารถยกเลิกได้หรือไม่ และหากมี จะคืนการดำเนินการล่าสุด

  • การรักษาความปลอดภัยของปลั๊กอิน
  • Redo():()
    การรักษาความปลอดภัยของปลั๊กอิน

    ดําเนินการด้วยการกระทําสุดท้ายที่ถูกยกเลิก

  • การรักษาความปลอดภัยของปลั๊กอิน

    ล้างประวัติทำให้จุดย้อนกลับทั้งหมดถูกลบออก

  • SetEnabled(state : boolean):()
    การรักษาความปลอดภัยของปลั๊กอิน

    ตั้งค่าว่า ChangeHistoryService จะเปิดใช้งานหรือไม่

  • SetWaypoint(name : string):()
    การรักษาความปลอดภัยของปลั๊กอิน

    ตั้งจุดเวย์พอยท์ใหม่ซึ่งสามารถใช้เป็นจุดย้อนกลับหรือทำซ้ำได้

  • TryBeginRecording(name : string,displayName : string?):string?
    การรักษาความปลอดภัยของปลั๊กอิน

    เริ่มติดตามการเปลี่ยนแปลงที่ทำต่อโมเดลข้อมูลเป็นการบันทึก

  • Undo():()
    การรักษาความปลอดภัยของปลั๊กอิน

    ยกเลิกการกระทำครั้งล่าสุดที่มีเวย์พอยท์อยู่

อีเวนต์

  • OnRecordingFinished(name : string,displayName : string?,identifier : string?,operation : Enum.FinishRecordingOperation,finalOptions : Dictionary?):RBXScriptSignal
    การรักษาความปลอดภัยของปลั๊กอิน

    ยิงเมื่อผู้ใช้สําเร็จการดําเนินการ พารามิเตอร์มาจาก TryBeginRecording() และ FinishRecording()

  • การรักษาความปลอดภัยของปลั๊กอิน

    ยิงเมื่อผู้ใช้เริ่มดำเนินการ พารามิเตอร์มาจาก TryBeginRecording()

  • การรักษาความปลอดภัยของปลั๊กอิน

    ยิงเมื่อผู้ใช้ย้อนคำสั่งยกเลิก เวย์พอยท์อธิบายถึงการดำเนินการประเภทที่ได้รับการยกเลิกแล้ว

  • การรักษาความปลอดภัยของปลั๊กอิน

    ยิงเมื่อผู้ใช้ยกเลิกการดำเนินการในสตูดิโอ เวย์พอยท์อธิบายประเภทการดำเนินการที่ถูกยกเลิก

คุณสมบัติ

วิธีการ

FinishRecording

()
การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

identifier: string

ระบุการบันทึกจากการโทรครั้งก่อนไปยัง TryBeginRecording()หากการดำเนินการคือ Enum.ChangeHistoryService.FinishRecordingOperation.Cancel ค่านี้จะถูกเพิกเฉยและการบันทึกจะถูกกำหนดโดยบริบท

ค่าเริ่มต้น: ""

ระบุการดำเนินการที่จะใช้

ค่าเริ่มต้น: ""
finalOptions: Dictionary

ตารางค่าทางเลือกที่จะส่งไปยัง OnFinishRecording

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

คืนว่ามีการดำเนินการที่สามารถยกเลิกได้หรือไม่ และหากมี จะคืนการดำเนินการล่าสุด


ส่งค่ากลับ

GetCanUndo

การรักษาความปลอดภัยของปลั๊กอิน

คืนว่ามีการดำเนินการที่สามารถยกเลิกได้หรือไม่ และหากมี จะคืนการดำเนินการล่าสุด


ส่งค่ากลับ

IsRecordingInProgress

การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

identifier: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

Redo

()
การรักษาความปลอดภัยของปลั๊กอิน

ดําเนินการด้วยการกระทําสุดท้ายที่ถูกยกเลิก


ส่งค่ากลับ

()

ResetWaypoints

()
การรักษาความปลอดภัยของปลั๊กอิน

ล้างประวัติทำให้จุดย้อนกลับทั้งหมดถูกลบออก


ส่งค่ากลับ

()

SetEnabled

()
การรักษาความปลอดภัยของปลั๊กอิน

ตั้งค่าว่า ChangeHistoryService จะเปิดใช้งานหรือไม่เมื่อตั้งค่าเป็น false รายการยกเลิก/ย้อนกลับจะถูกล้างและไม่ถูกเติมใหม่เมื่อตั้งค่าเป็นจริงอีกครั้ง รายการเดิมจะไม่ถูกฟื้นคืน แต่การดำเนินการเพิ่มเติมจะถูกเพิ่มลงในรายการอีกครั้ง

พารามิเตอร์

state: boolean
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetWaypoint

()
การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้จะถูกยกเลิกในเร็ว ๆ นี้ เพื่อสนับสนุน แทน

ChangeHistoryService บันทึกประวัติปลั๊กอินเป็นสตรีมของการเปลี่ยนแปลงคุณสมบัติSetWaypoint() สร้างการตัดในสตรีมการเปลี่ยนแปลงคุณสมบัติที่จะทำให้การยกเลิกและการทำซ้ำรู้ว่าจะหยุดที่ไหน

ตามข้อตกลง การดำเนินการที่เรียกโดยผู้ใช้ใน Studio ต้อง โทร หลังจากเสร็จสิ้นชุดของการเปลี่ยนแปลงให้กับประสบการณ์แล้วเรียกมัน ก่อน ชุดของการเปลี่ยนแปลงอาจล้างแอพพลิเคชันที่ไม่ดีที่ไม่สามารถตั้งเวย์พอยท์ได้ ปลั๊กอิน

พารามิเตอร์

name: string
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

ตัวอย่างโค้ด

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

การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้เริ่มบันทึกเพื่อติดตามการเปลี่ยนแปลงในรูปแบบข้อมูลคุณ ต้อง โทรก่อนที่จะทำการเปลี่ยนแปลงเพื่อหลีกเลี่ยงการเตือนหรือข้อผิดพลาดในอนาคต

เมื่อบันทึกเสร็จสมบูรณ์แล้ว คุณโทร FinishRecording() ด้วยตัวระบุการบันทึกที่ส่งคืนเพื่อสรุปการบันทึกและอัปเดตกองยกเลิก/ย้อนกลับ

วิธีนี้จะคืน nil หากไม่สามารถเริ่มบันทึกได้การบันทึกล้มเหลวหากปลั๊กอินมีการบันทึกอยู่แล้วหรือหากผู้ใช้อยู่ในโหมด ทำงาน หรือ เล่น คุณสามารถใช้ IsRecordingInProgress() เพื่อตรวจสอบสถานะการบันทึกของปลั๊กอิน

พารามิเตอร์

name: string

ชื่อของการดำเนินการที่ดำเนินการเหมาะสำหรับการบันทึกและการเขียนโค้ด

ค่าเริ่มต้น: ""
displayName: string

ชื่อของการดำเนินการที่ดำเนินการเพื่อแสดงให้กับผู้ใช้

ค่าเริ่มต้น: ""

ส่งค่ากลับ

ตัวอย่างโค้ด

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

()
การรักษาความปลอดภัยของปลั๊กอิน

ยกเลิกการกระทำครั้งล่าสุดที่มีเวย์พอยท์อยู่


ส่งค่ากลับ

()

อีเวนต์

OnRecordingFinished

การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

name: string

ชื่อของการดำเนินการที่ดำเนินการเหมาะสำหรับการบันทึกและการเขียนโค้ด

displayName: string

ชื่อของการดำเนินการที่ดำเนินการเพื่อแสดงให้กับผู้ใช้

identifier: string

รหัสระบุสำหรับการบันทึก

finalOptions: Dictionary

ตารางทางเลือกจาก FinishOperation() .


OnRecordingStarted

การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

name: string

ชื่อของการดำเนินการที่ดำเนินการเหมาะสำหรับการบันทึกและการเขียนโค้ด

displayName: string

ชื่อของการดำเนินการที่ดำเนินการเพื่อแสดงให้กับผู้ใช้


OnRedo

การรักษาความปลอดภัยของปลั๊กอิน

ยิงเมื่อผู้ใช้ย้อนคำสั่งยกเลิก เวย์พอยท์อธิบายถึงการดำเนินการประเภทที่ได้รับการยกเลิกแล้ว

พารามิเตอร์

waypoint: string

OnUndo

การรักษาความปลอดภัยของปลั๊กอิน

ยิงเมื่อผู้ใช้ยกเลิกการดำเนินการในสตูดิโอ เวย์พอยท์อธิบายประเภทการดำเนินการที่ถูกยกเลิก

พารามิเตอร์

waypoint: string