using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using JetBrains.Annotations; using TMPro; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UIElements.Experimental; namespace Ichni.Editor { public class DynamicUIVector3InputField : DynamicUIElement { public TMP_InputField inputFieldX; public TMP_InputField inputFieldY; public TMP_InputField inputFieldZ; public override void Initialize(IBaseElement baseElement, string title, string parameterName) { base.Initialize(baseElement, title, parameterName); Vector3 pos = (Vector3)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值 inputFieldX.text = pos.x.ToString(); inputFieldY.text = pos.y.ToString(); inputFieldZ.text = pos.z.ToString(); inputFieldX.onEndEdit.AddListener(_ => ApplyParameters()); inputFieldY.onEndEdit.AddListener(_ => ApplyParameters()); inputFieldZ.onEndEdit.AddListener(_ => ApplyParameters()); } public void ApplyParameters() { Vector3 newValue = new Vector3(float.Parse(inputFieldX.text), float.Parse(inputFieldY.text), float.Parse(inputFieldZ.text)); connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newValue); connectedBaseElement.Refresh(); } } }