我目前正在开展一个项目,我有两个独立的“经理”。一个是成功创建的,在启动时实例化,我可以毫无问题地引用它的所有方法。我意识到这是多么有用现在我正在尝试重新装配我的其他经理遵循相同的实例模式,但每当我从不同的类调用其中一个方法时,我得到“对象引用未设置为一个实例参考线上的对象错误。
这是在初始化时工作的管理器:
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;
任何帮助都是极好的。谢谢。
我是个白痴。整个时间,我的“清醒”方法的“A”没有大写,并且它作为用户定义的方法运行。我恢复了所有的变化,试图解决它,然后回到instance=this
线。感谢大家的帮助,如果你没有指出没有被叫出来,我就永远不会想到它。