表示するサンプルコードの言語を指定できます。
イベント機能
あるオブジェクトに対して毎フレーム実行したい処理などがある場合、イベント機能を使うと便利です。たとえば、キャラクターを何秒かかけて横に移動させたい場合は、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によるこのシーンからの遷移終了時