所有Simple UI Element,以及Composite Parameter Window初步
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Ichni.Editor
|
||||
{
|
||||
public partial class CompositeParameterWindow : MovableWindow
|
||||
{
|
||||
public Button addNewUnitButton;
|
||||
public GameObject unitPrefab;
|
||||
public IBaseElement connectedBaseElement;
|
||||
public List<DynamicUICompositeUnit> unitList;
|
||||
public string parameterName;
|
||||
public UnityAction ApplyParameters;
|
||||
|
||||
public void Initialize(IBaseElement baseElement, string title, string parameterName)
|
||||
{
|
||||
this.connectedBaseElement = baseElement;
|
||||
this.parameterName = parameterName;
|
||||
this.title.text = title;
|
||||
unitList = new List<DynamicUICompositeUnit>();
|
||||
closeButton.onClick.AddListener(() =>
|
||||
{
|
||||
ApplyParameters();
|
||||
Destroy(gameObject);
|
||||
});
|
||||
}
|
||||
|
||||
public void RemoveUnit(DynamicUICompositeUnit unit)
|
||||
{
|
||||
unitList.Remove(unit);
|
||||
Destroy(unit.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
public partial class CompositeParameterWindow
|
||||
{
|
||||
public void SetAsStringList()
|
||||
{
|
||||
unitPrefab = EditorManager.instance.basePrefabs.stringUnit;
|
||||
addNewUnitButton.onClick.AddListener(() =>
|
||||
{
|
||||
DynamicUIStringUnit unit = Instantiate(unitPrefab, windowRect).GetComponent<DynamicUIStringUnit>();
|
||||
unitList.Add(unit);
|
||||
unit.SetUnit(this, "");
|
||||
addNewUnitButton.GetComponent<RectTransform>().SetAsLastSibling();
|
||||
});
|
||||
|
||||
List<string> list = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement) as List<string>;
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
DynamicUIStringUnit unit = Instantiate(unitPrefab, windowRect).GetComponent<DynamicUIStringUnit>();
|
||||
unitList.Add(unit);
|
||||
unit.SetUnit(this, item);
|
||||
}
|
||||
|
||||
addNewUnitButton.GetComponent<RectTransform>().SetAsLastSibling();
|
||||
|
||||
ApplyParameters = () =>
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
foreach (var unit in unitList)
|
||||
{
|
||||
list.Add((unit as DynamicUIStringUnit).GetValue());
|
||||
Debug.Log((unit as DynamicUIStringUnit).GetValue());
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, list);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f716a33409746460589eb6305a5ed072
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -2,14 +2,17 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using DG.Tweening;
|
||||
using Ichni.RhythmGame;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace Ichni.Editor
|
||||
{
|
||||
public partial class Inspector : StaticWindow
|
||||
{
|
||||
public GameElement connectedGameElement;
|
||||
public Canvas inspectorCanvas;
|
||||
public RectTransform inspectorRect;
|
||||
public List<DynamicUIContainer> containers;
|
||||
|
||||
@@ -23,12 +26,21 @@ namespace Ichni.Editor
|
||||
containers.Clear();
|
||||
connectedGameElement = gameElement;
|
||||
connectedGameElement.SetUpInspector();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public partial class Inspector
|
||||
{
|
||||
public CompositeParameterWindow GenerateCompositeParameterWindow(IBaseElement baseElement, string title, string parameterName, Type parameterType)
|
||||
{
|
||||
CompositeParameterWindow compositeParameterWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.compositeParameterWindow,
|
||||
EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
|
||||
.GetComponent<CompositeParameterWindow>();
|
||||
compositeParameterWindow.Initialize(baseElement, title, parameterName);
|
||||
return compositeParameterWindow;
|
||||
}
|
||||
|
||||
public DynamicUIContainer GenerateContainer(string title)
|
||||
{
|
||||
DynamicUIContainer container =
|
||||
@@ -49,6 +61,18 @@ namespace Ichni.Editor
|
||||
return container;
|
||||
}
|
||||
|
||||
public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUIContainer container, string buttonText,
|
||||
UnityAction function, string title = "null")
|
||||
{
|
||||
DynamicUIButton button = Instantiate(EditorManager.instance.basePrefabs.button, container.rect)
|
||||
.GetComponent<DynamicUIButton>();
|
||||
button.SetText(buttonText, title != "null");
|
||||
button.Initialize(baseElement, title, "null");
|
||||
button.ApplyFunction(function);
|
||||
container.dynamicUIElements.Add(button);
|
||||
return button;
|
||||
}
|
||||
|
||||
public DynamicUIInputField GenerateInputField(IBaseElement baseElement, DynamicUIContainer container,
|
||||
string title, string parameterName)
|
||||
{
|
||||
@@ -63,12 +87,32 @@ namespace Ichni.Editor
|
||||
string title, string parameterName)
|
||||
{
|
||||
DynamicUIVector3InputField vector3InputField =
|
||||
Instantiate(EditorManager.instance.basePrefabs.Vec3inputField, container.rect)
|
||||
Instantiate(EditorManager.instance.basePrefabs.Vector3inputField, container.rect)
|
||||
.GetComponent<DynamicUIVector3InputField>();
|
||||
vector3InputField.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(vector3InputField);
|
||||
return vector3InputField;
|
||||
}
|
||||
|
||||
public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUIContainer container,
|
||||
string title, string parameterName)
|
||||
{
|
||||
DynamicUIBaseColorPicker colorPicker = Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, container.rect)
|
||||
.GetComponent<DynamicUIBaseColorPicker>();
|
||||
colorPicker.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(colorPicker);
|
||||
return colorPicker;
|
||||
}
|
||||
|
||||
public DynamicUIEmissionColorPicker GenerateEmissionColorPicker(IBaseElement baseElement, DynamicUIContainer container,
|
||||
string title, string emissionEnabledName, string emissionColorName, string emissionIntensityName)
|
||||
{
|
||||
DynamicUIEmissionColorPicker colorPicker = Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, container.rect)
|
||||
.GetComponent<DynamicUIEmissionColorPicker>();
|
||||
colorPicker.Initialize(baseElement, title, emissionEnabledName, emissionColorName, emissionIntensityName);
|
||||
container.dynamicUIElements.Add(colorPicker);
|
||||
return colorPicker;
|
||||
}
|
||||
|
||||
public DynamicUIText GenerateText(IBaseElement baseElement, DynamicUIContainer container, string title,
|
||||
string parameterName, bool isAlwaysUpdate = false)
|
||||
|
||||
Reference in New Issue
Block a user