私はフラッシュゲームのチュートリアルにも取り組んでおり、このように設定しています。ゲームの各部分は、Tutorialオブジェクトをチェックして、プレーヤーが実行できるアクションが利用可能かどうかを確認します。チュートリアルモジュールが存在しないか非アクティブである場合、プレーヤーは何でもできると想定できます。
たとえば、Sim Cityゲームを使用して、チュートリアルが開始したときに、適切な時間までプレイヤーが何もできないようにするとします。チュートリアルオブジェクトにPLAYER_CAN_USE_TOOLBAR、PLAYER_CAN_SWITCH_VIEWS、PLAYER_CAN_DESIGNATE_ZONEなどのフラグをすべてFALSEに設定することができます。プレーヤーがチュートリアルを進めると、これらのフラグをtrueに設定し始めることができます。
UI部分で、チュートリアルフラグが設定されていない場合に実際にアクションを実行するモデルまたはコントローラーへの信号をブロックします。
// If our tutorial module/tracker exists, but the action flag is set to false
// then leave our method early
if (mTutorial.isActive() && !mTutorial.checkFlag(PLAYER_CAN_DESIGNATE_ZONE)) {
return false;
}
//Do the rest of the action here
特定のイベントを待機する場合、イベントをチュートリアルオブジェクトに渡して、そのチュートリアルの手順を続行するためにプレーヤーが実行する必要があることを検証できます。たとえば、プレーヤーに特定のX、Yに住宅地帯を作成する必要がある場合:
var evt:GameEvent = new GameEvent(EVENT_CREATE_ZONE, ZONE_TYPE_RESIDENTIAL, startX, startY, endX, endY);
if (mTutorial.isActive()) {
if (!mTutorial.checkFlag(PLAYER_CAN_DESIGNATE_ZONE)) {
return false;
}
//Check to see if this event is okay
if (!mTutorial.validateEvent(evt)) {
//Show why the player can't do this via popup
return false;
}
}
//Do the rest of the action here
お役に立てば幸いです。残念ながら、これを機能させるには、古いコードにチュートリアルチェックを追加する必要があります。ただし、チュートリアルオブジェクトが存在しない限り、すべてのアクションが有効であると想定することで、この統合プロセスが容易になり、バグを最小限に抑えることができます。