using UnityEngine; namespace XericUI.VisualForm { /// /// 虚拟窗体基类,提供基础的窗体标记功能 /// [AddComponentMenu("Xeric UI Vessel/AnchorWindow/XvFormBase")] public class XvFormBase : MonoBehaviour { [SerializeField] private string m_FormID; /// /// 窗体唯一标识 /// public string FormID { get => m_FormID; set => m_FormID = value; } /// /// 窗体是否处于活动状态 /// public bool IsFormActive => gameObject.activeInHierarchy && enabled; protected virtual void Awake() { TryGenerateFormID(); } /// /// 尝试自动生成FormID(如果当前为空) /// private void TryGenerateFormID() { if (string.IsNullOrEmpty(m_FormID)) { m_FormID = ((uint)GetInstanceID()).ToString(); } } #if UNITY_EDITOR protected virtual void OnValidate() { TryGenerateFormID(); } #endif } }