เวลาเราทำเกม ถ้าในเกมเราต้องมี globin ที่หน้าตาเหมือนกันเป๊ะๆ ซักร้อยตัวเราจะทำการสร้าง prefabs globin ดังรูป

ประโยชน์แรกของ prefabs คือ เราสามารถนำมันมาวางซ้ำๆ ใน scene ได้

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


แต่ถ้าเราอยากมี goblin ประเภทใหม่ที่หน้าตาคล้ายเดิมแต่ประเภทหนึ่งมีเกราะอีกประเภทหนึ่งสีเหลืองละเราต้องทำอย่างไร ตามปกติเราอาจ duplicate prefabs goblin มาสร้างเป็น prefabs ใหม่ได้ แต่วิธีนั้นอาจทำให้เกิดปัญหาในอนาคต เช่น ถ้าเราอยากให้ goblin ทุกประเภทใส่หมวกเราต้องมานั่งทำใหม่ทั้งสาม prefabs ซึ่งเป้นการสิ้นเปลืองเวลาเป็นอย่างมาก Unity จึงคิด feature ใหม่มาตอบโจทย์นี้เรียกว่า “Prefabs Variant”
Prefabs Variant คือ Prefabs ที่ถูกสร้างจาก Prefabs อีกที โดยตัว variant จะคงคุณสมบัติเหมือน Prefabs ธรรมดาคือสามารถเปลี่ยนค่าตาม prefabs หลักได้ แต่ตัว variant ไม่จำเป็นต้องเหมือน prefabs เป๊ะๆ สามารถ edit หรือเพิ่ม GameObject และอื่นๆ เข้าไปได้ หาก Prefabs พยายามมาเขียนทับด้วยค่าที่ variant แก้ไปแล้วจะไม่ถูกเขียนทับ
ถ้าผู้เขียนต้องการสร้าง goblin ประเภทย่อยจากตัวหลักที่ใส่เกราะ (hp เยอะกว่าตัวหลัก) แต่ยังมีหน้าตาเหมือนเดิมสามารถทำได้ดังนี้
คลิกขวาที่ prefabs Goblin เลือก Create > Prefabs Variant

Unity จะทำการสร้าง Prefabs Variant ขึ้นมาจาก goblin ที่เราเลืออกและจะมีหน้าตาดังภาพ โดย prefabs variant สามารถนำมา edit ได้เหมือน prefabs ตามปกติ โดยผู้เขียนจะทำการใส่เกราะ (cube สีเทา) และเพิ่ม hp เป็น 20 ตามรูป (สังเกตุว่าค่าที่ปรับที่แตกต่างจากตัว goblin หลักจะมีแถบสีฟ้าข้างหน้า)

goblin อีกชนิดที่ผู้เขียนต้องการสร้างคือ goblin สีฟ้า ที่มีความเร็วมากกว่าปกติ สามารถทำได้โดยการสร้าง Prefabs Variant จากตัวหลักอีกครั้ง ดังรูป

ทั้ง Prefabs และ Variant สามารถนำมาใช้ซ้ำใน scene ได้


ถ้าผู้เขียนอยากเปลี่ยนสี goblin ทุกตัวและใส่หมวกให้มันสามารถทำได้ที่ Prefabs หลัก

เมื่อออกมาในหน้า scene จะเห็นได้ว่า goblin ทุกตัวใส่หมวกและมีสีเหลือง ยกเว้น goblin สีฟ้าที่ไม่ยอมเปลี่ยนสีเพราะเราได้ทำการ override สีใน prefabs variant ไปแล้ว ทำให้ไม่ถูกทับด้วยข้อมูลจาก prefabs หลัก

หลักการนี้สามารถใช้กับการปรับค่าใน inspector ด้วยเช่นกันหากเราปรับค่า hp ที่ตัวหลักเป็น 5 goblin ทุกตัวยกเว้น goblin เกราะจะถูกปรับให้เหลือ 5 แต่ goblin เกราะจะมี hp = 20 เท่าเดิมไม่เปลี่ยน

References
https://docs.unity3d.com/2019.2/Documentation/Manual/PrefabVariants.html
https://www.youtube.com/watch?v=S0cjIhI2fIw