unity C#从另一个类运行方法

unity C#从另一个类运行方法,c#,unity3d,C#,Unity3d,我想在另一个班上运行metod,他们两个都对应于不同的对象 两个班。第一个是: public class NewScore: MonoBehaviour { public void updateScoreBy( int intr) { Debug.Log("intr+4"+intr+4); } } 第二个是: public class NewPlus: MonoBehaviour { public NewScore newscore; public void OnTrigger

我想在另一个班上运行metod,他们两个都对应于不同的对象

两个班。第一个是:

public class NewScore: MonoBehaviour {
public void updateScoreBy( int intr) {
    Debug.Log("intr+4"+intr+4);
}
}
第二个是:

public class NewPlus: MonoBehaviour {
    public NewScore newscore;
public void OnTriggerEnter2D(Collider2D obj) {
    newscore.updateScoreBy(+1);
}
}
当我运行代码时,我收到一个arror“NullReferenceException:objectreference未设置为对象的实例”,它指向newscore.updateScoreBy(+1);
如何修复它?

根据您要执行的操作,可以将函数设置为静态,如:

public static void updateScoreBy(int intr)
{
    Debug.Log("intr+4"+intr+4);
}
并称之为:

NewScore.updateScoreBy(1);

您需要初始化
公共新闻核心新闻核心:将包含该脚本的对象拖放到Inspector面板中的该变量上

您没有初始化newscore

像这样更改NewPlus类,以便它在构造时初始化newscore

public class NewPlus: MonoBehaviour {
  public NewScore newscore;
  public NewPlus(){
    newscore=NewScore();
  }
  public void OnTriggerEnter2D(Collider2D obj) {
    newscore.updateScoreBy(+1);
  }
}

它不会落在inspector中的位置。如果您有一个带有
NewScore
的游戏对象和另一个带有
NewPlus
的游戏对象,您应该能够在inspector上将一个对象拖动到另一个对象。您尝试过同样的操作吗?doest'n work-显示修复程序中的错误我不知道您使用的所有类。
NewScore
是否有一个没有参数的构造函数?如果没有,你就是知道如何初始化它的人。我只是告诉你应该在构造函数中初始化它。