Unity3d Unity多个协同路由空引用异常

Unity3d Unity多个协同路由空引用异常,unity3d,Unity3d,我已经看到了相同的问题和答案,但不幸的是,我还没有完全理解如何解决这个问题,因为我得到了一个空引用异常 我尝试同时运行两个协同程序。每个都来自不同的基类。除了类的名称和激活键(一个是向上箭头,另一个是向下箭头)之外,它们都是相同的 我尝试在整个运行过程中运行这样的内容(从父类): 所以我不太确定如何解决这个问题。谢谢你的帮助。被这弄糊涂了。在你的Update()函数中你调用了b.PrintMessage(),但是你还没有给出这个函数的定义,除非你的意思是b.SendMessage()?这正是我的

我已经看到了相同的问题和答案,但不幸的是,我还没有完全理解如何解决这个问题,因为我得到了一个空引用异常

我尝试同时运行两个协同程序。每个都来自不同的基类。除了类的名称和激活键(一个是向上箭头,另一个是向下箭头)之外,它们都是相同的

我尝试在整个运行过程中运行这样的内容(从父类):


所以我不太确定如何解决这个问题。谢谢你的帮助。

被这弄糊涂了。在你的
Update()
函数中你调用了
b.PrintMessage()
,但是你还没有给出这个函数的定义,除非你的意思是
b.SendMessage()
?这正是我的意思。你确定
a
b
不是
null
?我很确定。如果我在没有协同程序的情况下运行它(就像一个void函数一样),它就可以正常工作。您在哪里以及如何调用您的协同程序?
public IEnumerator DetectArrow()
{
    if (Input.GetKey(KeyCode.UpArrow))
    {
        if (PrintMessage == null)
        {
            PrintMessage += SendMessage;
        }
    }
    return null;
}

public void SendMessage()
{
    print("I am B.");
    PrintMessage = null;
}
void Update () 
{
    if (b.PrintMessage != null)
    {
        b.PrintMessage();
    }
    if (a.PrintMessage != null)
    {
        a.PrintMessage();
    }
 }