【Godot 3.2】画面に文字を表示させる
ごきげんよう。Gutterfly Farmです。
現代のゲームエンジンのチュートリアルはとても充実していますが、残念ながらすべての人に最適化されているわけではありません。だいたい最初に謎のシューティングゲームやブロック崩しの作り方を学び、しかし結局はそのすべてを忘れます。
Godotのチュートリアルをいくつか試した?では、私たちが作りたい美しいText-Basedなゲームに必要なものはどこに書いてあるのか?
今回は(コンソールではなく、ユーザーに見える形で)画面に文字を写す方法を学びます。
プロジェクトの作成、ノードについての最低限のことはGodot Documentをどうぞ。
Labelを使って文字を表示する
基本的にはLabelノードを使います。
この後で紹介する記事では触れられていないのですが、ノードの構成は図の通りにしてみてください。Controlノードがあり、Labelはその子になります(スクリプトをアタッチするのもLabelではなくその親です)。
最低限この2ノードを作成したらInspecterからLabelのtextを編集できます。これで静的に文字を表示することができました。
フォントを変えてみる
フォントファイルを自由にLoadすることもできます。
現在のGodotはFileSystemにドラッグ/ドロップするだけで画像、フォント、音声などを追加できます。試しにMaknas-4-Flat.otfを入れてみます。
LabelのInspecterからCustom Fontを探して…
Empty > New DynamicFontを選択。もう1度クリックしてFont > Font DataからLoadを選択します。
(文章じゃ説明しづらいので、実際にエディタを操作しながら読んでほしい…)
無事にフォントを読み込みました。
色を変えたり、大きさを変えたり、実験してみてください。
テキストを動的に入れ替える
ラベルの文字を操作するには、Controlノードにスクリプトをアタッチします。
スクリプトエディタを開き、_ready()関数の中身を書き換えます。これはノードのtextプロパティを使って中身を置き換えるものです。
func _ready():
$Label.text = "New Text"
保存してシーンを再生(F6)を押すとラベルの文字が代入したものに変わっています。
変数を使ってみたり。
var a = 2
func _ready():
$Label.text = str(a)
Timerノードを追加するとこういうこともできます。
var counter = 0
func _ready():
$Label.text = str(counter)
func _on_Timer_timeout():
counter += 1
$Label.text = str(counter)
配列を出力してみたり。
var animals = ["cat", "human", "dog"]
func _ready():
$Label.text = animals[2]
公式ドキュメントのUI関連のところと組み合わせれば、もっといろいろなことができるはず。
合わせて読みたい
子供向けプログラミング教室を主催するKids Can Codeのページ。全部英語だけど、公式ドキュメントと合わせて必ず目を通しておきたい。
Godot公式言語であるGDScriptはPythonに寄せて作られたようで、海外では「ほぼPython」と言う人までいます。初めてプログラミングに触れる人はProgateのPythonコースをやっておくといいかもしれません。
アップデートした直後だけど、GWFも流行りのゲームエンジンに乗せ換えたいものです。
この記事が気に入ったらサポートをしてみませんか?