我想解决什么问题:
我需要能够增量地启动I个方法,按照指定的顺序每个触发器一个方法。
这些方法必须是公共团结活动,这样才能用来做不同的事情。
下面是“我不知道我在做什么”的版本——大部分情况下,它是有效的,但它很可怕。除了可怕的结构,它不是动态的。
public class IncrementEventHandler : MonoBehaviour
{
int eventIncrement = 0;
public UnityEvent onTriggered1;
public UnityEvent onTriggered2;
public UnityEvent onTriggered3;
public UnityEvent onTriggered4;
public UnityEvent onTriggered5;
public UnityEvent onTriggered6;
public UnityEvent onTriggered7;
public UnityEvent onTriggered8;
public UnityEvent onTriggered9;
public UnityEvent onTriggered10;
public void triggerEvents()
{
eventIncrement++;
if(eventIncrement == 1)
{
onTriggered1.Invoke();
}
if(eventIncrement == 2)
{
onTriggered2.Invoke();
}
if(eventIncrement == 3)
{
onTriggered3.Invoke();
}
if(eventIncrement == 4)
{
onTriggered4.Invoke();
}
if(eventIncrement == 5)
{
onTriggered5.Invoke();
}
if(eventIncrement == 6)
{
onTriggered6.Invoke();
}
if(eventIncrement == 7)
{
onTriggered7.Invoke();
}
if(eventIncrement == 8)
{
onTriggered8.Invoke();
}
if(eventIncrement == 9)
{
onTriggered9.Invoke();
}
if(eventIncrement == 10)
{
onTriggered10.Invoke();
}
}
}
附加的图像
https://i.stack.imgur.com/RbttT.png
就是检查员的样子。这就是我想要创造的,但实际上要让它充满活力。在检查器中填充一个公共int i,然后声明i个名为“onTriggered”+“i”的公共UnityEvents,这些公共UnityEvent自动出现在检查器中,然后可以用于执行所需的任何操作。然后,游戏中的其他任何东西都会调用triggerEvents(),并且最多可以调用i次来完成整个事件列表。
如果这些不是方法,那么我将基本掌握如何为检查器序列化所有这些,但方法是静态的,因此没有序列化。我试图了解代理来解决静态问题,但仍然完全不知道如何将它们应用于我的特定用例。我基本上了解到,它们用于将类订阅到它们本身没有的方法,但这似乎并不能解决我在检查器中创建方法的动态列表方面的任何问题。所以我不知道这是否是正确的线索。
另一个障碍是我不知道如何动态命名这些方法进行声明。
基本上,我需要在for循环中声明这些方法,然后递增地执行它们。
感谢您的帮助。