Unity 3D C#检查列表中的矢量3
我正在使用Argon Granberg的A*寻路脚本,并试图检查是否定义了列表元素 存在存储为p.vectorPath变量的Vector3值列表。我试图测试列表元素是否是用Unity 3D C#检查列表中的矢量3,c#,list,unity3d,C#,List,Unity3d,我正在使用Argon Granberg的A*寻路脚本,并试图检查是否定义了列表元素 存在存储为p.vectorPath变量的Vector3值列表。我试图测试列表元素是否是用 if ( p.vectorPath[myIndex] != null ) { ... 但是我在Unity中遇到了一个错误,测试矢量3null将始终=true。那么,如何测试是否定义了这个特定的列表索引呢 谢谢。Vector3是一种值类型(struct),没有未定义(或空)值类型(除非您将其设置为可空)。值类型在c#中声明时
if ( p.vectorPath[myIndex] != null ) {
...
但是我在Unity中遇到了一个错误,测试矢量3null将始终=true。那么,如何测试是否定义了这个特定的列表索引呢
谢谢。
Vector3
是一种值类型(struct
),没有未定义(或空)值类型(除非您将其设置为可空)。值类型在c#中声明时即被初始化-如果未提供初始值,则它有其默认值(Vector3.zero,在本例中为
)
OTOH,如果您想知道列表在
N
位置是否有任何元素,您可以检查list.Count
是否大于N
,与其他答案一样Vector3
不能为空,因为它是值类型。您可以使用null
类型的Vector3
声明列表,如下所示
public class Foo
{
public List<Vector3?> VectorPath;
}
Foo p = new Foo();
//...stuff...
if (p.VectorPath[someIndex].HasValue)
{
//Do things.
}
公共类Foo
{
公共列表向量路径;
}
Foo p=新的Foo();
//…东西。。。
if(p.VectorPath[someIndex].HasValue)
{
//做事。
}
您所说的“定义”是什么意思?你是说初始化?Vector3是一种值类型(struct),没有未定义(或null)的值类型(除非将其设置为可为null)。值类型在c#中声明的那一刻被初始化-如果您没有提供初始值,它有它的默认值(在本例中为Vector3.zero),那么作为回答,如果您想知道列表在位置N是否有任何元素,您可以检查list.Count是否大于N@C.Carter我会,,但我不确定这是不是什么means@GeoffL那么,你应用了这个建议吗?这个答案对你有帮助吗?如果是,您可以将其标记为“已接受”,以便其他有相同问题的人更容易找到解决方案。