c# 不同动作的队列

c# A Queue of different Action

我的队列Class;

public class JobManager : MonoBehaviour {

private Queue<Action> queue;

public void AddAction(Action action)
    {
        queue.Enqueue(action);
    }
....

我有两个方法:

void CreateCube()
{
   // doSomething..
}

void SetPosition(Vector3 pos)
{
   // doSomething..
}

我可以用这个:

JobManager.Instance.AddAction(CreateCube);

但这不是:

JobManager.Instance.AddAction(SetPosition);

我如何为所有不同的动作定义一个队列?或者如何添加不同的操作?

编辑:

JobManager 像这样调用 Actions;

    IEnumerator ActionControl(){
        while (true){
            if (currentQueue != null){
                while (true){
                    currentQueue();
                    yield return null;
                    currentQueue = null;
                    break;
                }
            }
            yield return null;
        }
    }

    private void Update(){
        if (queue.Count > 0 && currentQueue == null){
            currentQueue = queue.Dequeue();
        }
    }

我真正想要的是任何方法都可以放在一个队列中。 (是否带参数)然后我们将 运行 他们按顺序排列。这可能吗?

您的问题是 queue 的类型是 Queue<Action>。要接受这种新类型的关闭操作,可能需要另一个 Queue<Action<Vector3>>.

类型的队列

你需要这样的东西:

public class JobManager
{
    private Queue<Action> plainQueue;
    private Queue<Action<Vector3>> vectorQueue;

    public void AddAction(Action action)
    {
        plainQueue.Enqueue(action);
    }

    public void AddAction(Action<Vector3> action)
    {
        vectorQueue.Enqueue(action);
    }
}

此外,.AddAction(() => SetPosition(pos)) 会起作用,但请记住,这是在创建一个匿名的 Action 来包装 Action<Vector3>。它可能导致难以调试代码。