对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_EditorClassIdentifier:
m_rawButton: {fileID: 6792858692426831327}
m_modernButton: {fileID: 0}
layerTab: 7.5
layerHeight: 15
dropdownImage: {fileID: 7630776060629663467}

View File

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

View File

@@ -273,14 +273,9 @@ namespace Convention
public IEnumerator LoadAsAssetBundle([In] Action<AssetBundle> 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)

View File

@@ -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;

View File

@@ -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<RectTransformExtension.AdjustSizeIgnore>();
ButtonGameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>();
dropdownImage.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>();
m_buttonText.gameObject.AddComponent<RectTransformExtension.AdjustSizeIgnore>();
if (m_rawButton != null)
m_rawButton.onClick.AddListener(Switch);
else
m_modernButton.AddListener(Switch);
TextRectTransform = m_buttonText.GetComponent<RectTransform>();
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)
{
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)
{
if (m_rawButton != null)
m_rawButton.onClick.RemoveListener(item);
else
m_modernButton.RemoveListener(item);
}
return this;
}
public IActionInvoke RemoveAllListeners()
{
if (m_rawButton != null)
m_rawButton.onClick.RemoveAllListeners();
else
m_modernButton.RemoveAllListeners();
return this;
}
}