与libGDX依赖捆绑资产

问题描述 投票:0回答:2

我正在上libGDX顶部的纸牌游戏引擎,很多类似的比赛,我打算做。下面是我计划如何构建这样的:每场比赛是一个单独的项目和发动机是添加到core模块的依赖性。该引擎本身将有很多像卡精灵和其他UI元素的资产,他们需要被列入了。

我怎样才能使这个结构工作?有没有什么办法让依赖包括其资产?另一种方法是复制所有资产,每场比赛,我不认为这是非常有效的。另外,资产默认android模块,该引擎的依赖没有(发动机是单模块)英寸我应该把资产的引擎模块?

libgdx dependencies project-structure
2个回答
1
投票

我们似乎类似于您在上面用“多对一”的项目,以资产关系已经概述了一个设置。这里是去了解它的潜在方法。

其基本思路是:

  1. 有一个单一的,权威的资产文件夹
  2. 有个别项目在此文件夹复制到其生成的输出在编译时
  3. 由具有项目的编译任务dependsOn做到这一点或者是finalizedBy副本任务。
  4. 确保Android和其他项目是由资产复制到libgdx的内部文件API查找特定类型项目的地方快乐。 (例如,Android的项目自动获得前置到URI的assets/提供给Gdx.files.internal(),这一步是更依赖于你的个人文件结构,所以它可能需要一些调整,以获得所有项目的寻路权,但没有得到泄气!

边注:应摇篮自动跟踪资产目录是否真的改变了。如果没有也已更新,然后复制任务将有效地成为空操作,从而加快了构建相当多的非第一次运行。显然,如果你做一个cleanAssets像我提以下,那么这将不适用。

这种方法(我反正)的优点是,它不再依赖于跨项目链接或时髦的类路径操作。这是真实的目录只是真正的文件。缺点是,它增加了使用,因为有可能是在不同的项目资产的多个物理拷贝的磁盘空间。

下面是不是一个完整的例子,但应该有希望给你足够的去了。

在行动的副本任务的例子。这尤其是一个需要从“芯”项目,并把它复制的资产目录到Android项目。

android/build.gradle

task copyAssets(type: Copy) {
    from "../core/assets"
    into "./assets"
}

如何使机器人项目的构建例如取决于这个任务:

android/build.gradle

afterEvaluate { project ->
    project.tasks.preDebugBuild {
        dependsOn copyAssets
    }

    project.tasks.preReleaseBuild {
        dependsOn cleanAssets
        finalizedBy copyAssets
    }
}

你会在我添加了一个cleanAssets任务以及在preReleaseBuild通知。它总是清理的所有垃圾和生产版本中做一个新的副本是一个好主意。 cleanAssets仅仅是一个基本的删除任务。

对于非Android项目的副本任务相关的例子:

build {
    finalizedBy copyAssets
}

如果你还停留,让我知道,我会尽力帮助。


1
投票

做到像libgdx做本身。有包含在类路径的资产,如Arial,15.fnt位于核心项目在GDX / src目录/ COM / badlogic / GDX / utils的/。看看BitmapFont没有-PARAM构造它是如何引用。

© www.soinside.com 2019 - 2024. All rights reserved.