変数

GDevelop では、数値やテキストのようなデータを一時的に格納するために、変数を使うことができます。たとえばプレイヤーの名前、体力、スコアなどを変数に記憶しておけます。

セーブデータのような、一時的ではないデータを格納する方法については、ストレージを参照してください。

データ型

変数はデータ型というものを持ちます。変数のデータ型は、変数が保持するデータの種類を表したものです。

GDevelop の変数には、次のデータ型があります。

  • 数値
  • テキスト
  • 構造体

数値

データ型が数値の変数には、0100-10 といった数値を格納できます。このデータ型を持つ変数を使って、掛け算や割り算といった数学的な計算ができます。

テキスト

データ型がテキストの変数には、こんにちは世界 といったテキストを格納できます。プログラミング言語では、このデータ型のことをよく文字列と呼んでいます。このドキュメントでもテキストと言ったり文字列と言ったりすることがありますが、同じ意味です。

構造体

データ型が構造体の変数には、他の変数を複数格納できます。このデータ型は、関連性の強い複数のデータをひとつの変数にまとめることができます。プログラミング言語では、このデータ型のことをよくオブジェクトハッシュ、あるいは辞書と呼びます。

子変数へのアクセス

構造体が内部に保持する変数のことを子変数と呼びます。(訳注:「子要素」あるいは単に「要素」と呼ぶこともありますが、同じ意味です)子変数の値にアクセスするには、の中で次の構文を使います。山括弧内の値は、実際の変数名に置き換えてください。

<親変数>.<子変数>

子変数が存在しない場合は、GDevelop がそれを自動的に作成します。

構造体変数は他の構造体変数を含むことができます。これによって、複雑な構成のデータを一つの変数に保持することが可能になります。ただしデータの管理が難しくなるので、慎重に使ってください。

子変数への動的アクセス

式を使うと、子変数に動的にアクセスできます。

たとえばプレイヤーのスコアを表す構造体 PlayerScore があって、レベルごとのスコアを子変数 Level1Level2Level3 に格納している状態を想像してください。現在のレベル番号が CurrentLevel という変数に入っていて、そのレベルのプレイヤーのスコアを取得したいものとします。この場合は、次の構文でスコアにアクセスできます。

PlayerScore[“Level”+ToString(Variable(CurrentLevel))]

配列をシミュレートする

子変数に 012、…のような名前を付けると、構造体を配列のように使うこともできます。

スコープ

変数のスコープは、下記の内容を定義します。

  • 変数に対してどこからアクセスできるか
  • 変数がどれくらいのあいだメモリー上に存在するか
  • 変数の作成に必要な手順は何か

GDevelop には次の 3 つの変数スコープが存在します。

各変数スコープの詳細については、リンク先のページを参照してください。

変数の名前付け

変数の名前にはドット/ピリオド(.)とカンマ(,)を使えません。変数名には英数字のみ(a-z, A-Z, 0-9)を使うことをおすすめします。(訳注:仕様上は日本語を使っても問題ありません)

宣言しないで変数を使う

作成(宣言)しないで、いきなり変数を使うこともできます。

たとえばアクションや条件の中で存在しない変数を参照した場合、GDevelop はその変数を自動的に既定値で初期化します。既定値はデータ型に応じて次のように決まります。

  • 数値変数は値 0 で初期化される
  • テキスト変数は値 ""(空文字列)で初期化される

事前に作成していない変数を使うことは可能ですが、変数は使う前に明示的に宣言して初期化することをお勧めします。それによって GDevelop が最適化したイベントを生成して、ゲームで使われる変数をきちんと管理することができるようになるからです。

変数のデバッグ

ゲームを作っていると、変数の値が予期した値にならないせいで、バグが発生することがあります。もしゲームの何かがうまく動かなくて、その問題に変数が関係している可能性がある場合は、GDevelop のデバッガーが原因究明の役に立つでしょう。

詳細はゲームデバッガとプロファイラーを参照してください。