表示するサンプルコードの言語を指定できます。
イベント機能
あるオブジェクトに対して毎フレーム実行したい処理などがある場合、イベント機能を使うと便利です。たとえば、キャラクターを何秒かかけて横に移動させたい場合は、1フレームごとにオブジェクトのX座標を増減させることで実現できます。
このページでは、シーン、レイヤー、オブジェクトをコンテンツと呼ぶことにします。オブジェクトからみたレイヤー、レイヤーから見たシーンをコンテナと呼ぶことにします。
イベントの利用方法
シーン、レイヤー、オブジェクトにはOnUpdate
やOnAdded
, OnDispose
などのイベントがメソッドとして定義してあり、シーン、レイヤー、オブジェクトを継承したクラスでこれらをオーバーライドすることで独自のイベント処理を特定のタイミングで実行することができます。どんなイベントがあるかを次に紹介します。
OnUpdate系
毎フレーム呼び出されます。シーンとレイヤーではOnUpdating
, OnUpdated
というペアになっており、OnUpdating
に書いた処理はコンテンツのOnUpdate
が呼ばれる直前に実行されます。OnUpdated
に書いた処理はコンテンツのOnUpdate
が呼ばれた直後に実行されます。
OnDrawAdditionally
毎フレーム呼び出される点はOnUpdate
系と同じですが、主に追加の描画に関する処理を書く場所として用意してあり、Object.DrawRectangleAdditionally
などの追加描画系メソッドはこの中でのみ呼び出すことができます。
OnAdded系
コンテンツがコンテナに登録されたときに呼び出されます。オブジェクトのコンストラクタが呼ばれる時点ではObject.Layer
がnull
になっていて自分を登録しているレイヤーを扱うことができませんが、このメソッドが呼ばれるときはコンテナにアクセスできることが保証されています。
シーンのOnAdded
に相当するイベントはシーン遷移に関するタイミングに合わせて3つに分かれています。
OnRemoved系
コンテンツがコンテナから登録解除されたときに呼び出されます。このメソッドが呼ばれるときはコンテナにアクセスできることが保証されています。
シーンのOnRemoved
に相当するイベントはシーン遷移に関するタイミングに合わせて3つに分かれています。
OnDispose
コンテンツがDispose
メソッドやEngine.Terminate
によって破棄されるときに呼ばれます。コンテンツが確保しているリソースの破棄などに利用することができます。
イベント早見表
シーン、レイヤー、オブジェクトには上で述べたイベントが次のように実装されています。
OnAdded | OnRemoved | OnDispose | OnUpdate | OnDrawAdditionally | |
---|---|---|---|---|---|
Scene | OnRegistered, OnStartUpdating, OnTransitionFinished | OnTransitionBegin, OnStopUpdating, OnUnregistered | ○ | Updating, Updated | |
Layer | ○ | ○ | ○ | Updating, Updated | ○ |
Object | ○ | ○ | ○ | ○ | ○ |
シーンのOnAdded, OnRemoved系イベント
シーンのOnAdded
, OnRemoved
系イベントは次のようになっています。
OnRegistered
:Engine.ChangeSceneによるこのシーンへの遷移開始時OnStartUpdating
:このシーンへのフェードイン開始時。シーンのUpdateが始まるタイミングOnTransitionFinished
:このシーンへのフェードイン終了時OnTransitionBegin
:このシーンからのフェードアウト開始時OnStopUpdating
:このシーンからのフェードアウト終了時。シーンのUpdateが止まるタイミングOnUnregistered
:Engine.ChangeSceneによるこのシーンからの遷移終了時