Smart Replant เป็นปลั๊กอิน Unity ที่ช่วยให้คุณกู้คืนลิงก์ prefab ที่เสีย นอกจากนั้นยังสามารถแทนที่ prefabs ในฉากด้วย prefab ที่คล้ายกันที่มีสคริปต์เดียวกันโดยไม่สูญเสียการเปลี่ยนแปลงหรือการอ้างอิงวัตถุใด ๆ
ในการใช้ปลั๊กอินต้องตั้งค่าเวอร์ชัน Corrent .NET สำหรับโครงการของคุณ มิฉะนั้นจะไม่รวบรวม คุณสามารถเปลี่ยนรุ่น. NET ผ่าน: File -> Build settings -> Other settings -> Configuration -> Scripting Runtime Version -> .NET 4.x Equivalent
หลังจากดาวน์โหลดและติดตั้งแพ็คเกจแล้วคุณสามารถเปิดหน้าต่าง Smart แทนที่ได้โดยการนำทางไปยัง Tools -> Replace prefab...
ตัวอย่างต่อไปนี้จะแสดงกรณีการใช้งานหลักของปลั๊กอิน นอกจากนี้ยังมีวิดีโอบน YouTube ที่อธิบายปลั๊กอินได้อย่างชัดเจนยิ่งขึ้น

เพื่อที่จะ restore a prefab link ของวัตถุฉากให้ลากวัตถุฉากไปยังฟิลด์ที่สอดคล้องกันของหน้าต่าง ถัดไปค้นหาสำเร็จรูปดั้งเดิมในหน้าต่าง Unity Project และวางลงบนฟิลด์ fresh prefab
ภายใต้ Transfer component values คุณสามารถเลือกส่วนประกอบทั้งหมดที่อาจมีการเปลี่ยนแปลงที่คุณต้องการรักษา การตั้งค่าส่วนประกอบความสามัคคีไม่ได้รับการสนับสนุนในขณะนี้ยกเว้นค่า transform
หลังจากการตั้งค่าเหล่านี้ถูกสร้างขึ้นมาคุณสามารถเข้า Replace และลิงก์ prefab จะได้รับการกู้คืนโดยไม่สูญเสียการเปลี่ยนแปลงที่คุณทำกับวัตถุของคุณในที่เกิดเหตุ
บ่อยครั้งในการพัฒนาเกมสำเร็จรูปแบบจำลองถูกสร้างขึ้นเพื่อทดสอบฟังก์ชั่นเฉพาะของเกม elememt ในช่วงต่อมาของการพัฒนาเกมจะมีการสร้างปุ่มรุ่นที่ดีกว่า - ด้วยรุ่นที่สวยกว่าพื้นผิวเงาและอื่น ๆ
ดังนั้นหากคุณมีระดับที่มีเฉพาะ prefabs จำลอง แต่คุณต้องการแทนที่พวกเขาทั้งหมดด้วยเวอร์ชันใหม่ที่ดีกว่า Smart.Replace สามารถช่วยคุณได้
ภาพตัวอย่างด้านล่างแสดงฉากด้วยปุ่มและประตู ปุ่มมีสคริปต์ที่เรียกว่า Button Click ที่มีการอ้างอิงไปยังวัตถุประตูดังนั้นจึงสามารถเปิดหรือปิดประตูเมื่อคลิก

นอกจากนี้ยังมี prefab ปุ่มอื่นอย่างที่คุณเห็นในมุมมองโครงการที่เรียกว่า Button 1 มันดูแตกต่างกันเล็กน้อย แต่ยังมีส่วนประกอบของ ButtonClick และสามารถใช้งานได้เช่นปุ่มปัจจุบันของเรา นี่เป็นตัวเลือกที่ดีสำหรับการแทนที่ดังนั้นเราจึงวางวัตถุฉากของเราลงในหน้าต่างอัจฉริยะก่อนแล้วจึงเป็นปุ่ม prefab ที่ดีกว่าตรวจสอบให้แน่ใจว่าการอ้างอิงประตูจะได้รับการบำรุงรักษาหลังจากการเปลี่ยนแล้วเราก็เข้า replace

ปุ่มถูกแทนที่สำเร็จและยังคงมีการอ้างอิงถึงประตูดังนั้นมันจึงยังใช้งานได้!
เช่นนี้การตั้งค่าทั้งหมดของส่วนประกอบทั้งหมดสามารถรักษาได้ในระหว่างการเปลี่ยนเช่นค่า integer colors strings และอื่น ๆ
Fresh prefab ไม่ จำเป็นต้องมีลำดับชั้นของวัตถุเช่นเดียวกับ scene object ตั้งแต่ Smart.Replace เพียงแค่ใส่ใจสำหรับจุดตัดของส่วนประกอบ (ดูข้อ จำกัด สำหรับข้อมูลเพิ่มเติม)
แล้วเราจะเปลี่ยนประตูได้อย่างไร? ดูเหมือนว่าจะยุ่งยากเล็กน้อยเนื่องจากประตูไม่ได้อ้างอิงโดยปุ่ม อย่างไรก็ตาม Smart.retlace จะทำเมื่อคุณเปิดใช้งานตัวเลือก Transfer external references
กระบวนการเหมือนกันอีกครั้ง ก่อนอื่นเราเลือกวัตถุฉากจากนั้น prefab อีกครั้งที่เราไปแทนที่และประตูจะถูกแทนที่ด้วย prefab อื่น ในเวลาเดียวกันการอ้างอิงของปุ่มไปยังประตูจะได้รับการอัปเดต
Smart.Replace จะค้นหา object ภายนอกและการอ้างอิง component ไปยังวัตถุที่ถูกแทนที่ มันจะแม้แต่ค้นหา lists และ arrays สำหรับการอ้างอิงที่เป็นไปได้และจะอัปเดตตามที่อธิบายไว้
หากคุณมีวัตถุที่คล้ายกันในฉากที่คุณต้องการแทนที่มันจะน่าเบื่อที่จะทำทีละคน
Smart.Replace เสนอการค้นหาวัตถุที่คล้ายกันเพื่อให้เราสามารถแทนที่วัตถุจำนวนใดก็ได้ในครั้งเดียว ก่อนอื่นเราเลือกวัตถุใด ๆ ในฉากจากนั้น prefab - เพื่อให้เราสามารถค้นหาวัตถุที่คล้ายกัน โดยค่าเริ่มต้นไม่มีตัวกรองดังนั้นวัตถุทั้งหมดในฉากจะปรากฏขึ้น การค้นหาตามชื่อมีประสิทธิภาพมากในกรณีที่วัตถุทั้งหมดมีชื่อคล้ายกัน คุณสามารถค้นหาส่วนประกอบได้
หากเรากดปุ่มแทนที่เราจะเห็นว่าวัตถุทั้งหมดจะถูกแทนที่ในครั้งเดียว หากพวกเขามีการอ้างอิงซึ่งกันและกันพวกเขาก็จะได้รับการเก็บรักษาไว้เช่นกัน
เพื่อให้ปลั๊กอินใช้งานง่ายมีข้อ จำกัด บางประการที่คุณควรรู้:
component intersection จะแสดงองค์ประกอบความสามัคคีเพื่อความสมบูรณ์ค่าของพวกเขาสามารถรักษาค่าของพวกเขาได้ ข้อยกเว้นเพียงอย่างเดียวคือองค์ประกอบ transform ที่มี UI ของตัวเอง (ดูด้านล่าง)one component type per object หากคุณมีส่วนประกอบหลายประเภทในประเภทเดียวกันในวัตถุฉากของคุณจะมีการรักษาค่าแรกของค่าแรกเท่านั้น ส่วนที่เหลือจะถูกทิ้งobject ที่ถูกแทนที่จะได้รับการบำรุงรักษา อย่างไรก็ตามการอ้างอิงวัตถุภายนอกจะชี้ไปที่วัตถุ parent เสมอหลังจากการเปลี่ยน คุณสามารถติดต่อฉันได้ตลอดเวลาที่ [email protected]