【问题标题】:Libgdx - Textures not displaying upon screen changeLibgdx - 屏幕更改时不显示纹理
【发布时间】:2015-06-03 14:34:14
【问题描述】:

在我的 Libgdx Android 游戏的屏幕游戏中,我有以下代码,可在触摸屏幕时启动新游戏。

   if(Gdx.input.isTouched()) {
    ScreenManager.setScreen(new GameScreen());
}

新游戏开始,但屏幕上没有显示任何精灵。

我已通过日志记录和使用调试器确认新游戏已开始。此外,由于玩家死亡,游戏结束屏幕最终会在一段时间后重新出现。

有趣的是,如果我点击主页按钮或在 Android 中调出正在运行的应用程序菜单并重新进入应用程序,精灵会正常显示。

我的 GameOver 屏幕和游戏屏幕都是实现 Screen 接口的类。不过我觉得这与我的纹理有关。

有人知道是什么原因导致精灵不显示吗?

【问题讨论】:

标签: java android libgdx


【解决方案1】:

您需要确保在创建 OpenGL 上下文的线程中加载纹理。现在你的纹理被加载在一个静态块中,当应用程序启动时会导致纹理加载。

尝试将 TextureManager.java 更改为:

public class TextureManager {
    public static Texture PLAYER;
    .
    .
    .

    public static void load(){
        PLAYER = new Texture(...)
        .
        .
        .
    }
}

然后在MainGame.create() 方法中调用TextureManager.load()(第一次调用,在屏幕初始化之前)

然后在 OpenGL 上下文中加载资源。

【讨论】:

    【解决方案2】:

    您需要确保纹理已加载:我也遇到了类似的问题,我的错误是意外处理了纹理,这些纹理只有在您重新启动游戏时才会加载。

    所以去检查一下,你在哪里加载了你的纹理,你有没有把它们放在任何地方,什么时候调用这些方法。

    【讨论】:

    • 我没有在任何地方处理纹理,我只处理屏幕。我逐行跟踪了代码在调试器中所做的事情,它在生成新字符并加载纹理的代码处进行了操作。有趣的是,如果我退出应用程序并返回到它(暂停、恢复),所有纹理都会出现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多