在Kotlin中使用libGDX

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

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

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

设置项目

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

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

Screen-Shot-2016-01-19-at-13.49.30

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

Screen-Shot-2016-01-19-at-13.53.02

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

Screen-Shot-2016-01-19-at-13.52.28

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

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

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

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

对于eclipse用户,说明在这里: https : //kotlinlang.org/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 "https://oss.sonatype.org/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的存储库中获取版本号。 http://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-gradle-plugin

可以在此处找到有关如何将Kotlin与Gradle结合使用的更多信息: https : //kotlinlang.org/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 "https://oss.sonatype.org/content/repositories/snapshots/" }
       maven { url "https://oss.sonatype.org/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;
 
  @Override
  public void create () {
     batch = new SpriteBatch();
     img = new Texture("badlogic.jpg");
  }

  @Override
  public 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.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

class Nemo : ApplicationAdapter() {
   internal var batch: SpriteBatch
   internal var img: Texture

   override 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: SpriteBatch
internal var img: Texture

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

internal lateinit var batch: SpriteBatch
internal lateinit var img: Texture

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

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

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

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

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

Screen-Shot-2016-01-19-at-16.37.50

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

翻译自: https://www.javacodegeeks.com/2016/01/using-libgdx-kotlin.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值