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]);,错误消息如下所示 -
“找不到编译动态表达式所需的一种或多种类型。是否缺少引用?”
我该如何进行这项工作?
编辑:我还在寻找一种方法,通过参数向每个函数添加重载方法。
如果该方法始终参数较少,我建议使用此方法:
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)