using System.Collections.Generic; using UnityEngine; using UnityImage = UnityEngine.UI.Image; namespace VketCloudGUITools.Runtime { /// /// HeliodorのCImage相当 /// MEMO : ExecuteAlways は、エディタ上で親子変更やOn/Off変更による状態変化を追跡するために必要 /// [ExecuteAlways] [RequireComponent(typeof(RectTransform))] [RequireComponent(typeof(UnityImage))] public class VCImage : VCGUIItemBehaviour, IVCGUIItem, IHasStateToggleList, IHasVCTransform { [SerializeField] private UnityImage _unityImage; [SerializeField] private List _toggleList = new List(); [SerializeField] private List _uvArea; [SerializeField] private List _uvAreaRate; //[SerializeField] private string _fileName; public override void ResolveRequireComponents() { _vcTransform = GetComponent(); _unityImage = GetComponent(); } public string Name { get => gameObject.name; set => gameObject.name = value; } public Sprite Sprite { get => _unityImage.sprite; set => _unityImage.sprite = value; } public Color MulColor { get => _unityImage.color; set => _unityImage.color = value; } public List ToggleList { get => _toggleList; set => _toggleList = value; } public List UVArea { get => _uvArea; set => _uvArea = value; } public List UVAreaRate { get => _uvAreaRate; set => _uvAreaRate = value; } public override void OnParentLayerShowChanged() { UpdateVisible(); } public override void UpdateVisible() { // Visibleフラグは、heliodorとの互換性のための表示状態管理フラグです。 // https://hikky.atlassian.net/wiki/spaces/VKETCLOUD/pages/530317633/Canvas+Show Visible = Show && _toggleList.IsAllTrue() && ((ParentLayer != null) ? ParentLayer.Show : true); } public override void OnVisibleChanged() { if (_unityImage != null) _unityImage.enabled = Visible; } public override void OnResolveReferences(VCLayerList parentLayer) { _parentLayer = parentLayer; ResolveRequireComponents(); } public void ToggleChange(string name) { StateToggleListUtility.CommonToggleChange(this, this, name); } public void ToggleDefault(string name) { StateToggleListUtility.CommonToggleDefault(this, this, name); } } }