using UnityEngine; public class SelectionManager { private static FacingTargetY s_Red; private static FacingTargetY s_Green; private static GActor s_Owner; public enum E_Type { None, Red, Green } public static E_Type s_Type; public static void Initiailze() { if (s_Red == null) { s_Red = SFXPlayUtility.Instance.PlayBattleEffect(999998, Constants.Special_Hide_Position, Vector3.forward). AddMissingComponent(); Object.DontDestroyOnLoad(s_Red.gameObject); } if (s_Green == null) { s_Green = SFXPlayUtility.Instance.PlayBattleEffect(999997, Constants.Special_Hide_Position, Vector3.forward). AddMissingComponent(); Object.DontDestroyOnLoad(s_Green.gameObject); } } public static void Request(E_Type type, GActor owner, float scale = 1) { if (owner == null) { return; } if (s_Type == type && s_Owner == owner) { return; } switch (type) { case E_Type.Red: Release(E_Type.Green); s_Red.transform.SetParentEx(owner.Root, Vector3.zero, Quaternion.identity, Vector3.one * scale); s_Red.target = CameraController.Instance.CameraObject.transform; break; case E_Type.Green: Release(E_Type.Red); s_Green.transform.SetParentEx(owner.Root, Vector3.zero, Quaternion.identity, Vector3.one * scale); s_Green.target = CameraController.Instance.CameraObject.transform; break; } s_Type = type; s_Owner = owner; } public static void Release(E_Type type) { switch (type) { case E_Type.Red: s_Red.transform.SetParent(null); s_Red.transform.localScale = Vector3.one; s_Red.transform.position = Constants.Special_Hide_Position; break; case E_Type.Green: s_Green.transform.SetParent(null); s_Green.transform.localScale = Vector3.one; s_Green.transform.position = Constants.Special_Hide_Position; break; } s_Type = E_Type.None; } }