了解列表:语法和传递参数

时间:2018-12-11 04:48:32

标签: c# list

我在理解C#中的列表时遇到了一些困难,希望有人可以帮助我理解。

在尝试学习的过程中,我一直在关注一些教程,但是我发现有两点让我有些困惑。

我遇到的第一个问题是了解列表中元素中传递的参数。

("fire", 5)
("static", 3)

我理解第一个,但是字符串后面的整数代表什么?

我的第二个问题基于最后一行:

powerUps RandomPowerup = powerUpsList[Random.Range(0, powerUpsList.Count)]

有人告诉我...

  

powerUpsList   ...在上下文中不存在。

我了解该消息的含义,但不了解该消息的含义。我的猜测是我遗漏了一种语法,但是我不太了解语法。

这是上下文的完整代码。

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

public class powerUpList : MonoBehaviour
{

    void Start()
    {
        List<powerUps> powerUpsList = new List<powerUps>();

        powerUpsList.Add(new powerUps("fire", 5));
        powerUpsList.Add(new powerUps("static", 3));
        powerUpsList.Add(new powerUps("shield", 0));
        powerUpsList.Add(new powerUps("repel", 0));
        powerUpsList.Add(new powerUps("repairKit", 0));
        powerUpsList.Add(new powerUps("thorns", 3));
        powerUpsList.Add(new powerUps("bearBooster", 1));

        powerUpsList.Sort();
    }

    void OnTriggerEnter(Collider player)
    {
        powerUps RandomPowerup = powerUpsList[Random.Range(0, powerUpsList.Count)];
    }
}

如果您能给我任何帮助,见解或建议,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果没有看到powerUps类的定义,我们将无法告诉您字符串后面的数字是什么。您正在powerUp类上调用构造函数,因此您需要参考该构造函数以了解其用途。

在第二部分中,您将使用Start()函数创建上电列表。该函数返回后,该列表将不再存在。要解决此问题,您需要使powerUpsList为类变量。这应该起作用:

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

public class powerUpList : MonoBehaviour
{
    private List<powerUps> powerUpsList;

    void Start()
    {
        powerUpsList = new List<powerUps>();

        powerUpsList.Add(new powerUps("fire", 5));
        powerUpsList.Add(new powerUps("static", 3));
        powerUpsList.Add(new powerUps("shield", 0));
        powerUpsList.Add(new powerUps("repel", 0));
        powerUpsList.Add(new powerUps("repairKit", 0));
        powerUpsList.Add(new powerUps("thorns", 3));
        powerUpsList.Add(new powerUps("bearBooster", 1));

        powerUpsList.Sort();
    }

    void OnTriggerEnter(Collider player)
    {
        powerUps RandomPowerup = powerUpsList[Random.Range(0, powerUpsList.Count)];
    }
}

答案 1 :(得分:0)

这是您的样本的一部分:

powerUpsList = new List<powerUps>();
powerUpsList.Add(new powerUps("fire", 5));

这完成了件事。可以这样写:

powerUpsList = new List<powerUps>(); // create an empty list 
powerup foo = new powerUps("fire", 5); // create a powerUp object
powerUpsList.Add(foo); // put the object in the list

new powerUp("fire", 5)是构造函数调用。参数的含义是一个只能由定义powerUp类的代码的文档来回答的问题。在黑暗中进行一次野蛮刺刺,此加电会在您的游戏中赋予射击魔法的秒数为5。