Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LibGDX:AssetManager在队列中有资产,正在更新,但从未加载_Java_Libgdx_Assets - Fatal编程技术网

Java LibGDX:AssetManager在队列中有资产,正在更新,但从未加载

Java LibGDX:AssetManager在队列中有资产,正在更新,但从未加载,java,libgdx,assets,Java,Libgdx,Assets,修复:将模型转换为g3db格式修复了该问题 我使用的是Java1.8.0\u60和Android 6.0 所以我决定在LibGdx中尝试3D,我在AssetManager中遇到了一些奇怪的问题 到目前为止,我一直在完全遵循教程,并且正在尝试加载从其中一个教程中获得的船的.obj模型 我正在创建AssetManager并将.obj文件添加到队列中,Model.class作为load方法的第二个参数 然后,我等待加载资源,在每次渲染时对AssetManager调用update(),以检查它是否已加载

修复:将模型转换为g3db格式修复了该问题

我使用的是Java1.8.0\u60和Android 6.0

所以我决定在LibGdx中尝试3D,我在AssetManager中遇到了一些奇怪的问题

到目前为止,我一直在完全遵循教程,并且正在尝试加载从其中一个教程中获得的船的.obj模型

我正在创建AssetManager并将.obj文件添加到队列中,Model.class作为load方法的第二个参数

然后,我等待加载资源,在每次渲染时对AssetManager调用update(),以检查它是否已加载

现在,我的指纹看起来就像这样:

队列中的资产:1

进展:0.0

我的渲染方法如下所示(在GameRenderer类中):

我的资产加载方法如下所示(在AssetLoader类中):

没有抛出异常

我的猜测是有什么东西导致AssetManager阻塞,但我不知道是什么导致了阻塞。任何帮助都将不胜感激

谢谢

编辑:


如果我在AssetManager上调用finishLoading(),它会一直阻止,直到资产全部完成,游戏就会冻结。

你的loading()方法是什么?加载完成时是否将加载变量设置为false?加载()只获取加载布尔值。当模型开始加载时,加载设置为true,并且仅在bindModels()中设置为false。AssetManager#update()总是返回false,因此出于某种原因,没有实际加载模型。确定方法正在运行吗?我的意思是
“队列中的资产:”
字符串显示在控制台中?据我所知,您使用资产管理器是错误的。请参见,您需要在循环中调用assetManager.updated()以实际加载资产,但创建时返回的值为false。正在调用更新-布尔值“created”用于类初始化,与资产无关。
public void render(){

    if(!created){
        return;
    }

    if(assets.loading() && assets.update()){
        assets.bindModels();
    }
    camController.update();

    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

    modelBatch.begin(cam);
    modelBatch.render(assets.getInstances(), environment);
    modelBatch.end();

}
public void loadModels(){   
    assets.load("ship.obj", Model.class);
    loading = true;
}

public void bindModels() {
    ModelInstance model = new ModelInstance(assets.get("ship.obj", Model.class));
    instances.add(model);
    loading = false;
}

public boolean update(){
    System.out.println("Assets in queue: " + assets.getQueuedAssets());
    return assets.update();
}