Files
SoulliesOfficial f26f9fd374 爆更
2026-03-20 12:07:44 -04:00

47 lines
1.5 KiB
C#

using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;
namespace SubAssetsToolbox.Samples.Editor
{
[CustomEditor(typeof(SubAssetAwareSO), true)]
public class SubAssetAwareSOEditor : UnityEditor.Editor
{
public VisualTreeAsset lineTemplate;
public VisualTreeAsset extrasTemplate;
private SerializedProperty _subAssetsProp;
public override VisualElement CreateInspectorGUI()
{
VisualElement inspector = new();
InspectorElement.FillDefaultInspector(inspector, serializedObject, this);
_subAssetsProp = serializedObject.FindProperty("_subAssets");
if (_subAssetsProp.arraySize != 0)
{
extrasTemplate.CloneTree(inspector);
// Draw sub-assets list
ListView subAssetsList = inspector.Q<ListView>("SubAssetsList");
subAssetsList.makeItem += MakeItem;
subAssetsList.bindItem += BindItem;
subAssetsList.BindProperty(_subAssetsProp);
}
return inspector;
}
private VisualElement MakeItem()
{
return lineTemplate.Instantiate();
}
private void BindItem(VisualElement visualElement, int index)
{
Object subAsset = _subAssetsProp.GetArrayElementAtIndex(index).objectReferenceValue;
visualElement.Q<ObjectField>("SubAssetField").value = subAsset;
}
}
}