自动更新型DUI扩展,将Time变量挪出TImeline UI,Effect效果容器修缮,移除Note的transform模块,Scene Camera优化
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace Ichni.Editor
|
||||
{
|
||||
public class DynamicUIInputField : DynamicUIElement, IHaveAutoUpdate
|
||||
{
|
||||
public TMP_InputField inputField;
|
||||
public bool isAutoUpdate { get; set; }
|
||||
public bool isReceiving { get; set; }
|
||||
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
|
||||
{
|
||||
base.Initialize(baseElement, title, parameterName);
|
||||
|
||||
if (parameterName != string.Empty)
|
||||
{
|
||||
ApplyContent();
|
||||
inputField.onEndEdit.AddListener(ApplyParameters);
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
(this as IHaveAutoUpdate).UpdateContent();
|
||||
}
|
||||
|
||||
public void SetDefaultValue(string text)
|
||||
{
|
||||
inputField.text = text;
|
||||
}
|
||||
|
||||
public T GetValue<T>()
|
||||
{
|
||||
return (T)Convert.ChangeType(inputField.text, typeof(T));
|
||||
}
|
||||
|
||||
public void SetAutoUpdate(bool enable)
|
||||
{
|
||||
isAutoUpdate = enable;
|
||||
isReceiving = true;
|
||||
|
||||
inputField.onSelect.AddListener(_ => isReceiving = false);
|
||||
inputField.onDeselect.AddListener(_ => isReceiving = true);
|
||||
}
|
||||
|
||||
public void ApplyContent()
|
||||
{
|
||||
inputField.text = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement).ToString(); //获取对应变量的值
|
||||
}
|
||||
|
||||
private void ApplyParameters(string text)
|
||||
{
|
||||
Type type = connectedBaseElement.GetType().GetField(parameterName).FieldType;
|
||||
if (type == typeof(int))
|
||||
{
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, int.Parse(text));
|
||||
}
|
||||
else if (type == typeof(float))
|
||||
{
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, float.Parse(text));
|
||||
}
|
||||
else if (type == typeof(string))
|
||||
{
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, text);
|
||||
}
|
||||
connectedBaseElement.Refresh();
|
||||
}
|
||||
|
||||
public void AddListenerFunction(UnityAction<string> action)
|
||||
{
|
||||
inputField.onEndEdit.AddListener(action);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user