using System.Collections; using System.Collections.Generic; 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; Transform objtransform; public override void Initialize(string title, string parameterName) { base.Initialize(title, parameterName); objtransform = connectedGameElement.transform; Vector3 pos = (Vector3)objtransform.GetType().GetProperty(parameterName).GetValue(objtransform); inputFieldx.text =pos.x.ToString(); inputFieldx.onEndEdit.AddListener(ApplyParametersx); inputFieldy.text =pos.y.ToString(); inputFieldx.onEndEdit.AddListener(ApplyParametersy); inputFieldz.text =pos.z.ToString(); inputFieldx.onEndEdit.AddListener(ApplyParametersz); }//我不应该用这种复制大法的( private void ApplyParametersx(string text) { Vector3 newpos=totramsf(float.Parse(text),0); transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos); } private void ApplyParametersy(string text) { Vector3 newpos=totramsf(float.Parse(text),1); transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos); } private void ApplyParametersz(string text) { Vector3 newpos=totramsf(float.Parse(text),2); transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos); } Vector3 totramsf(float value,int queue){ Vector3 a= (Vector3)transform.GetType().GetProperty(parameterName).GetValue(connectedGameElement.transform); switch(queue){ case 0:a.x=value;break; case 1:a.y=value;break; case 2:a.z=value;break; } return a; } } }