関数

「イベント関数」または単に関数は、GDevelopの強力な機能です。 外部イベントイベントリンクグループ ゲームのイベントを整理したり、ゲームの複数の場所でイベントを再利用したりするのに役立ちます。たとえば、いくつかの外部イベントで敵を管理するために共通のイベントを配置し、リンクを使用してさまざまなシーンでこれらのイベントを含めることができます。

関数はさらに一歩進んでいます。イベントを使用して、新しい条件新しいアクション、さらには新しい式を宣言できます。

関数を登録するときに、条件、アクション、または式のいずれかを選択できます。この関数には、ゲーム中に条件またはアクションが起動されたときに実行されるシーンや外部イベントなどのイベントが含まれます。

イベントに加えて、関数には通常の条件、アクション、式と同様にパラメーターもあります。パラメータは、オブジェクト、数値、またはテキストです。

an example of replacing external events by functionsを御覧ください。また、 automatically extract events to a functionも参考にしてください。
関数の使用例をビデオで御覧ください。 this video by gamefromscratch.

新しい関数の作成

関数は「拡張機能」にグループ化されます。これらは ゲームにインストールできる拡張機能と同じです。 ゲームの拡張機能のリストを見ることができますし、プロジェクトマネージャで確認できます。

下部の「+」ボタンをクリックして、新しい拡張機能を作成します。名前を右クリックして名前を変更できます。単一の拡張機能で同じものに関連する関数を使用することをお勧めします。

リスト内の拡張機能をクリックして、エディターを開きます。デフォルトでは、拡張機能には機能がありません。左側の[新しい関数を追加]をクリックして追加します。

新しい機能が追加されました。名前を変更して、内部で何をしたいかに応じて名前を付けることができます。たとえば、パラメーターとして渡されたオブジェクトが戦う準備ができているかどうかをチェックする条件がIsReadyToFight関数である場合、それを呼び出すことができます(名前に使用できるのは英数字とアンダースコアのみです)

関数をクリックして編集します。設定とイベントを変更できます。

関数の構成とイベントの編集

関数が選択されると、上部に、関数の構成が表示されます。

  • 最初のパラメーターは、関数のタイプです:「アクション」、「条件」、「式」または「ストリング式」。[アクション]または[条件]を選択すると、ゲーム内のイベントを編集するときに、アクションと条件のリストに関数が表示されます。[式](または[文字列式])を選択すると、式を編集するときに式のリストに表示されます。
  • 次に、一覧に表示される名前を構成できます。
  • 関数のパラメーターを選択するときに、ウィンドウに表示される説明を入力します。
  • アクションまたは条件の場合、イベントシートに表示される文を入力できます。関数がパラメーターを受け取る場合(これらの詳細については以下を参照)、アンダースコアの間にPARAMxを記述xし、パラメーター番号(1から始まる)で置き換えることでそれらを含めることができます。
Rotate objects _PARAM1_

これは、「RotateObjects」という名前の関数の例です。この関数は、「指定されたオブジェクトの回転」という説明と、回転するオブジェクトを1つのパラメーターで指定したアクションです。

パラメータ

パラメータを使用すると、関数は本当に便利で強力になります。関数の構成の下で、パラメーターを追加できます。これらのパラメーターは、イベントシートでアクション、条件、または式を使用するときに使用できます。それはあなたが慣れている通常のアクション/条件/式のようなものです!

「パラメーターの追加」ボタンでパラメーターを追加します。

パラメーターごとに次のように入力できます。

  • 関数のイベント内のパラメーターにアクセスするために使用される名前。
  • タイプ。パラメータには、オブジェクト、数値、またはテキストを指定できます。オブジェクトを選択すると、受け取るオブジェクトのタイプも選択できます。
  • 説明。アクション/条件または式を構成するときにウィンドウに表示されます。

たとえば、回転するオブジェクトを返すパラメーターを追加できます。

関数へイベントの追加とパラメーターの使用

関数を構成したら、イベントを追加できます。これらのイベントは、条件、アクション、または式がゲームの部分で使用されるときに起動されます。

  • すべての既存のイベント、アクション、条件、および式を使用できますが、パラメーターとして入力したオブジェクトに制限されます。これは、関数がそれらにのみ作用し、ゲームの残りの部分に「副作用」がないことを保証するためです-これは悪い習慣であり、関数の再利用と生成を難しくします。
  • 関数はどこでも再利用でき、シーンに限定されないことに注意してください。シーンの変数のリストはそこにありません。 通常のアクションを使用し、変更する変数を手動で書き込むことで、引き続きそれらを操作できます。
  • 関数は自律的であり、理論上はプロジェクトにも結び付けられていないため、リンクは関数では使用できません。

一部のオブジェクトを回転させる関数の例を次に示します。

これは非常にシンプルで実用的ではない関数の例です(関数を記述せずにアクションを使用してオブジェクトを直接回転させることもできます)。ただし、より複雑なロジックを内部に追加すると、関数の強さがわかります。このロジックをゲームの他の部分から再利用するのは非常に簡単です!

関数が条件または式の場合、「関数」カテゴリのアクションを使用して、式/条件値を設定します。 (「戻り値」とも呼ばれます)

ゲーム中の関数の使用

関数のイベントを構成および作成したら、ゲーム中で使用できます。

新しいアクション(または条件)を作成し、リストで拡張機能の名前を見つけて、作成した関数を選択します。

それですべてです!この関数は、イベントエディタの他の条件、アクション、または式と同様に使用されます。

オブジェクトグループは、関数を作成しながら、特色、類似したオブジェクトパラメータをグループ化するのに役立ちます。このようにして、アクション/条件をオブジェクトパラメータのグループ(オブジェクトを指すパラメータ)に一度に適用できます。

高度な使用法

このページでは、機能の概要を説明しました。これらはGDevelopのより強力な機能の1つです。イベントを使用してイベントを拡張できるため、非常に読みやすく簡潔なイベントシートを作成できます。それらを使用することにより、ゲーム用に記述するイベントの量を減らし、コピー&ペーストを避け、オブジェクトの一般的なタスクに関数が常に使用されるようにすることでバグを減らすことができます。

再帰関数

関数は自分自身を呼び出すことができます!関数のイベントでは、ゲームの他の部分と同じアクション/条件/式を使用できます。これは「再帰的」関数と呼ばれます

再帰的な関数を書くときは特に注意してください。条件を追加しない場合、関数はそれ自体を無限に呼び出し、ゲームをブロックする可能性があります。

「関数」カテゴリのアクション を使用して、式/条件の値を返すことができます.

関数の共有

関数は、プロジェクト間で共有できます(GDevelopで作成されるアクション/条件など)。それを行う最も簡単な方法は、単にコピー/ペーストすることです。ただし、便利な機能セットを作成した場合は、それらを コミュニティと共有することを検討して下さい。

再利用可能で共有できるような、外部イベントを関数で置き換える例を参照して下さい。 自動的にイベントを関数に展開するも参考にして下さい。