В настоящее время я работаю над проектом, в котором у меня есть 2 отдельных «Менеджера». Один был успешно создан для создания экземпляра при запуске, и я могу без проблем ссылаться на все его методы. Я понял, насколько это было полезно, поэтому теперь я пытаюсь перенастроить моего другого менеджера, чтобы он следовал тому же шаблону создания экземпляров, но всякий раз, когда я вызываю один из его методов из другого класса, я получаю «объектную ссылку, не установленную для экземпляра объекта. ошибка объекта на контрольной линии.
Вот менеджер, который работает при его инициализации:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using DG.Tweening;
// this class will take care of switching turns
public class TurnManager : MonoBehaviour {
// for Singleton Pattern
public static TurnManager Instance;
void Awake()
{
Instance = this;
}
Вот (успешный) вызов метода внутри TurnManager из другого класса:
TurnManager.Instance.StopTheTimer();
А вот раздел другого менеджера, который не может успешно создать экземпляр:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using DG.Tweening;
public class DialogueManager : MonoBehaviour
{
public static DialogueManager Instance;
public delegate void VoidWithNoArguments();
public event VoidWithNoArguments DialogueEndEvent;
public AudioSource speechSounds;
public AudioClip speechSound;
public Image headshot;
public Text dialogueText;
public DeckSO deckForFight;
public Animator animator;
public bool dialogueActive;
private Queue<NPCAtributes> speakers;
private Queue<string> sentences;
private Queue<DialogueArray> lines;
private bool fightStart;
private PlayerController thePlayer;
private static bool UIExists;
// Use this for initialization
void awake()
{
Instance = this;
}
void Start()
{
if (!UIExists) {
DontDestroyOnLoad (transform.gameObject);
UIExists = true;
} else
Destroy (gameObject);
speakers = new Queue<NPCAtributes> ();
sentences = new Queue<string>();
lines = new Queue<DialogueArray> ();
thePlayer = FindObjectOfType<PlayerController> ();
}
Строка, в которой я получу ошибку ссылки на объект во время выполнения:
DialogueManager.Instance.DialogueEndEvent += SpawnDave;
Любая помощь будет потрясающей. Спасибо.