三种动画参数的Composite Unit

This commit is contained in:
SoulliesOfficial
2025-02-13 14:26:37 -05:00
parent 96a4d620f5
commit 0bcc843740
22 changed files with 8273 additions and 51 deletions

View File

@@ -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);
};
}
}
}

View File

@@ -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,