重构inspector!
This commit is contained in:
@@ -35,15 +35,16 @@ namespace Ichni.Editor
|
||||
Destroy(unit.gameObject);
|
||||
}
|
||||
|
||||
public void AddListenerFunction(UnityAction action)
|
||||
public CompositeParameterWindow AddListenerFunction(UnityAction action)
|
||||
{
|
||||
onQuit = action;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class CompositeParameterWindow
|
||||
{
|
||||
public void SetAsStringList()
|
||||
public CompositeParameterWindow SetAsStringList()
|
||||
{
|
||||
//生成Unit
|
||||
void GenerateUnit(string content)
|
||||
@@ -76,9 +77,11 @@ namespace Ichni.Editor
|
||||
List<string> stringList = unitList.Select(unit => (unit as DynamicUIInputFieldUnit).GetValue<string>()).ToList();
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, stringList);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetAsFloatList()
|
||||
public CompositeParameterWindow SetAsFloatList()
|
||||
{
|
||||
void GenerateUnit(float content)
|
||||
{
|
||||
@@ -106,9 +109,11 @@ namespace Ichni.Editor
|
||||
List<float> floatList = unitList.Select(unit => (unit as DynamicUIInputFieldUnit).GetValue<float>()).ToList();
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, floatList);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetAsFlexibleFloat()
|
||||
public CompositeParameterWindow SetAsFlexibleFloat()
|
||||
{
|
||||
void GenerateUnit(AnimatedFloat content)
|
||||
{
|
||||
@@ -141,9 +146,11 @@ namespace Ichni.Editor
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleFloat);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetAsFlexibleInt()
|
||||
public CompositeParameterWindow SetAsFlexibleInt()
|
||||
{
|
||||
void GenerateUnit(AnimatedInt content)
|
||||
{
|
||||
@@ -176,9 +183,11 @@ namespace Ichni.Editor
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleInt);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetAsFlexibleBool()
|
||||
public CompositeParameterWindow SetAsFlexibleBool()
|
||||
{
|
||||
void GenerateUnit(AnimatedBool content)
|
||||
{
|
||||
@@ -210,9 +219,11 @@ namespace Ichni.Editor
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleBool);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetAsCustomCurve()
|
||||
public CompositeParameterWindow SetAsCustomCurve()
|
||||
{
|
||||
void GenerateUnit(Keyframe content)
|
||||
{
|
||||
@@ -258,9 +269,11 @@ namespace Ichni.Editor
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newCurve);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public void SetAsStringIntDictionary()
|
||||
public CompositeParameterWindow SetAsStringIntDictionary()
|
||||
{
|
||||
//生成Unit
|
||||
void GenerateUnit(KeyValuePair<string, int> content)
|
||||
@@ -298,6 +311,8 @@ namespace Ichni.Editor
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, dictionaryList);
|
||||
};
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ namespace Ichni.Editor
|
||||
{
|
||||
public RectTransform WindowRect { get; set; }
|
||||
public List<DynamicUIContainer> Containers { get; set; }
|
||||
public Dictionary<string, DynamicUISubcontainer> MarkedSubcontainers { get; set; }
|
||||
public Dictionary<string, DynamicUIElement> MarkedElements { get; set; }
|
||||
|
||||
public CompositeParameterWindow GenerateCompositeParameterWindow(IBaseElement baseElement, string title,
|
||||
@@ -33,12 +34,12 @@ namespace Ichni.Editor
|
||||
graphicalFlexibleFloatWindow.Initialize(baseElement, title, FlexibleFloats, subTitle);
|
||||
return graphicalFlexibleFloatWindow;
|
||||
}
|
||||
public DynamicUIContainer GenerateContainer(string title)
|
||||
public DynamicUIContainer GenerateContainer(string titleText)
|
||||
{
|
||||
DynamicUIContainer container =
|
||||
Object.Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, WindowRect)
|
||||
.GetComponent<DynamicUIContainer>();
|
||||
container.title.text = title;
|
||||
container.Initialize(titleText);
|
||||
Containers.Add(container);
|
||||
return container;
|
||||
}
|
||||
@@ -53,154 +54,154 @@ namespace Ichni.Editor
|
||||
return container;
|
||||
}
|
||||
|
||||
public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUIContainer container, string buttonText,
|
||||
UnityAction function, string title = "null")
|
||||
public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title,
|
||||
UnityAction function)
|
||||
{
|
||||
DynamicUIButton button = Object.Instantiate(EditorManager.instance.basePrefabs.button, container.rect)
|
||||
DynamicUIButton button = Object.Instantiate(EditorManager.instance.basePrefabs.button, subcontainer.rect)
|
||||
.GetComponent<DynamicUIButton>();
|
||||
button.SetText(buttonText, title != "null");
|
||||
button.SetText(title);
|
||||
button.Initialize(baseElement, title, string.Empty);
|
||||
button.ApplyFunction(function);
|
||||
container.dynamicUIElements.Add(button);
|
||||
subcontainer.dynamicUIElements.Add(button);
|
||||
return button;
|
||||
}
|
||||
|
||||
public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUIContainer container, string title,
|
||||
public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title,
|
||||
string parameterName)
|
||||
{
|
||||
DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, container.rect)
|
||||
DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, subcontainer.rect)
|
||||
.GetComponent<DynamicUIToggle>();
|
||||
toggle.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(toggle);
|
||||
subcontainer.dynamicUIElements.Add(toggle);
|
||||
return toggle;
|
||||
}
|
||||
|
||||
public DynamicUIInputField GenerateInputField(DynamicUIContainer container,
|
||||
public DynamicUIInputField GenerateInputField(DynamicUISubcontainer subcontainer,
|
||||
string title, string defaultText = "") //不与参数绑定的InputField
|
||||
{
|
||||
DynamicUIInputField inputField = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
|
||||
.GetComponent<DynamicUIInputField>();
|
||||
inputField.Initialize(null, title, string.Empty);
|
||||
inputField.SetDefaultValue(defaultText);
|
||||
container.dynamicUIElements.Add(inputField);
|
||||
subcontainer.dynamicUIElements.Add(inputField);
|
||||
return inputField;
|
||||
}
|
||||
|
||||
public DynamicUIInputField GenerateInputField(IBaseElement baseElement,
|
||||
DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false) //与参数绑定的InputField
|
||||
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false) //与参数绑定的InputField
|
||||
{
|
||||
DynamicUIInputField inputField = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
|
||||
.GetComponent<DynamicUIInputField>();
|
||||
inputField.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(inputField);
|
||||
subcontainer.dynamicUIElements.Add(inputField);
|
||||
return inputField;
|
||||
}
|
||||
|
||||
public DynamicUIVector3InputField GenerateVector3InputField(DynamicUIContainer container, string title,
|
||||
public DynamicUIVector3InputField GenerateVector3InputField(DynamicUISubcontainer subcontainer, string title,
|
||||
Vector3 defaultVector3 = default)
|
||||
{
|
||||
DynamicUIVector3InputField vector3InputField =
|
||||
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect)
|
||||
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, subcontainer.rect)
|
||||
.GetComponent<DynamicUIVector3InputField>();
|
||||
vector3InputField.Initialize(null, title, string.Empty);
|
||||
vector3InputField.SetDefaultValue(defaultVector3);
|
||||
container.dynamicUIElements.Add(vector3InputField);
|
||||
subcontainer.dynamicUIElements.Add(vector3InputField);
|
||||
return vector3InputField;
|
||||
}
|
||||
|
||||
public DynamicUIVector3InputField GenerateVector3InputField(IBaseElement baseElement,
|
||||
DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false)
|
||||
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false)
|
||||
{
|
||||
DynamicUIVector3InputField vector3InputField =
|
||||
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect)
|
||||
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, subcontainer.rect)
|
||||
.GetComponent<DynamicUIVector3InputField>();
|
||||
vector3InputField.Initialize(baseElement, title, parameterName);
|
||||
vector3InputField.SetAutoUpdate(isAutoUpdate);
|
||||
container.dynamicUIElements.Add(vector3InputField);
|
||||
subcontainer.dynamicUIElements.Add(vector3InputField);
|
||||
return vector3InputField;
|
||||
}
|
||||
|
||||
public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUIContainer container,
|
||||
public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
|
||||
string title, string parameterName)
|
||||
{
|
||||
DynamicUIBaseColorPicker colorPicker = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, subcontainer.rect)
|
||||
.GetComponent<DynamicUIBaseColorPicker>();
|
||||
colorPicker.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(colorPicker);
|
||||
subcontainer.dynamicUIElements.Add(colorPicker);
|
||||
return colorPicker;
|
||||
}
|
||||
|
||||
public DynamicUIEmissionColorPicker GenerateEmissionColorPicker(IBaseElement baseElement,
|
||||
DynamicUIContainer container,
|
||||
DynamicUISubcontainer subcontainer,
|
||||
string title, string emissionEnabledName, string emissionColorName, string emissionIntensityName)
|
||||
{
|
||||
DynamicUIEmissionColorPicker colorPicker = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, subcontainer.rect)
|
||||
.GetComponent<DynamicUIEmissionColorPicker>();
|
||||
colorPicker.Initialize(baseElement, title, emissionEnabledName, emissionColorName, emissionIntensityName);
|
||||
container.dynamicUIElements.Add(colorPicker);
|
||||
subcontainer.dynamicUIElements.Add(colorPicker);
|
||||
return colorPicker;
|
||||
}
|
||||
|
||||
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container,
|
||||
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
|
||||
string content)
|
||||
{
|
||||
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect)
|
||||
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, subcontainer.rect)
|
||||
.GetComponent<DynamicUIHintText>();
|
||||
hintText.Initialize(baseElement, string.Empty, string.Empty);
|
||||
hintText.SetContent(content);
|
||||
container.dynamicUIElements.Add(hintText);
|
||||
subcontainer.dynamicUIElements.Add(hintText);
|
||||
return hintText;
|
||||
}
|
||||
|
||||
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, Func<string> action)
|
||||
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUISubcontainer subcontainer, Func<string> action)
|
||||
{
|
||||
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect)
|
||||
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, subcontainer.rect)
|
||||
.GetComponent<DynamicUIHintText>();
|
||||
hintText.Initialize(baseElement, string.Empty, string.Empty);
|
||||
hintText.SetUpdatingContent(action);
|
||||
container.dynamicUIElements.Add(hintText);
|
||||
subcontainer.dynamicUIElements.Add(hintText);
|
||||
return hintText;
|
||||
}
|
||||
|
||||
public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUIContainer container,
|
||||
public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
|
||||
string title, string parameterName, bool isAutoUpdate = false)
|
||||
{
|
||||
DynamicUIParameterText parameterText = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.parameterText, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.parameterText, subcontainer.rect)
|
||||
.GetComponent<DynamicUIParameterText>();
|
||||
parameterText.Initialize(baseElement, title, parameterName);
|
||||
parameterText.SetAutoUpdate(isAutoUpdate);
|
||||
container.dynamicUIElements.Add(parameterText);
|
||||
subcontainer.dynamicUIElements.Add(parameterText);
|
||||
return parameterText;
|
||||
}
|
||||
|
||||
public DynamicUIEnumDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container,
|
||||
public DynamicUIEnumDropdown GenerateDropdown(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
|
||||
string title,
|
||||
System.Type enumType, string parameterName)
|
||||
{
|
||||
DynamicUIEnumDropdown enumDropdown = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.enumDropdown, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.enumDropdown, subcontainer.rect)
|
||||
.GetComponent<DynamicUIEnumDropdown>();
|
||||
enumDropdown.SetUpEnum(enumType);
|
||||
enumDropdown.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(enumDropdown);
|
||||
subcontainer.dynamicUIElements.Add(enumDropdown);
|
||||
return enumDropdown;
|
||||
}
|
||||
|
||||
public DynamicUIStringListDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container,
|
||||
public DynamicUIStringListDropdown GenerateDropdown(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
|
||||
string title,
|
||||
List<string> stringList, string parameterName)
|
||||
{
|
||||
DynamicUIStringListDropdown stringListDropdown = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.stringListDropdown, container.rect)
|
||||
.Instantiate(EditorManager.instance.basePrefabs.stringListDropdown, subcontainer.rect)
|
||||
.GetComponent<DynamicUIStringListDropdown>();
|
||||
stringListDropdown.SetUpStringList(stringList);
|
||||
stringListDropdown.Initialize(baseElement, title, parameterName);
|
||||
container.dynamicUIElements.Add(stringListDropdown);
|
||||
subcontainer.dynamicUIElements.Add(stringListDropdown);
|
||||
return stringListDropdown;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,12 +17,14 @@ namespace Ichni.Editor
|
||||
|
||||
public RectTransform WindowRect { get; set; }
|
||||
public List<DynamicUIContainer> Containers { get; set; }
|
||||
public Dictionary<string, DynamicUISubcontainer> MarkedSubcontainers { get; set; }
|
||||
public Dictionary<string, DynamicUIElement> MarkedElements { get; set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
WindowRect = inspectorRect;
|
||||
Containers = new List<DynamicUIContainer>();
|
||||
MarkedSubcontainers = new Dictionary<string, DynamicUISubcontainer>();
|
||||
MarkedElements = new Dictionary<string, DynamicUIElement>();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace Ichni.Editor
|
||||
public GameElement connectedGameElement;
|
||||
public RectTransform WindowRect { get; set; }
|
||||
public List<DynamicUIContainer> Containers { get; set; }
|
||||
public Dictionary<string, DynamicUISubcontainer> MarkedSubcontainers { get; set; }
|
||||
public Dictionary<string, DynamicUIElement> MarkedElements { get; set; }
|
||||
|
||||
public void Initialize(GameElement gameElement, string titleText)
|
||||
@@ -17,6 +18,7 @@ namespace Ichni.Editor
|
||||
StartCoroutine(WindowAnim.ShowPanelOnScale(gameObject));
|
||||
WindowRect = windowRect;
|
||||
Containers = new List<DynamicUIContainer>();
|
||||
MarkedSubcontainers = new Dictionary<string, DynamicUISubcontainer>();
|
||||
MarkedElements = new Dictionary<string, DynamicUIElement>();
|
||||
|
||||
connectedGameElement = gameElement;
|
||||
|
||||
Reference in New Issue
Block a user