0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GodotでアプリのVersionを取得する

Posted at

概要

アプリのVersionとかBuild番号とかを画面に出したいことがあると思います。
方法としては3つあります。

  1. Godotの設定ファイルから取得する
  2. プログラムで番号を定義してそれを表示する
  3. 各プラットフォーム(iOS, Androidなど)のネイティブから取得する

順番に説明していきます

Godotの設定ファイルから取得する

バージョン番号はExportの設定に記載していると思います。
Screen Shot 2022-05-03 at 11.44.00.png
この設定はプロジェクト直下にあるexport_presets.cfgというファイルに記述されています。

iOSのversionを取る例です

	var export_config: ConfigFile = ConfigFile.new()
	var err = export_config.load("res://export_presets.cfg")
	if err == OK:
		print(export_config.get_value("preset.0.options", 'application/short_version'))
		print(export_config.get_value("preset.0.options", 'application/version'))

※preset.0.optionsの番号の箇所は環境により異なります。exportの設定がある分だけ数字が増えます。2つexportの設定がある場合は0, 1がある

これの欠点

人によっては、XcodeやAndroid Studioを直接編集して番号を変えたりしているかもしれません。その場合は使えない方法です
※自分の場合もこれで、Export Projectをするのは最初の一回だけであとはpckだけをExportしてます。

参考
https://godotengine.org/qa/71010/read-exported-version-code-from-gdscript?show=71010#q71010

プログラムで番号を定義してそれを表示する

これは説明するまでもないですが、定数をどっかに定義してそれを参照するようにします。

これの欠点

Versionあげるときに忘れないようにする必要があります

各プラットフォーム(iOS, Androidなど)のネイティブから取得する

調べた感じ、標準ではGodotのプログラムから取得する方法はありませんでした。やるとしたら、プラットフォーム毎のプラグインを作ってそれを呼び出す形にする必要があります
それをやるプラグインはちょっと見当たらなかったですね

これの欠点

プラグインでやる必要があるので面倒

結論

1の方法は先にも書きましたが、exportの設定でVersionを管理してないので、自分の場合はこの方法は使えなかったです
3はプラグイン作ろうかなと思ったのですが、よく考えるとiOSとAndroidのバージョンが異なる場合というのはあまりないケースな気がしました。
なので2のプログラムに定義するのが楽だしこれでいいやという結論になりました。番号あげるのを忘れないようにするのは、ブランチ切って次のVersion開発するときにまず初めに番号を変えるというルール(クセ)をつけるという感じにしました

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?