using UnityEngine; namespace VketCloudGUITools.Runtime { /// /// GUIアイテム /// Selectableではない、最小のUI用 /// public abstract class VCGUIItemBehaviour : MonoBehaviour, IVCGUIItem, IHasVCTransform { [SerializeField] protected VCLayerList _parentLayer = null; [SerializeField] protected VCTransform _vcTransform; [SerializeField] protected bool _visible = false; public VCLayerList ParentLayer => _parentLayer; public VCTransform VcTransform { get { if (_vcTransform == null) { GetOrAddVCGUITransform(); } return _vcTransform; } } public virtual void ResolveRequireComponents() { _vcTransform = GetComponent(); } #if UNITY_EDITOR protected void Reset() { ResolveRequireComponents(); } #endif public virtual bool IsValid() { return false; } public bool Visible { get => _visible; protected set { if (_visible != value) { _visible = value; OnVisibleChanged(); } } } public bool Show { get => gameObject.activeSelf; set { gameObject.SetActive(value); UpdateVisible(); } } public Vector2Int Pos { get { return VcTransform.Pos; } set { VcTransform.Pos = value; VcTransform.ApplyTransform(); } } public Vector2Int Size { get { return VcTransform.Size; } set { VcTransform.Size = value; VcTransform.ApplyTransform(); } } public int Z { get { return VcTransform.Z; } set { VcTransform.Z = value; VcTransform.ApplyTransform(); } } public Vector3Int Pos3D { get => VcTransform.Pos3D; set { VcTransform.Pos3D = value; VcTransform.ApplyTransform(); } } public virtual void OnEnable() { UpdateVisible(); } public virtual void OnDisable() { UpdateVisible(); } public abstract void OnParentLayerShowChanged(); public abstract void UpdateVisible(); public abstract void OnVisibleChanged(); public abstract void OnResolveReferences(VCLayerList parentLayer); private void GetOrAddVCGUITransform() { if (_vcTransform == null) { _vcTransform = GetComponent(); if (_vcTransform == null) { _vcTransform = gameObject.AddComponent(); _vcTransform.GatherTransform(); #if UNITY_EDITOR UnityEditor.EditorUtility.SetDirty(this); UnityEditor.EditorUtility.SetDirty(_vcTransform); #endif } } } } }