หากต้องการขยายคำตอบของ Tetrad ให้พิจารณาสคริปต์เช่นนี้:
public class GameSystem : MonoBehavior
{
private GameSystem m_Instance;
public GameSystem Instance { get { return m_Instance; } }
void Awake()
{
m_Instance = this;
}
void OnDestroy()
{
m_Instance = null;
}
void Update()
{
// global game update logic goes here
}
void OnGui()
{
// common GUI code goes here
}
// etc.
}
จากนั้นคุณสามารถสร้างวัตถุที่เรียกว่า "GameSystem" ในรูทของฉากของคุณ ส่วนประกอบเดียวที่มันจะมีก็คือองค์ประกอบการแปลงในตัว (ตั้งค่าตำแหน่งไปยังจุดกำเนิดการหมุนไปยังตัวตนและขนาดของมันอยู่ที่หนึ่งไม่ใช่เรื่องสำคัญ แต่เป็นแนวปฏิบัติที่ดี) แนบองค์ประกอบ GameSystem กับวัตถุนั้น
ตอนนี้คุณสามารถเข้าถึงวัตถุทั่วโลกของคุณโดยใช้ GameSystem.Instance.blah () วิธีการจัดการเหตุการณ์มันถูกเรียกใช้โดยอัตโนมัติโดย Unity เนื่องจากมันมาจาก MonoBehavior และมีอยู่เป็นองค์ประกอบ คุณสามารถเพิ่มเขตข้อมูลที่อ้างถึงวัตถุเกมหรือส่วนประกอบอื่น ๆ และเชื่อมต่อในมุมมองลำดับชั้นวัตถุ Unity
ใช่นี่คือ "แปลก ๆ " ทั้งหมด มันอาจรู้สึกสกปรกเล็กน้อยที่จะต้องสร้างวัตถุ (ที่มีการแปลง) ซึ่งเป็นเพียงซิงเกิลระดับโลก นี่คือสิ่งที่ Unity ต้องการในการสร้างออบเจ็กต์ทั่วโลกที่ได้รับข้อความอัปเดตและจัดการได้ด้วยตัวแก้ไขคุณสมบัติของ Unity ที่เป็นค่าเริ่มต้น