当前位置: 首页 > 知识库问答 >
问题:

加载时间-游戏屏幕在显示之前开始运行

郭鸿信
2023-03-14
for(int i = 0; i < lifePlayer1; i++){
            lives[i] = new ImageButton(skin, "Life");
            lifeTable.add(lives[i]);
            lives[i].setVisible(true);
            lives[i].setTouchable(Touchable.disabled);
        }

在游戏开始之前,我想显示一条消息,说“游戏开始!”。消息从左到右穿过屏幕,只有当消息已经消失时,游戏才开始。

我遇到的问题是,lifeTable的实例化需要时间,GameScreen在实例化完成之前就开始运行。我解释说:

  • 当我禁用lifeTable时,一切都运行得很顺利,“游戏开始了!”消息从左到右穿过屏幕,游戏开始。
  • 当我启用lifeTable时,当我按下MainMenueScreen中的“New Game”按钮时,有一个延迟(假设0.5秒),就像加载时间一样,当游戏屏幕最终显示时,“Game Starts!”消息几乎已穿过屏幕。
  • 我有一个2人模式,有2个生命表要加载,更糟糕的是,当游戏屏幕显示,在2人模式下,“游戏开始!”消息已经穿过屏幕,游戏已经开始。

有什么东西可以预加载lifeTable,就像我们用AssetManager预加载纹理一样吗?或者,是否有一种方法使GameScreen的render()仅在create()完成ever对象的实例化时才启动?

谢谢你的帮助。

共有1个答案

陆仲渊
2023-03-14

可能不是最有效的方法,但这是我在阅读你的问题时想到的,而且很简单

Variable Class
private boolean loadForTest = false;

.

@Override
public void show() {    
.//Other Code

    image = new Image(YourAssetManager.get("YourImage.png", Texture.class));

    image.addAction(Actions.sequence(   
                    Actions.moveTo(Gdx.graphics.getWidth(), 
                    (Gdx.graphics.getHeight()/2), 
                    1f)));

    image.setPosition((-100f), Gdx.graphics.getHeight()/2);

    YourStage.addActor(image);
}

@Override
public void render(float delta) {

.//Other Code

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();

    if (loadForTest == false){

       if (image.getActions().size == 0){
           Gdx.app.log("test" ,"now load table");

        for (int i = 0; i <lifePlayer1; i ++) { 
            vidas [i] = new ImageButton (piel, "Life"); 
            lifeTable.add(lives[i]); 
            lives[i].setVisible(true); 
            lives[i].setTouchable(Touchable.disabled); 
        }
           loadForTest = true;

       }else{
           Gdx.app.log("test" ,"Your Other Code Play");
       }
    }

}

编辑添加了另一个代码,因为我的英语不是很好,不知道你想做什么

Variable Class
private boolean loadForTest = false;
@Override
public void render(float delta) {

.//Other Code

    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();

    if (loadForTest == false){

        for (int i = 0; i <lifePlayer1; i ++) { 
            vidas [i] = new ImageButton (piel, "Life"); 
            lifeTable.add(lives[i]); 
            lives[i].setVisible(true); 
            lives[i].setTouchable(Touchable.disabled); 
        }
           loadForTest = true;

       }else{
           Gdx.app.log("test" ,"Your Image load, Your Other Code Play");
       }

}
 类似资料:
  • 我需要提高游戏屏幕加载时间的Android游戏,使用LibGdx游戏引擎。我已经实现了一些类(ImageProvider和SoundManager),它们负责预加载游戏的资产和音频部分。所以,问题是我如何加载这些游戏资源而不影响游戏屏幕之间的加载时间? 我在网上搜索了这个问题,在Stack上发现了一些类似的问题。 如何减少libgdx中所有资产的加载时间 LibGDX中的AssetManager

  • 我目前正在编写一个游戏,你必须避免小行星。我不得不处理一些混乱的坐标,我不得不猜测精灵的坐标。我现在有了描述我的世界的任意单位。不幸的是,我的游戏屏幕不能完全工作。当我想渲染我的小行星时,游戏屏幕会显示一个黑屏。 上面显示的代码工作正常,并向我展示了以下内容: 当我在GameScreen类中添加小行星的渲染方法时,GameScreen只是黑色的: 小行星等级: 小行星等级:

  • 这是来自Google Adsense应用程序页面的示例。显示在主页之前的加载屏幕显示在之后。 我不知道如何使用React做同样的事情,因为如果我让React组件渲染加载屏幕,它不会在页面加载时显示,因为它必须等待之前渲染的DOM。 更新: 我以我的方法为例,将屏幕加载程序放入中,并在Reactlifecycle方法中删除它。 示例和反应加载屏幕。

  • 问题内容: 在Angular 2中更改路线时如何显示加载屏幕? 问题答案: 当前的AngularRouter提供导航事件。您可以订阅这些内容并相应地更改UI。请记住要计入其他事件,例如,并在路由器转换失败时停止旋转器。 app.component.ts- 您的根组件 app.component.html- 您的根视图 提高性能的答案 :如果您关心性能,有更好的方法,则实现起来会有些繁琐,但是提高性

  • 我想了解游戏类和屏幕界面之间的关系。在我正在阅读的教科书中,它指出Game类将函数从ApplicationListener委托给screen对象。这让你可以切换屏幕。我不明白,为什么会这样,它是如何工作的? 我目前的理解是:游戏从ApplicationListener(Create()、Render()等)实现生命周期方法。但您不直接从ApplicationListener实现的原因是,如果您从G

  • 您好,我正在中制作一个游戏,我想知道如何以及最好的方式是在屏幕上添加游戏。以下是玩家健康状况小于或等于0的代码: 我不确定该怎么做,因为我试图使用另一个py呼叫游戏,但玩家死亡的时间被重置为0并返回,所以玩家死亡的地方可能发生任何事情吗?