Проверка Unity 3D C # для Vector3 в списке - PullRequest
0 голосов
/ 26 июня 2018

Я использую скрипты A * Pathfinding Аргона Гранберга и пытаюсь проверить, определен ли элемент списка

Существует список значений Vector3, сохраненных как переменная p.vectorPath.Я пытаюсь проверить, определены ли элементы списка с помощью

if ( p.vectorPath[myIndex] != null ) {
...

Но в Unity появляется ошибка, что проверка Vector3! = Null всегда будет = true.Итак, как я могу проверить, определен ли этот конкретный индекс списка?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Как и в случае с другим ответом Vector3 не может быть нулевым, поскольку это тип значения.Вы можете объявить список с типом Nullable типа Vector3 следующим образом:

public class Foo
{
    public List<Vector3?> VectorPath;
}

Foo p = new Foo();

//...stuff...

if (p.VectorPath[someIndex].HasValue)
{
    //Do things.
}
0 голосов
/ 26 июня 2018

Vector3 - это тип значения (struct), и нет такого понятия, как неопределенный (или нулевой) тип значения (кроме случаев, когда вы делаете его обнуляемым).Типы значений инициализируются в тот момент, когда они объявлены в c # - если вы не указали начальное значение, у него есть значение по умолчанию (Vector3.zero в данном случае)

OTOH, если вам нужнознать, есть ли в списке какой-либо элемент в позиции N, вы можете просто проверить, больше ли list.Count, чем N

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...