三种动画参数的Composite Unit
This commit is contained in:
@@ -40,26 +40,32 @@ namespace Ichni.Editor
|
||||
{
|
||||
public void SetAsStringList()
|
||||
{
|
||||
unitPrefab = EditorManager.instance.basePrefabs.stringUnit;
|
||||
addNewUnitButton.onClick.AddListener(() =>
|
||||
//生成Unit
|
||||
void GenerateUnit(string content)
|
||||
{
|
||||
DynamicUIStringUnit unit = Instantiate(unitPrefab, windowRect).GetComponent<DynamicUIStringUnit>();
|
||||
unitList.Add(unit);
|
||||
unit.SetUnit(this, "");
|
||||
unit.SetUnit(this, content);
|
||||
}
|
||||
|
||||
unitPrefab = EditorManager.instance.basePrefabs.stringUnit;
|
||||
|
||||
//初始化:获取当前的List<string>,并生成对应的Unit
|
||||
List<string> list = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement) as List<string>;
|
||||
foreach (string item in list)
|
||||
{
|
||||
GenerateUnit(item);
|
||||
}
|
||||
addNewUnitButton.GetComponent<RectTransform>().SetAsLastSibling();
|
||||
|
||||
//为添加新的Unit的按钮设置点击事件
|
||||
addNewUnitButton.onClick.AddListener(() =>
|
||||
{
|
||||
GenerateUnit("");
|
||||
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();
|
||||
|
||||
//将当前所有Unit的值应用到对应的变量中
|
||||
ApplyParameters = () =>
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
@@ -71,5 +77,40 @@ namespace Ichni.Editor
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, list);
|
||||
};
|
||||
}
|
||||
|
||||
public void SetAsFlexibleFloat()
|
||||
{
|
||||
void GenerateUnit(AnimatedFloat content)
|
||||
{
|
||||
DynamicUIAnimatedFloatUnit unit = Instantiate(unitPrefab, windowRect).GetComponent<DynamicUIAnimatedFloatUnit>();
|
||||
unitList.Add(unit);
|
||||
unit.SetUnit(this, content);
|
||||
}
|
||||
|
||||
unitPrefab = EditorManager.instance.basePrefabs.animatedFloatUnit;
|
||||
|
||||
FlexibleFloat flexibleFloat = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement) as FlexibleFloat;
|
||||
foreach (AnimatedFloat animatedFloat in flexibleFloat.animations)
|
||||
{
|
||||
GenerateUnit(animatedFloat);
|
||||
}
|
||||
addNewUnitButton.GetComponent<RectTransform>().SetAsLastSibling();
|
||||
|
||||
addNewUnitButton.onClick.AddListener(() =>
|
||||
{
|
||||
GenerateUnit(new AnimatedFloat(0, 0, 0, 0, AnimationCurveType.Linear));
|
||||
addNewUnitButton.GetComponent<RectTransform>().SetAsLastSibling();
|
||||
});
|
||||
|
||||
ApplyParameters = () =>
|
||||
{
|
||||
FlexibleFloat newFlexibleFloat = new FlexibleFloat();
|
||||
foreach (var unit in unitList)
|
||||
{
|
||||
newFlexibleFloat.animations.Add((unit as DynamicUIAnimatedFloatUnit).GetValue());
|
||||
}
|
||||
connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newFlexibleFloat);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ namespace Ichni.Editor
|
||||
|
||||
public partial class Inspector
|
||||
{
|
||||
public CompositeParameterWindow GenerateCompositeParameterWindow(IBaseElement baseElement, string title, string parameterName, Type parameterType)
|
||||
public CompositeParameterWindow GenerateCompositeParameterWindow(IBaseElement baseElement, string title, string parameterName)
|
||||
{
|
||||
CompositeParameterWindow compositeParameterWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.compositeParameterWindow,
|
||||
|
||||
Reference in New Issue
Block a user