Понимание списков: синтаксис и передаваемые аргументы - PullRequest
0 голосов
/ 11 декабря 2018

У меня возникли сложности с пониманием списков в C #, и я надеялся, что кто-нибудь может помочь мне понять.

Я следовал нескольким урокам, пытаясь научиться, но я понял, что есть два момента, которые меня немного смущают.

Первый вопрос, который у меня возник, - это понимание передаваемых параметров.в элементах списка.

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

Я понимаю первое, но что представляют собой целые числа после строки?

Мой второй вопрос основан на последней строке:

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

IМне говорят, что ...

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 голосов
/ 11 декабря 2018

Вот часть вашего образца:

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 - это количество секунд, которое это усиление дает магии огня в вашей игре.

0 голосов
/ 11 декабря 2018

Не видя определения класса 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)];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...