"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;
}
→ Ссылка