100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 在Kotlin中使用libGDX

在Kotlin中使用libGDX

时间:2021-01-30 09:06:45

相关推荐

在Kotlin中使用libGDX

最近,我一直在阅读有关不同语言的信息,以及它们可以为已经拥挤的软件开发人员带来什么,而一种语言对我来说很突出:Kotlin。 ( / )

这是一种相对较新的语言(成立于),而这些正是我选择其他众多成熟语言所使用的几个原因:

在JVM上运行并具有完全的Java互操作性 它既不是纯粹的OO也不是功能语言,它自然地适应了两种样式 它使用功能支持程序编程 它具有类型推断功能,并且支持可空和不可空数据类型 它的语法很漂亮,尤其是Pascal样式的变量声明(数据类型在变量之后) 非常简洁,我发现用Kotlin编写的代码可读性强

设置项目

我将按照Wiki( /libgdx/libgdx/wiki/Project-Setup-Gradle )中的建议和描述使用标准libGdx设置,其中Gradle作为构建工具,而IntelliJ作为IDE。

我将我的项目称为Nemo,因为它没有名称,这就是拉丁语中的“ nemo”(没有,没有人,没有人,没有名字)。 我们将看到它的去向。

创建项目后,将其导入到IDE中。 通常从根项目根目录导入/打开build.gradle文件。

导入项目后,升级libGdx。 最新的安装工具包含最新版本,但要手动执行,请打开定义所有依赖项的build.gradle根目录,并使用libGdx的最新版本。 最新版本可以在这里找到:/versions.html

将gdxVersion更改为最新版本,当前为1.8.0。

还要确保您的IDE已准备好用于Kotlin。

要设置IntelliJ,请按照此处的说明进行操作: https : ///docs/tutorials/getting-started.html

注意:要将插件升级到Kotlin的最新版本,我设法做到的唯一方法是卸载插件并重新添加。

对于eclipse用户,说明在这里: https : ///docs/tutorials/getting-started-eclipse.html

因为我们将Gradle用作构建工具,所以我们需要对其进行配置以使用kotlin插件来构建项目。 要做到这一点,kotlin-gradle插件的依赖需要被添加到buildscript主找到方法build.gralde文件。

添加行

classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.0-beta-4584'

到主build.gradle文件中的buildscript依赖build.gradle

build.gradle文件应包含以下内容

buildscript {repositories {mavenCentral()maven { url "/content/repositories/snapshots/" }}dependencies {classpath 'com.android.tools.build:gradle:1.2.3'classpath 'org.robovm:robovm-gradle-plugin:1.12.0'classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.0-beta-4584'}}

可以从位于Maven Central的Kotlin的存储库中获取版本号。 /artifact/org.jetbrains.kotlin/kotlin-gradle-plugin

可以在此处找到有关如何将Kotlin与Gradle结合使用的更多信息: https : ///docs/reference/using-gradle.html

为了定位JVM,需要应用Kotlin插件。

apply plugin: "kotlin"

到“核心”项目,因为我们将仅在“核心”中使用Kotlin。 还需要将Kotlin标准库添加到核心依赖项中。

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"

注意:kotlinVersion是在allProjects.ext中的项目级别定义的。

allprojects {apply plugin: "eclipse"apply plugin: "idea"version = '1.0'ext {appName = "nemo"gdxVersion = '1.8.0'roboVMVersion = '1.12.0'box2DLightsVersion = '1.4'ashleyVersion = '1.7.0'aiVersion = '1.7.0'kotlinVersion = '1.0.0-beta-4584'}repositories {mavenCentral()maven { url "/content/repositories/snapshots/" }maven { url "/content/repositories/releases/" }}}

有关最新版本,请访问Kotlin网站。

核心项目设置应如下所示:

project(":core") {apply plugin: "java"apply plugin: "kotlin"dependencies {compile "com.badlogicgames.gdx:gdx:$gdxVersion"compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"}}

注意:突出显示的行包含更改。

Kotlin可以与Java混合使用,并且由于计划仅使用Kotlin,因此我们不会将Kotlin源提取到不同的目录中,而是将当前的Java逐步转换为Kotlin。 幸运的是,我们只有一个类可以转换。 我们可以通过几种方式做到这一点。 如果使用的是IntelliJ,最简单的方法是从“工具”菜单中选择类,然后选择“将Java文件转换为Kotlin文件”

还有其他方法,例如,创建扩展名为.kt的空文件,复制Java文件的内容并将其粘贴到新的.kt文件中。 IntelliJ将提示您进行转换。

当然,只有安装并启用了Kotlin插件,所有这一切才有可能。

让我们检查一下由gdx设置应用程序生成的Nemo类文件:

package net.obviam.nemo;import com.badlogic.gdx.ApplicationAdapter;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.graphics.GL20;import com.badlogic.gdx.graphics.Texture;import com.badlogic.gdx.graphics.g2d.SpriteBatch;public class Nemo extends ApplicationAdapter {SpriteBatch batch;Texture img;@Overridepublic void create () {batch = new SpriteBatch();img = new Texture("badlogic.jpg");}@Overridepublic void render () {Gdx.gl.glClearColor(1, 0, 0, 1);Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);batch.begin();batch.draw(img, 0, 0);batch.end();}}

以及生成的Kotlin文件:

package net.obviam.nemoimport com.badlogic.gdx.ApplicationAdapterimport com.badlogic.gdx.Gdximport com.badlogic.gdx.graphics.GL20import com.badlogic.gdx.graphics.Textureimport com.badlogic.gdx.graphics.g2d.SpriteBatchclass Nemo : ApplicationAdapter() {internal var batch: SpriteBatchinternal var img: Textureoverride fun create() {batch = SpriteBatch()img = Texture("badlogic.jpg")}override fun render() {Gdx.gl.glClearColor(1f, 0f, 0f, 1f)Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)batch.begin()batch.draw(img, 0f, 0f)batch.end()}}

自动转换不是完美的,如果我们编译该类,则会得到两个错误:

Error:(9, 4) Gradle: Property must be initialized or be abstract

Error:(10, 4) Gradle: Property must be initialized or be abstract

错误指的是突出显示的行(10和11)中的2个未初始化的类属性。

internal var batch: SpriteBatchinternal var img: Texture

在Kotlin中,必须在构造函数或类的init方法中初始化声明的non null属性。 但是这样做,我们将不会使用libGdx生命周期方法,因此我们可以应用Kotlin的一项功能:Late Initialized Properties。 这是通过使用lateinit修饰符实现的。

internal lateinit var batch: SpriteBatchinternal lateinit var img: Texture

这将标记属性以进行后期初始化,并且在初始化之前对属性的任何访问都将通过特殊异常来发出信号。

就是这样,我们有了Kotlin libGdx项目。 我们可以构建它并以通常的方式运行它。

最简单的方法是使用Gradle包装器从命令行运行它。 在项目的根目录中,执行以下命令(Linux,OSX):./gradlew desktop:run或在Windows gradlew.bat desktop:run上

或按照Wiki中的说明进行操作: https : ///libgdx/libgdx/wiki/Project-Setup-Gradle

应该会出现非常熟悉的引导程序屏幕。

接下来,我们将探讨游戏开发中的一些常见任务,以及如何使用Kotlin实现这些任务。

不断发展的项目可以在这里找到: https : ///obviam/kotlin-gdx-nemo

翻译自: //01/using-libgdx-kotlin.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。