"Vector3?" не содержит определения "x"
У меня есть класс :
public class VectorThree
{
public Vector3? targetPosition;
public VectorThree(Vector3 _targetPosition = default(Vector3))
{
if (_targetPosition == default(Vector3))
{
}
else
{
targetPosition = _targetPosition;
}
}
public bool MoveTowardsTargetPosition()
{
if (targetPosition.HasValue)
{
return true;
}
else
{
return false;
}
}
}
Почему если я хочу обратиться в методе к координате X,Y,Z (_s.targetPosition.x,_s.targetPosition.y,_s.targetPosition.z) Unity класса Vector3.
Выдаёт ошибку:"Vector3?" не содержит определения "x", и не удалось найти доступный метод расширения "x", принимающий тип "Vector3?" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
код:
VectorThree _s = new VectorThree(queue[i]);
Vector3 vec = new Vector3((float)_s.targetPosition.x + r * Math.Cos(a), 0, (float)_s.targetPosition.z + r * Math.Sin(a));
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Потому что у вас nullable версия Vector3. К значению nullable класса надо обращаться так:
if(targetPosition.HasValue)
{
var x = targetPosition.Value.x;
}