using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Ichni.RhythmGame; using TMPro; using UnityEngine; using UnityEngine.Events; namespace Ichni.Editor { public class DynamicUIEnumDropdown : DynamicUIElement { public TMP_Dropdown dropdown; public override void Initialize(IBaseElement baseElement, string title, string parameterName) { base.Initialize(baseElement, title, parameterName); dropdown.value = (int)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值 dropdown.onValueChanged.AddListener(ApplyParameters); } public void SetUpEnum(Type enumType) { dropdown.ClearOptions(); List enumNameList = System.Enum.GetNames(enumType).ToList(); dropdown.AddOptions(enumNameList); } private void ApplyParameters(int value) { connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, value); connectedBaseElement.Refresh(); } public override DynamicUIElement AddListenerFunction(UnityAction action) { dropdown.onValueChanged.AddListener(_ => action()); return this; } } }