C# 如何将数据从一个列表传输到另一个列表

C# 如何将数据从一个列表传输到另一个列表,c#,unity3d,C#,Unity3d,我试图建立一个任务系统,从存储所有任务的列表中随机选取5个元素。但我似乎无法将对象从一个列表转移到另一个列表。这是我到目前为止得到的 void Awake() { Object[] getScriptableObject = Resources.LoadAll("Scriptable Objects/Missions/sideMission"); temp = new List<ScriptableObject>(); for (int i

我试图建立一个任务系统,从存储所有任务的列表中随机选取5个元素。但我似乎无法将对象从一个列表转移到另一个列表。这是我到目前为止得到的

void Awake()
{
    Object[] getScriptableObject = Resources.LoadAll("Scriptable Objects/Missions/sideMission");
    temp = new List<ScriptableObject>();
    for (int i = 0; i < getScriptableObject.Length; i++)
    {
        temp.Add((ScriptableObject)getScriptableObject[i]);
    }

    if (missionContainer.mission.Count < 5)
    {
        missionContainer.mission.Add(temp[Random.Range(0, temp.Count)]);
    }
    else
        return;
}
void Awake()
{
Object[]getScriptableObject=Resources.LoadAll(“可编写脚本的对象/任务/附带任务”);
temp=新列表();
for(int i=0;i
临时列表搜索文件夹中的每个任务脚本对象并将它们存储在临时列表中,我希望任务列表从临时列表中随机选择5个并存储它们。我该怎么办

 public class missionContainer : ScriptableObject
{
    public List<ScriptableObject> mission = new List<ScriptableObject>();
}
公共类任务容器:ScriptableObject
{
公共列表任务=新列表();
}

这是任务列表。

它不会添加多个任务。你不是说:

while(missionContainer.mission.Count<5)
{
任务容器任务添加(临时[随机范围(0,临时计数)];
}

但是您没有从临时列表中删除任务,因此您可以再次添加它。

实际上,您可以使用泛型类型的版本

// Or even better use the actual type of your ScriptableObject ;)
ScriptableObject[] getScriptableObject = Resources.LoadAll<ScriptableObject>("Scriptable Objects/Missions/sideMission");

为了从一个空列表开始。

谢谢您指出这一点。但现在我连一个任务都不能转移,还有什么我做错了吗?只有两件事可以让它不添加任务:你不呼叫唤醒,或者你在任务容器中已经有5个任务(或更多)。好的。我想我明白了。巨大的thx。
temp
列表似乎完全没有必要。。为什么不直接从
getScriptableObject
中随机选取一个条目呢?
temp = new List<ScriptableObject>(getScriptableObject);
// Note though that you could also simply directly use
// "getScriptableObject" array instead of "temp" in this case
while (missionContainer.mission.Count < 5)
{
    missionContainer.mission.Add(temp[Random.Range(0, temp.Count)]);
}
while (missionContainer.mission.Count < 5)
{
    if(temp.Count == 0)
    {
        Debug.LogWarning("Didn't find enough resources!", this);
        break;
    }

    var random = Random.Range(0, temp.Count);
    var item = temp[random];
    missionContainer.mission.Add(item);
    temp.Remove(item);
}
missionContainer.mission.Clear();