38 lines
1.5 KiB
C#
38 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|
|
} |