見出し画像

Godotをはじめよう

Gutterfly Farmです。ごきげんよう人類。

先日、最初にリリースしたゲームを3年ぶりにアップデートしたところです。控えめに言って最悪な気分です。何もかも手作業で制御するには、この作品は大きくなりすぎました。

いまは今後の戦略を考えつつ、Godot(ゴドー?、ゴードー?)を学習しているところです。いま海外で人気上昇中のゲームエンジンです。Godotドキュメントは未訳のところも目立ちますが、だいたい日本語で読めます。

この不安定な状況でどこまで開発を続けられるかわかりませんが、いずれはより高度な環境に移行しなければいけません。残念ながらGodotドキュメントは読みやすいとは言えませんが、なんとか「ボタンを押すと文字が変わる」ところまでは再現できたので、ここまでの学習内容を共有したいと思います。

今回はこれを作ります。

画像1


ノードを追加する

画像9

画面の+ボタン、またはCtr+Aを押して〈Panel〉〈Label〉〈Button〉ノードを用意する。このときノードの階層が↓とまったく同じになるように注意。

画像9

パネルやボタンの大きさは2Dエディタで調整。

画像3

テキストはInspecterのTextから入力。

画像4

Panelにスクリプトをアタッチ

Panelを右クリック>Attach Scriptを選ぶ。

画像5

GDScriptを選んでCreate(自分の環境ではすでにスクリプトがあるのでLoadになっている)を押す。

これ以降、ノードの横に出てきた巻物?アイコンをクリックするとスクリプトエディタが開きます。

画像6

ボタンが押されたときのシグナルを接続

Buttonノードを選択して、Node>Signals>pressedをダブルクリック。

画像7

そのままConnect

画像8

スクリプトに_on_Button_pressedが追加され、緑のアイコンが見える。

画像10

スクリプトにこれを追加。

func _on_Button_pressed():
    get_node("Label").text = "HELLO!"

"Hello"のところは好きに変えていい。再生ボタン、またはF6を押してテスト。

できました。

画像11

気になる点

公式ドキュメントではスクリプトからpressedシグナルをメソッドに接続する方法が解説されていますが、そのとおりにコピペしてもエラーになります。

結局、自分のエディタではこう。

extends Panel

func _ready():
    pass

func _on_Button_pressed():
    get_node("Label").text = "HELLO!"

_ready()には触れず。これでちゃんと動いているように見えるのだけど…問題があるのなら教えてほしい。

この記事が気に入ったらサポートをしてみませんか?