所有Simple UI Element,以及Composite Parameter Window初步

This commit is contained in:
SoulliesOfficial
2025-02-13 02:04:41 -05:00
parent 8d03acc3cb
commit 96a4d620f5
65 changed files with 10696 additions and 75 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5d3c41c31f7b343b9bfc57ff57db0d98
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DynamicUIAnimatedBoolUnit : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f211e33384bf944c5a09d44380891f0f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DynamicUIAnimatedFloatUnit : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1537147b01c0245bf9a251bf2f389aba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DynamicUIAnimatedIntUnit : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b1cf6398637f64932bcf2c37d4516bd5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,15 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace Ichni.Editor
{
public abstract class DynamicUICompositeUnit : MonoBehaviour
{
public CompositeParameterWindow compositeParameterWindow;
public Button removeButton;
public abstract void SetUnit(CompositeParameterWindow list, object itemContent);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: eace3878b5dc24c2c96a120731e37d45
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class DynamicUIStringUnit : DynamicUICompositeUnit
{
public TMP_InputField stringInputField;
public override void SetUnit(CompositeParameterWindow list, object itemContent)
{
compositeParameterWindow = list;
stringInputField.text = (string)itemContent;
stringInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters());
removeButton.onClick.AddListener(() =>
{
compositeParameterWindow.RemoveUnit(this);
compositeParameterWindow.ApplyParameters();
});
}
public string GetValue()
{
return stringInputField.text;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b16905b5bd2a84cf8b1830193f3036b7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6b072012b6a4e46799f0eb93c989ce51
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,44 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class DynamicUIBaseColorPicker : DynamicUIElement
{
public TMP_InputField inputFieldBaseR;
public TMP_InputField inputFieldBaseG;
public TMP_InputField inputFieldBaseB;
public TMP_InputField inputFieldBaseA;
public Image colorPreview;
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
{
base.Initialize(baseElement, title, parameterName);
Color baseColor = (Color)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值
inputFieldBaseR.text = baseColor.r.ToString();
inputFieldBaseG.text = baseColor.g.ToString();
inputFieldBaseB.text = baseColor.b.ToString();
inputFieldBaseA.text = baseColor.a.ToString();
inputFieldBaseR.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldBaseG.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldBaseB.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldBaseA.onEndEdit.AddListener(_ => ApplyParameters());
colorPreview.color = baseColor;
}
private void ApplyParameters()
{
Color newValue = new Color(float.Parse(inputFieldBaseR.text), float.Parse(inputFieldBaseG.text),
float.Parse(inputFieldBaseB.text), float.Parse(inputFieldBaseA.text));
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newValue);
colorPreview.color = newValue;
connectedBaseElement.Refresh();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9f5915d0f462947f5bec62ea7e118953
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,28 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class DynamicUIButton : DynamicUIElement
{
public Button button;
public TMP_Text buttonText;
public void SetText(string buttonText, bool hasTitle)
{
this.buttonText.text = buttonText;
if(!hasTitle) title.gameObject.SetActive(false);
}
public void ApplyFunction(UnityAction function)
{
button.onClick.AddListener(function);
button.onClick.AddListener(connectedBaseElement.Refresh);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bc123b9138432416184ac4c89b248852
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,62 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class DynamicUIEmissionColorPicker : DynamicUIElement
{
private string emissionEnabledName, colorParameterName, emissionIntensityName;
public Toggle toggleEnableEmission;
public TMP_InputField inputFieldEmissionR;
public TMP_InputField inputFieldEmissionG;
public TMP_InputField inputFieldEmissionB;
public TMP_InputField inputFieldEmissionI;
public Image colorPreview;
public new void Initialize(IBaseElement baseElement, string title,
string emissionEnabledName, string colorParameterName, string emissionIntensityName)
{
base.Initialize(baseElement, title, colorParameterName);
this.emissionEnabledName = emissionEnabledName;
this.colorParameterName = colorParameterName;
this.emissionIntensityName = emissionIntensityName;
bool enableEmission = (bool)connectedBaseElement.GetType().GetField(emissionEnabledName).GetValue(connectedBaseElement);
Color emissionColor = (Color)connectedBaseElement.GetType().GetField(colorParameterName).GetValue(connectedBaseElement);
float emissionIntensity = (float)connectedBaseElement.GetType().GetField(emissionIntensityName).GetValue(connectedBaseElement);
toggleEnableEmission.isOn = enableEmission;
inputFieldEmissionR.text = emissionColor.r.ToString();
inputFieldEmissionG.text = emissionColor.g.ToString();
inputFieldEmissionB.text = emissionColor.b.ToString();
inputFieldEmissionI.text = emissionIntensity.ToString();
toggleEnableEmission.onValueChanged.AddListener(_ => ApplyParameters());
inputFieldEmissionR.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldEmissionG.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldEmissionB.onEndEdit.AddListener(_ => ApplyParameters());
inputFieldEmissionI.onEndEdit.AddListener(_ => ApplyParameters());
colorPreview.color = emissionColor;
}
private void ApplyParameters()
{
bool enableEmission = toggleEnableEmission.isOn;
Color emissionColor = new Color(float.Parse(inputFieldEmissionR.text), float.Parse(inputFieldEmissionG.text),
float.Parse(inputFieldEmissionB.text));
float emissionIntensity = float.Parse(inputFieldEmissionI.text);
connectedBaseElement.GetType().GetField(emissionEnabledName).SetValue(connectedBaseElement, enableEmission);
connectedBaseElement.GetType().GetField(colorParameterName).SetValue(connectedBaseElement, emissionColor);
connectedBaseElement.GetType().GetField(emissionIntensityName).SetValue(connectedBaseElement, emissionIntensity);
colorPreview.color = emissionColor;
connectedBaseElement.Refresh();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 836ab6bd424664b3cb74dd0fcb08c039
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,26 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class DynamicUIToggle : DynamicUIElement
{
public Toggle toggle;
public override void Initialize(IBaseElement baseElement, string title, string parameterName)
{
base.Initialize(baseElement, title, parameterName);
toggle.isOn = (bool)connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement); //获取对应变量的值
toggle.onValueChanged.AddListener(ApplyParameters);
}
private void ApplyParameters(bool value)
{
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, value);
connectedBaseElement.Refresh();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: dbe43137b87e24779be3757535fa9984
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -28,7 +28,7 @@ namespace Ichni.Editor
inputFieldZ.onEndEdit.AddListener(_ => ApplyParameters());
}
public void ApplyParameters()
private 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);