gpt4 book ai didi

java - AssetManager - 使用哪一个

转载 作者:行者123 更新时间:2023-11-29 07:09:39 27 4
gpt4 key购买 nike

两个版本都可以使用,但我不确定使用哪个版本以及为什么要使用那个版本?如果您已经卸载了 Assets ,是否需要处置 TextureAtlas?

版本 1:加载包文件(带有位置数据的 TexturePacker 文件)和 png。

gameSpriteSheet = new TextureAtlas(Gdx.files.internal(DATA_DIR_PATH + "GameSpritesPack.txt"));

assetManager.load(DATA_DIR_PATH + "GameSpritesPack.txt");
assetManager.load(DATA_DIR_PATH + "GameSpritesPack.png");

// Call only if assetmanager's update method returns true
headerRegion = getTexture("MainMenuHeader", gameSpriteSheet);

卸载:

if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.txt")) {
assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.txt");
}

if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.png")) {
assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.png");
}

if(gameSpriteSheet != null) {
gameSpriteSheet.dispose();
}

版本 2:仅加载包文件(带有位置数据的 TexturePacker 文件)。

assetManager.load(DATA_DIR_PATH + "GameSpritesPack.txt");

// Call only if assetmanager's update method returns true
gameSpriteSheet = assetManager.get(DATA_DIR_PATH + "GameSpritesPack.txt", TextureAtlas.class);
headerRegion = getTexture("MainMenuHeader", gameSpriteSheet);

卸载:

if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.txt")) {
assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.txt");
}

if(gameSpriteSheet != null) {
gameSpriteSheet.dispose();
}

注意:我已经阅读了 Mario 在 AssetManager 上的帖子和其他相关博客,但我似乎不明白为什么上述两个版本都可以正常工作。

最佳答案

AssetManager 用于“在后台”加载 Assets 。您列出的第一个版本只是在当前线程中同步加载图集。它实际上根本没有使用 AssetManager。这很好并且可以工作,缺点是如果你的 map 集很大(或者你有很多你正在这样做的),你的应用程序将“挂起”一会儿:

gameSpriteSheet = new TextureAtlas(Gdx.files.internal(DATA_DIR_PATH + "GameSpritesPack.txt"));

运行。您可以删除第一个示例中的两条 assetManager 行,因为在这种情况下它们没有做任何事情(有用)。

第二个版本是 AssetManager 的“正确”用法。基本上,您要求 Assets 管理器在后台线程上运行您在第一个版本中使用的代码 (... new TextureAtlas(...))。您必须等到该后台线程完成(即 update() 返回 true)。这个想法是,您可以在前台的渲染线程上做其他事情(即,在屏幕上动画漂亮的图案以在加载游戏 Assets 时分散用户的注意力),同时定期检查加载是否完成。

关于java - AssetManager - 使用哪一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com