俺に解るように説明する "Godot Engine 3.x" 入門+

ゲームエンジン Godot Engine に関すること。入門とか使い方とかチュートリアルとか、あれとかこれとか。日本語解説。

"Godot Engine" GDScript ... 謎の Inherits と extends

時間は掛かったが、何とか「プロジェクトの作成」ーー>「シーンにノードを追加」ーー>「簡単なノードの編集」ーー>「簡単なスクリプトの添付」ーー>「シーンの再生」まで、一応出来るようになった。だが前回ボタンの使い方の所で、今後ゲームを作っていくにあたりスクリプトが扱えないと先に行けないくさいと判明した。・・・クンクン・・・。とても臭う。さてどうする、俺。

よし。新しくプロジェクトを作成して、スクリプトの勉強だ。待ってろ、GDScript

f:id:ore2wakaru:20170812201146p:plain

こんな感じでシーンを作る。忘れないうちに、適当な名前でセーブしておく。2Dエディターでの見栄えは、気にしない。

f:id:ore2wakaru:20170812231008p:plain

ここまでは余裕。[+] で追加していくだけだ。

Inherits の謎

スクリプトを追加する時に出る窓に、"Inherits" という項目がある。ほっておくと、勝手にスクリプトを貼り付けるノードのタイプが入っている。「Node」タイプなら “Node"、「Control」タイプなら "Control"、「Button」 タイプなら "Button” という具合だ。

f:id:ore2wakaru:20170812214639p:plain

だが、"Inherits" とは何だ? 意味は「受け継ぐ」(なぜ3単現の s が?)という事だが。

最も簡単な答えは、スクリプトの一番最初の行に記述される “extends XXXXX” の “XXXXX” の所に記入される文字列を書く所、という事になるんだろうが、そんな事で本当にいいのか? "extend"、意味は「拡張する」(こっちにも3単現の s が!)。

実験だ。 適当な文字列を入れてみる。ポチポチ、、、

f:id:ore2wakaru:20170812224027p:plain

、、、何と! ここには文字が2文字以上入っていると、それがどんなものでも、作成OKになる。ちょっとビックリだ。本当にこんなんでイイなら、[作成] だ。どうなる?

f:id:ore2wakaru:20170812225548p:plain

ちゃんと作成されたようだ。本当にいいんだ。へー。

では、中身を何も変えないで、そのままスクリプトのセーブ。そして、本当にOKなのか、シーンの再生をしてみる。

f:id:ore2wakaru:20170812231759p:plain

エラーじゃん。OKって言っといてコレかよっ。しかも、裏でなにげに動いてるし。停止ボタンで停止だ。

ま、今回の件では、つまり “Inherits” は “extends” に引き渡す単なる文字列を入れる項目って事が実証されたわけだ。エラーになろうが、なるまいが、知らないよって事だ。

extends の謎

基本、なんでもOKにしちゃう “Inherits” は頼りにならないことが判明した。エラーにならないようにするには “extends XXXXX” の “XXXXX” に適切な文字列を記入する事が大事だってことだ。"Inherits" で変なことをしても、"extends" で修正しちゃえばいいのだよ。

で、一体なにが適切なのか? 何が許されるのか? Godot がデフォルトで入れてくるノードのタイプだけなのか? 変えてはいけないのか? スクリプトの1行目から、超難問にぶつかった!

いや、そもそもこの1行、"extends XXXXX" は必要なのか? いやいや、、、、

、、、いやなのか?

では、次回実験だ。なぜなら、ドキュメントを読んでもさっぱり分からないからだ。