我正在用Java制作一个游戏,我有一个中央(引擎)类,它将渲染风景/玩家/等。
在 Engine 类中,我像这样创建玩家对象
public class Engine() {
public static Player player;
public Engine() {
RenderPlayer();
}
protected static void RenderPlayer() {
player = new Player();
}
}
我还有一个 Canvas 类来处理播放器的绘制。 我希望能够调用 Players 函数,而无需创建新实例(因为我在 Engine 类中创建了播放器)。每当我尝试使用播放器中的函数时,我都会得到一个空指针期望。
我就是这么调用它的。
Engine.player.tick();
我花了几个小时试图弄清楚,有人可以告诉我我做错了什么,并帮助我朝正确的方向前进吗?谢谢。
最佳答案
您需要在调用 Engine.player.tick();
之前调用 Engine.RenderPlayer()
,因为此方法会分配一个新的 Player
静态 player
属性的实例。在调用此方法之前,player
为 null,它会导致您的 NullPointerException
。
您只需更改即可解决此问题:
public static Player player;
至:
public static Player player = new Player();
关于Java 使用中心类中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681886/