dialoguecall.cs
Код: Выделить всё
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class DialogueCall : MonoBehaviour
{
public DialogueTrigger dialogueTrigger;
public GameObject[] gameObjects;
void Start() {
dialogueTrigger = GameObject.FindGameObjectWithTag("Dialog").GetComponent();
}
private void OnTriggerEnter(Collider other) {
if (other.gameObject.tag == "Player") {
for (int a=0; a < 5; a++) {
gameObjects[a].SetActive(false);
}
dialogueTrigger.TriggerDialogue();
}
}
}
< /code>
dialoguetrigger.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DialogueTrigger : MonoBehaviour {
public Dialogue dialogue;
public void TriggerDialogue() {
FindObjectOfType().StartDialogue(dialogue);
}
}
< /code>
Оператор задачи:
Когда мой игрок сталкивается с объектом, я ожидаю, что метод triggerdialogue () из класса Dialoguetrigger будет вызван. Тем не менее, я получаю ошибку: < /p>
NullReferenceException: Object reference not set to an instance of an object
DialogueCall.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Scripts/DialogueCall.cs:20)
Существует диалог gameobject: я обеспечил, что в сцене существует объект «диалог», в котором содержится компонент диалога. /> Инициализация массива: массив GameObjects уже заполнен инспектором. Похоже, что это проблема с тем, как DialogueTrigger инициализируется или доступна. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/776 ... e-in-unity
Мобильная версия