У меня проблема с моим персонажем, когда он взаимодействует с ящиком. У меня есть геймобжекты плеер со скриптом, прикрепленным к нему, чтобы взаимодействовать с коробками в игре, сценарий:Пытается взаимодействовать с компонентом на объекте, пораженном raycast, получая NullReferenceException
using UnityEngine;
using System.Collections;
public class PlayerBox : MonoBehaviour {
public bool active = true;
public KeyCode key = KeyCode.E;
float distance = 2F;
RaycastHit obj;
BoxManager box;
void Start() {
box = GetComponent<BoxManager>();
}
void Update() {
if (active && Input.GetKeyDown (key) && Physics.Raycast (this.transform.position, this.transform.forward, out obj, distance)) {
if (obj.collider.gameObject.tag == "Box") {
box.Open();
Debug.Log("aperto " + box);
}
}
}
}
В сцене есть геймобжекты Box с помощью сценария для управления поведением:
using UnityEngine;
using System.Collections;
public class BoxManager : MonoBehaviour {
public void Open() {
Debug.Log ("Dentro");
}
}
последний сценарий должен напечатать журнал, но когда я общаюсь с ним я получаю
NullReferenceException: ссылка на объект не указывает на экземпляр объекта PlayerBox.Update() (в Assets/E TSMB/Script/Use/PlayerBox.cs: 23)
Как правильно установить box
экземпляру объекта?
Вы уверены, что номер строки верен, что номер строки указывает на закрывающую фигуру из if. Что такое null, это действительно то, что вам нужно узнать ... – Dave3of5