Unity 3D C#检查列表中的Vector3

时间:2018-06-26 03:31:31

标签: c# list unity3d

我正在使用Argon Granberg的A *寻路脚本,并且尝试检查是否定义了列表元素

有一个Vector3值列表,存储为p.vectorPath变量。我正在尝试测试列表元素是否定义为

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

但是我在Unity中遇到了一个错误,即测试Vector3!= null总是= true。那么我如何测试是否定义了此特定列表索引?

谢谢。

2 个答案:

答案 0 :(得分:2)

Vector3是一个值类型(struct),没有诸如未定义(或null)值类型之类的东西(除非您将其设为可空)。值类型在用C#声明时即被初始化-如果您不提供初始值,则它具有其默认值(在这种情况下为Vector3.zero

OTOH,如果您想知道列表在位置N上是否有任何元素,则只需检查list.Count是否大于N

答案 1 :(得分:0)

与其他答案Vector3一样,它不能为null,因为它是一种值类型。您可以这样声明Nullable类型为Vector3的列表;

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

Foo p = new Foo();

//...stuff...

if (p.VectorPath[someIndex].HasValue)
{
    //Do things.
}