绑定具有libGDX依赖项的资产
我正在为我计划制作的许多类似游戏在libGDX之上制作一个纸牌游戏引擎。下面是我的计划结构:每个游戏都是一个单独的项目,引擎是添加到绑定具有libGDX依赖项的资产,libgdx,dependencies,project-structure,Libgdx,Dependencies,Project Structure,我正在为我计划制作的许多类似游戏在libGDX之上制作一个纸牌游戏引擎。下面是我的计划结构:每个游戏都是一个单独的项目,引擎是添加到核心模块的依赖项。引擎本身将有很多资产,如卡片精灵和其他UI元素,它们也需要包括在内 我怎样才能使这个结构工作?有没有办法让依赖项包含其资产?另一种方法是复制每个游戏的所有资产,我认为这不是很有效。此外,默认情况下,这些资产位于android模块中,这是引擎依赖项没有的(引擎是单个模块)。我应该将资源放在引擎模块中的什么位置?像libgdx那样操作。类路径中包括一些
核心
模块的依赖项。引擎本身将有很多资产,如卡片精灵和其他UI元素,它们也需要包括在内
我怎样才能使这个结构工作?有没有办法让依赖项包含其资产?另一种方法是复制每个游戏的所有资产,我认为这不是很有效。此外,默认情况下,这些资产位于
android
模块中,这是引擎依赖项没有的(引擎是单个模块)。我应该将资源放在引擎模块中的什么位置?像libgdx那样操作。类路径中包括一些资产,比如位于核心项目gdx/src/com/badlogic/gdx/utils/中的arial-15.fnt。看看BitmapFont
的无参数构造函数是如何被引用的。像libgdx本身那样操作。类路径中包括一些资产,比如位于核心项目gdx/src/com/badlogic/gdx/utils/中的arial-15.fnt。看看BitmapFont
的无参数构造函数是如何引用的。我们有一个类似于您上面所述的设置,即项目与资产之间的“多对一”关系。这里有一个潜在的解决方法
基本思想是:
android/build.gradle
afterEvaluate { project ->
project.tasks.preDebugBuild {
dependsOn copyAssets
}
project.tasks.preReleaseBuild {
dependsOn cleanAssets
finalizedBy copyAssets
}
}
build {
finalizedBy copyAssets
}
dependsOn
或由复制任务完成来完成这一点
Gdx.files.internal()
的URI前面添加一个assets/
。这一步更依赖于您的个人文件结构,因此可能需要稍加调整才能使所有项目的路径正确,但不要气馁cleanAssets
,那么这将不适用
这种方法的优点(对我来说)是它不再依赖于跨项目链接或时髦的类路径操作。它只是真实目录中的真实文件。缺点是它增加了使用的磁盘空间,因为在不同的项目中可以有资产的多个物理副本
下面不是一个完整的例子,但希望能给你足够的参考
正在执行的复制任务的示例。此特定任务从“核心”项目中获取资产目录,并将其复制到android项目中
android/build.gradle
task copyAssets(type: Copy) {
from "../core/assets"
into "./assets"
}
如何使android项目的构建依赖于此任务的示例:
android/build.gradle
afterEvaluate { project ->
project.tasks.preDebugBuild {
dependsOn copyAssets
}
project.tasks.preReleaseBuild {
dependsOn cleanAssets
finalizedBy copyAssets
}
}
build {
finalizedBy copyAssets
}
您会注意到,在preReleaseBuild中,我还添加了一个cleanAssets
任务。在生产构建过程中,清除任何垃圾并进行新拷贝总是一个好主意。cleanAssets
只是一个基本的删除任务
非android项目的复制任务依赖关系示例:
android/build.gradle
afterEvaluate { project ->
project.tasks.preDebugBuild {
dependsOn copyAssets
}
project.tasks.preReleaseBuild {
dependsOn cleanAssets
finalizedBy copyAssets
}
}
build {
finalizedBy copyAssets
}
如果您仍有困难,请告诉我您的位置,我会尽力帮助您。我们的设置与您在上文中概述的项目与资产的“多对一”关系类似。下面是一种可能的方法 基本思想是:
android/build.gradle
afterEvaluate { project ->
project.tasks.preDebugBuild {
dependsOn copyAssets
}
project.tasks.preReleaseBuild {
dependsOn cleanAssets
finalizedBy copyAssets
}
}
build {
finalizedBy copyAssets
}
dependsOn
或由复制任务完成来完成这一点
Gdx.files.internal()的URI前面添加assets/
)
。这一步更依赖于您的个人文件结构,因此可能需要稍作调整才能使所有项目的路径正确,但不要气馁cleanAssets
,那么这将不适用
这种方法的优点(对我来说)是它不再依赖于跨项目链接或时髦的类路径操作。它只是真实目录中的真实文件。缺点是它增加了使用的磁盘空间,因为在不同的项目中可以有资产的多个物理副本
下面不是一个完整的例子,但希望能给你足够的参考
正在执行的复制任务的示例。此特定任务从“核心”项目中获取资产目录,并将其复制到android项目中
android/build.gradle
task copyAssets(type: Copy) {
from "../core/assets"
into "./assets"
}
如何使android项目的构建依赖于此任务的示例:
android/build.gradle
afterEvaluate { project ->
project.tasks.preDebugBuild {
dependsOn copyAssets
}
project.tasks.preReleaseBuild {
dependsOn cleanAssets
finalizedBy copyAssets
}
}
build {
finalizedBy copyAssets
}
您会注意到,在preReleaseBuild中,我还添加了一个cleanAssets
任务。在生产构建过程中,清除任何垃圾并进行新拷贝总是一个好主意。cleanAssets
只是一个基本的删除任务
非android项目的复制任务依赖关系示例:
android/build.gradle
afterEvaluate { project ->
project.tasks.preDebugBuild {
dependsOn copyAssets
}
project.tasks.preReleaseBuild {
dependsOn cleanAssets
finalizedBy copyAssets
}
}
build {
finalizedBy copyAssets
}
如果您仍有困难,请告诉我您在哪里,我会尽力帮助您。您的项目是一个渐变项目吗