对Hierarchy进行提升

This commit is contained in:
2025-09-02 18:02:03 +08:00
parent f9f80aa559
commit f6384a4a8c
8 changed files with 83 additions and 16 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c35ac0f81d1249a46909cd5f6156b761
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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
{
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b297501dc7cdd2149ab976e2fb8f88f0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -77,6 +77,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_rawButton: {fileID: 6792858692426831327} m_rawButton: {fileID: 6792858692426831327}
m_modernButton: {fileID: 0}
layerTab: 7.5 layerTab: 7.5
layerHeight: 15 layerHeight: 15
dropdownImage: {fileID: 7630776060629663467} dropdownImage: {fileID: 7630776060629663467}

View File

@@ -439,6 +439,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_rawButton: {fileID: 3558458297121154720} m_rawButton: {fileID: 3558458297121154720}
m_modernButton: {fileID: 0}
layerTab: 7.5 layerTab: 7.5
layerHeight: 15 layerHeight: 15
dropdownImage: {fileID: 240697464900702333} dropdownImage: {fileID: 240697464900702333}

View File

@@ -273,14 +273,9 @@ namespace Convention
public IEnumerator LoadAsAssetBundle([In] Action<AssetBundle> callback) public IEnumerator LoadAsAssetBundle([In] Action<AssetBundle> callback)
{ {
AssetBundleCreateRequest result = AssetBundle.LoadFromFileAsync(FullPath); AssetBundleCreateRequest result = AssetBundle.LoadFromFileAsync(FullPath);
result.completed += x =>
{
if (x.isDone)
{
callback(result.assetBundle);
}
};
yield return result; yield return result;
callback(result.assetBundle);
yield return null;
} }
public string LoadAsUnknown(string suffix) public string LoadAsUnknown(string suffix)

View File

@@ -10,6 +10,11 @@ namespace Convention.WindowsUI.Variant
string HierarchyItemTitle { get; } string HierarchyItemTitle { get; }
} }
public interface IHierarchyItemClickEventListener
{
void OnHierarchyItemClick(HierarchyItem item);
}
public class HierarchyItem : PropertyListItem public class HierarchyItem : PropertyListItem
{ {
[Content, HopeNotNull] public object m_target; [Content, HopeNotNull] public object m_target;
@@ -70,6 +75,10 @@ namespace Convention.WindowsUI.Variant
{ {
InspectorWindow.instance.SetTarget(target, this); InspectorWindow.instance.SetTarget(target, this);
} }
if(target is IHierarchyItemClickEventListener listener)
{
listener.OnHierarchyItemClick(this);
}
} }
if (!IsEnableFocusWindow) if (!IsEnableFocusWindow)
return; return;

View File

@@ -9,9 +9,11 @@ namespace Convention.WindowsUI.Variant
{ {
public class PropertyListItem : WindowUIModule, ITitle, IText, IItemEntry, IActionInvoke public class PropertyListItem : WindowUIModule, ITitle, IText, IItemEntry, IActionInvoke
{ {
[Resources, SerializeField, OnlyNotNullMode] private Button m_rawButton; [Resources, SerializeField] private Button m_rawButton;
[Resources, SerializeField, OnlyNotNullMode(nameof(m_rawButton))] private float layerTab = 7.5f; [Resources, SerializeField] private ModernUIButton m_modernButton;
[Resources, SerializeField, OnlyNotNullMode(nameof(m_rawButton))] private float layerHeight = 15f; 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 RectTransform dropdownImage;
[Resources, SerializeField, OnlyNotNullMode] private Text m_buttonText; [Resources, SerializeField, OnlyNotNullMode] private Text m_buttonText;
[Resources, SerializeField, OnlyNotNullMode, Header("Self Layer")] private RectTransform m_Layer; [Resources, SerializeField, OnlyNotNullMode, Header("Self Layer")] private RectTransform m_Layer;
@@ -44,10 +46,13 @@ namespace Convention.WindowsUI.Variant
protected virtual void Start() protected virtual void Start()
{ {
m_rawButton.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>(); ButtonGameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>();
dropdownImage.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>(); dropdownImage.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>();
m_buttonText.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>(); m_buttonText.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>();
if (m_rawButton != null)
m_rawButton.onClick.AddListener(Switch); m_rawButton.onClick.AddListener(Switch);
else
m_modernButton.AddListener(Switch);
TextRectTransform = m_buttonText.GetComponent<RectTransform>(); TextRectTransform = m_buttonText.GetComponent<RectTransform>();
dropdownImage.eulerAngles = new(0, 0, IsFold ? 90 : 0); 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 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 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() public void Switch()
{ {
@@ -134,7 +155,10 @@ namespace Convention.WindowsUI.Variant
{ {
foreach (var item in action) foreach (var item in action)
{ {
if (m_rawButton != null)
m_rawButton.onClick.AddListener(item); m_rawButton.onClick.AddListener(item);
else
m_modernButton.AddListener(item);
} }
return this; return this;
} }
@@ -143,14 +167,20 @@ namespace Convention.WindowsUI.Variant
{ {
foreach (var item in action) foreach (var item in action)
{ {
if (m_rawButton != null)
m_rawButton.onClick.RemoveListener(item); m_rawButton.onClick.RemoveListener(item);
else
m_modernButton.RemoveListener(item);
} }
return this; return this;
} }
public IActionInvoke RemoveAllListeners() public IActionInvoke RemoveAllListeners()
{ {
if (m_rawButton != null)
m_rawButton.onClick.RemoveAllListeners(); m_rawButton.onClick.RemoveAllListeners();
else
m_modernButton.RemoveAllListeners();
return this; return this;
} }
} }