using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using JetBrains.Annotations; using TMPro; using UnityEngine; using UnityEngine.UIElements.Experimental; namespace Ichni.Editor{ public class DynamicUIVec3InputField : DynamicUIElement { public TMP_InputField inputFieldx; public TMP_InputField inputFieldy; public TMP_InputField inputFieldz; public TransformSubmodule e=null; public override void Initialize(string title, string parameterName) { foreach(var i in connectedGameElement.submoduleList){ if(i.GetType()==typeof(TransformSubmodule)){ e= (TransformSubmodule)i; break; } } if (e == null)Destroy(gameObject); base.Initialize(title, parameterName); Vector3 pos = (Vector3)e.GetType().GetField(parameterName).GetValue(e); //获取对应变量的值 inputFieldx.text =pos.x.ToString(); inputFieldy.text =pos.y.ToString(); inputFieldz.text =pos.z.ToString(); }//我不应该用这种复制大法的( public void ApplyParametersx(string text) { Vector3 newpos=totramsf(text,0); e.GetType().GetField(parameterName).SetValue(e, newpos); } public void ApplyParametersy(string text) { Vector3 newpos=totramsf(text,1); e.GetType().GetField(parameterName).SetValue(e, newpos); } public void ApplyParametersz(string text) { Vector3 newpos=totramsf(text,2); e.GetType().GetField(parameterName).SetValue(e, newpos); } Vector3 totramsf(string value,int queue){ float avalue; if(!float.TryParse(value,out avalue)){ avalue=0f; } Vector3 a= (Vector3)e.GetType().GetField(parameterName).GetValue(e); //获取对应变量的值 a[queue]=avalue; return a; } } }