using UnityEngine; public class HUDBase : MyCoroutine { protected RectTransform m_RectTransform, m_CanvasRect; protected Transform m_Target; protected Camera m_Camera; bool isRect = false; bool isTarget = false, isCanvasRect = false, isMainCam = false; void Init() { if (!isRect) { m_RectTransform = GetComponent(); isRect = !DSUtil.CheckNull(m_RectTransform); } if (!isCanvasRect) { m_CanvasRect = GetComponentInParent().GetComponent(); isCanvasRect = !DSUtil.CheckNull(m_CanvasRect); } if (!isMainCam) { m_Camera = Camera.main; isMainCam = !DSUtil.CheckNull(m_Camera); } } public void Set_Target(Transform _target) { Init(); m_Target = _target; isTarget = !DSUtil.CheckNull(m_Target); } void Update() { if (isTarget && isCanvasRect && isMainCam) { RectTransform CanvasRect = m_CanvasRect; Vector2 ViewportPosition = m_Camera.WorldToViewportPoint(m_Target.position); Vector2 WorldObject_ScreenPosition = new Vector2((ViewportPosition.x * CanvasRect.sizeDelta.x) - (CanvasRect.sizeDelta.x * 0.5f), (ViewportPosition.y * CanvasRect.sizeDelta.y) - (CanvasRect.sizeDelta.y * 0.5f) - 15f); m_RectTransform.anchoredPosition = WorldObject_ScreenPosition; } } public static string Get_TextColor(eAttackType _attacktype) { switch (_attacktype) { default: case eAttackType.Physics: return ""; case eAttackType.Magic: return ""; case eAttackType.Pure: return ""; } } public void Off() { gameObject.SetActive(false); Init(); m_RectTransform.anchoredPosition = Vector3.one * 10000f; // 멀리 보내야 다음에 켜질 때 깜빡임 없어짐 } }