在 C# Unity3D 中使用 List<> 存储方法?

Jor*_*aps 2 c# unity-game-engine

我正在尝试将方法列表存储在 a 中List<dynamic>以创建我的 Quest 系统的一部分。我从未使用过列表,而且我不太清楚关键字的dynamic作用,所以我在理解上遇到了问题。

首先,我创建了一个测试函数,并尝试将其存储在 中List<dynamic>,然后通过控制台 ( Debug.Log()) 输出测试函数返回的内容。这是代码:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Quests : MonoBehaviour
{
    public List<dynamic> activeQuests = new List<dynamic>();


    void Start()
    {
        activeQuests.Add(Test());
        Debug.Log(activeQuests[0]);
    }

    public bool Test()
    {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

下方出现一条红线Debug.Log(activeQuests[0]);,错误消息如下所示 -

“找不到编译动态表达式所需的一种或多种类型。是否缺少引用?”

我该如何进行这项工作?

编辑:我还在寻找一种方法,通过参数向每个函数添加重载方法。

Cod*_*ist 5

如果该方法始终参数较少,我建议使用此方法:

public List<System.Action> activeQuests = new List<System.Action>();

// usage
activeQuests.Add(Test)
Run Code Online (Sandbox Code Playgroud)

也许需要一个返回值。那么你应该和任何Systen.Func<T ...>代表一起去。

    public List<System.Func<bool>> activeQuests = new List<System.Func<bool>>();

    // usage
    activeQuests.Add(Test)
Run Code Online (Sandbox Code Playgroud)