我目前正在一个项目中,我有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;
任何帮助都会很棒。谢谢。
答案 0 :(得分:1)
我是个白痴。在整个过程中,我的“清醒”方法的“ A”没有大写,而是作为用户定义的方法运行。我还原了所有更改以尝试解决它,然后回到instance=this
行。感谢大家的帮助,如果您没有指出没有被叫醒的话,我永远不会弄清楚。