表示するサンプルコードの言語を指定できます。

イベント機能

あるオブジェクトに対して毎フレーム実行したい処理などがある場合、イベント機能を使うと便利です。たとえば、キャラクターを何秒かかけて横に移動させたい場合は、1フレームごとにオブジェクトのX座標を増減させることで実現できます。

このページでは、シーン、レイヤー、オブジェクトをコンテンツと呼ぶことにします。オブジェクトからみたレイヤー、レイヤーから見たシーンをコンテナと呼ぶことにします。

イベントの利用方法

シーン、レイヤー、オブジェクトにはOnUpdateOnAdded, OnDisposeなどのイベントがメソッドとして定義してあり、シーン、レイヤー、オブジェクトを継承したクラスでこれらをオーバーライドすることで独自のイベント処理を特定のタイミングで実行することができます。どんなイベントがあるかを次に紹介します。

OnUpdate系

毎フレーム呼び出されます。シーンとレイヤーではOnUpdating, OnUpdatedというペアになっており、OnUpdatingに書いた処理はコンテンツのOnUpdateが呼ばれる直前に実行されます。OnUpdatedに書いた処理はコンテンツのOnUpdateが呼ばれた直後に実行されます。

OnDrawAdditionally

毎フレーム呼び出される点はOnUpdate系と同じですが、主に追加の描画に関する処理を書く場所として用意してあり、Object.DrawRectangleAdditionallyなどの追加描画系メソッドはこの中でのみ呼び出すことができます。

OnAdded系

コンテンツがコンテナに登録されたときに呼び出されます。オブジェクトのコンストラクタが呼ばれる時点ではObject.Layernullになっていて自分を登録しているレイヤーを扱うことができませんが、このメソッドが呼ばれるときはコンテナにアクセスできることが保証されています。

シーンの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系イベントは次のようになっています。

シーンのイベント