diff --git a/Convention/Editor/UI.meta b/Convention/Editor/UI.meta new file mode 100644 index 0000000..b142a91 --- /dev/null +++ b/Convention/Editor/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c35ac0f81d1249a46909cd5f6156b761 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Convention/Editor/UI/Button.cs b/Convention/Editor/UI/Button.cs new file mode 100644 index 0000000..1c70ec3 --- /dev/null +++ b/Convention/Editor/UI/Button.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Convention; +using UnityEditor; +using Convention.WindowsUI; + +[CustomEditor(typeof(ModernUIButton))] +public class ModernUIButtonEditor : AbstractCustomEditor +{ + +} diff --git a/Convention/Editor/UI/Button.cs.meta b/Convention/Editor/UI/Button.cs.meta new file mode 100644 index 0000000..ef929c3 --- /dev/null +++ b/Convention/Editor/UI/Button.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b297501dc7cdd2149ab976e2fb8f88f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Convention/Resources/WindowsPlugins/Hierarchy Variant.prefab b/Convention/Resources/WindowsPlugins/Hierarchy Variant.prefab index a1708d3..3086694 100644 --- a/Convention/Resources/WindowsPlugins/Hierarchy Variant.prefab +++ b/Convention/Resources/WindowsPlugins/Hierarchy Variant.prefab @@ -77,6 +77,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_rawButton: {fileID: 6792858692426831327} + m_modernButton: {fileID: 0} layerTab: 7.5 layerHeight: 15 dropdownImage: {fileID: 7630776060629663467} diff --git a/Convention/Resources/WindowsPlugins/Inspector Variant.prefab b/Convention/Resources/WindowsPlugins/Inspector Variant.prefab index 5b54798..debb4ba 100644 --- a/Convention/Resources/WindowsPlugins/Inspector Variant.prefab +++ b/Convention/Resources/WindowsPlugins/Inspector Variant.prefab @@ -439,6 +439,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_rawButton: {fileID: 3558458297121154720} + m_modernButton: {fileID: 0} layerTab: 7.5 layerHeight: 15 dropdownImage: {fileID: 240697464900702333} diff --git a/Convention/[Runtime]/File.cs b/Convention/[Runtime]/File.cs index 0ca56d0..2e47caa 100644 --- a/Convention/[Runtime]/File.cs +++ b/Convention/[Runtime]/File.cs @@ -273,14 +273,9 @@ namespace Convention public IEnumerator LoadAsAssetBundle([In] Action callback) { AssetBundleCreateRequest result = AssetBundle.LoadFromFileAsync(FullPath); - result.completed += x => - { - if (x.isDone) - { - callback(result.assetBundle); - } - }; yield return result; + callback(result.assetBundle); + yield return null; } public string LoadAsUnknown(string suffix) diff --git a/Convention/[Visual]/UIComponent/Variant/HierarchyWindow/HierarchyItem.cs b/Convention/[Visual]/UIComponent/Variant/HierarchyWindow/HierarchyItem.cs index 885f4b3..8fe0452 100644 --- a/Convention/[Visual]/UIComponent/Variant/HierarchyWindow/HierarchyItem.cs +++ b/Convention/[Visual]/UIComponent/Variant/HierarchyWindow/HierarchyItem.cs @@ -10,6 +10,11 @@ namespace Convention.WindowsUI.Variant string HierarchyItemTitle { get; } } + public interface IHierarchyItemClickEventListener + { + void OnHierarchyItemClick(HierarchyItem item); + } + public class HierarchyItem : PropertyListItem { [Content, HopeNotNull] public object m_target; @@ -70,6 +75,10 @@ namespace Convention.WindowsUI.Variant { InspectorWindow.instance.SetTarget(target, this); } + if(target is IHierarchyItemClickEventListener listener) + { + listener.OnHierarchyItemClick(this); + } } if (!IsEnableFocusWindow) return; diff --git a/Convention/[Visual]/UIComponent/Variant/PropertyListItem.cs b/Convention/[Visual]/UIComponent/Variant/PropertyListItem.cs index 0f00147..669ef0a 100644 --- a/Convention/[Visual]/UIComponent/Variant/PropertyListItem.cs +++ b/Convention/[Visual]/UIComponent/Variant/PropertyListItem.cs @@ -9,9 +9,11 @@ namespace Convention.WindowsUI.Variant { public class PropertyListItem : WindowUIModule, ITitle, IText, IItemEntry, IActionInvoke { - [Resources, SerializeField, OnlyNotNullMode] private Button m_rawButton; - [Resources, SerializeField, OnlyNotNullMode(nameof(m_rawButton))] private float layerTab = 7.5f; - [Resources, SerializeField, OnlyNotNullMode(nameof(m_rawButton))] private float layerHeight = 15f; + [Resources, SerializeField] private Button m_rawButton; + [Resources, SerializeField] private ModernUIButton m_modernButton; + public GameObject ButtonGameObject => m_rawButton == null ? m_modernButton.gameObject : m_rawButton.gameObject; + [Resources, SerializeField] private float layerTab = 7.5f; + [Resources, SerializeField] private float layerHeight = 15f; [Resources, SerializeField, OnlyNotNullMode] private RectTransform dropdownImage; [Resources, SerializeField, OnlyNotNullMode] private Text m_buttonText; [Resources, SerializeField, OnlyNotNullMode, Header("Self Layer")] private RectTransform m_Layer; @@ -44,10 +46,13 @@ namespace Convention.WindowsUI.Variant protected virtual void Start() { - m_rawButton.gameObject.AddComponent(); + ButtonGameObject.AddComponent(); dropdownImage.gameObject.AddComponent(); m_buttonText.gameObject.AddComponent(); - m_rawButton.onClick.AddListener(Switch); + if (m_rawButton != null) + m_rawButton.onClick.AddListener(Switch); + else + m_modernButton.AddListener(Switch); TextRectTransform = m_buttonText.GetComponent(); dropdownImage.eulerAngles = new(0, 0, IsFold ? 90 : 0); } @@ -79,7 +84,23 @@ namespace Convention.WindowsUI.Variant public virtual string title { get => m_buttonText.title; set => m_buttonText.title = value; } public virtual string text { get => m_buttonText.text; set => m_buttonText.text = value; } - public virtual bool interactable { get => m_rawButton.interactable; set => m_rawButton.interactable = value; } + public virtual bool interactable + { + get + { + if (m_rawButton != null) + return m_rawButton.interactable; + else + return m_modernButton.interactable; + } + set + { + if (m_rawButton != null) + m_rawButton.interactable = value; + else + m_modernButton.interactable = value; + } + } public void Switch() { @@ -134,7 +155,10 @@ namespace Convention.WindowsUI.Variant { foreach (var item in action) { - m_rawButton.onClick.AddListener(item); + if (m_rawButton != null) + m_rawButton.onClick.AddListener(item); + else + m_modernButton.AddListener(item); } return this; } @@ -143,14 +167,20 @@ namespace Convention.WindowsUI.Variant { foreach (var item in action) { - m_rawButton.onClick.RemoveListener(item); + if (m_rawButton != null) + m_rawButton.onClick.RemoveListener(item); + else + m_modernButton.RemoveListener(item); } return this; } public IActionInvoke RemoveAllListeners() { - m_rawButton.onClick.RemoveAllListeners(); + if (m_rawButton != null) + m_rawButton.onClick.RemoveAllListeners(); + else + m_modernButton.RemoveAllListeners(); return this; } }