首页 > 解决方案 > 理解列表:语法和传递参数

问题描述

我在理解 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)];
    }
}

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

标签: c#list

解决方案


如果没有看到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)];
    }
}

推荐阅读