using UnityEngine; // ต้นแบบ UI ที่บันทึกไว้ใน Scene ให้แก้ในหน้า Edit ได้ (เช่น ป้ายชื่อยาน, ข้อความ KILL, หน้าตั้งค่า) // ตอนเกมรัน ต้นแบบจะซ่อนตัวเองเสมอ และโค้ดจะ "คัดลอก" ต้นแบบไปใช้แทนการสร้างใหม่ // ไม่ต้องลบหรือปิดเอง ถ้าลืมเปิดค้างไว้ตอนกด Play ก็จะไม่โผล่ในเกม [DisallowMultipleComponent] public class EditableTemplate : MonoBehaviour { private void Awake() { if (Application.isPlaying) gameObject.SetActive(false); } // คัดลอกต้นแบบโดยไม่พาตัวซ่อนอัตโนมัติไปด้วย public static GameObject Spawn(GameObject template, Transform parent) { bool wasActive = template.activeSelf; // ปิดต้นแบบชั่วคราวเพื่อไม่ให้สำเนาเรียก Awake ก่อนเอาตัวซ่อนออก if (wasActive) template.SetActive(false); GameObject copy = parent != null ? Instantiate(template, parent, false) : Instantiate(template); if (wasActive) template.SetActive(true); var marker = copy.GetComponent(); if (marker != null) DestroyImmediate(marker); copy.SetActive(true); return copy; } }