unity C#从另一个类运行方法
我想在另一个班上运行metod,他们两个都对应于不同的对象 两个班。第一个是: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
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
是否有一个没有参数的构造函数?如果没有,你就是知道如何初始化它的人。我只是告诉你应该在构造函数中初始化它。