42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
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<string> 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;
|
|
}
|
|
}
|
|
} |