Unity3d C# NullReferenceException: Object reference not set to an instance of an object [дубликат]

335
05 сентября 2017, 08:05

На данный вопрос уже ответили:

  • Что такое NullReferenceException, и как мне исправить код? 2 ответа

Здравствуйте, решил сделать код для того чтобы можно было осматриваться и передвигаться плеером. Но у меня возникает множество ошибок с NullReference

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FPSscript : MonoBehaviour {
CharacterController player;
[Space(5)]
[Header("Передвижение")]
float verticalVelocity;
[SerializeField]
[Tooltip("Максимальная высота прыжка")]
[Range(10,100)]
float maxHeight = 20f;
[SerializeField]
[Tooltip("Скорость игрока")]
float speed = 5;
[Header("Осмотр")]
[Space(5)]
[Tooltip("Сенса")]
public float lookSensetive = 5;
float yRotation;
float xRotation;
float currentYRotation;
float currentXRotation;
float yRotationV= 0.0f;
float xRotationV= 0.0f;
[Tooltip("Сглаживание")]
public float smoothDamp = 0.1f;
void Start () 
{
    Cursor.lockState = CursorLockMode.Locked;
    player.GetComponent<CharacterController>();
}
void Update () 
{
    //Movement
    float x = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
    float z = Input.GetAxis("Vertical") * speed * Time.deltaTime;
    if(player.isGrounded)
    {   
        verticalVelocity = -1 * Time.deltaTime;
        if(Input.GetButtonDown("Jump"))
        {
            verticalVelocity  = maxHeight * Time.deltaTime;
        }
    }
    else
    {
        verticalVelocity -= 1 * Time.deltaTime;
    }
    Vector3 moveDelta = new Vector3(x,verticalVelocity,z);
    player.Move(moveDelta);
    //MouseLook
    yRotation += Input.GetAxis("Mouse X") * lookSensetive;
    xRotation += Input.GetAxis("Mouse Y") * lookSensetive;
    xRotation = Mathf.Clamp(xRotation,-90,90);
    currentXRotation = Mathf.SmoothDamp(currentXRotation,xRotation,ref 
xRotationV,smoothDamp);
    currentYRotation = Mathf.SmoothDamp(currentYRotation,yRotation,ref 
yRotationV,smoothDamp);
    transform.rotation = 
Quaternion.Euler(currentXRotation,currentYRotation,0);
    //Escape from locked cursor mode
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        Cursor.lockState = CursorLockMode.None;
    }
}

}

Answer 1

Очевидно, что нет у тебя в переменной player ничего, а ты пытаешься из ничего достать isGrounded и проверять это

READ ALSO
DllImport в зависимости от условия

DllImport в зависимости от условия

Нужно подгружать разные нативные либы в зависимости от значения некоторой функцииНо название dll, которое указывается в DllImport, const, т

298
visual studio не видит классы?

visual studio не видит классы?

Скачал с сайта код проекта и подключил как на картинке, но visual studio не хочет видеть классыЧто и как поправить?

270
Сериализация без ссылок

Сериализация без ссылок

Как убрать z:Id="" и z:Ref="", для удобного ручного заполнения?

237
Разные уровни вложенности в одном Div

Разные уровни вложенности в одном Div

Внутри одного блока (div) на совершенно разных уровнях вложенности есть один select и один input type=textНеобходимо помещать выбор селекта в текстовое...

277