cocos2dx3.2全体の概要(二)——Director(監督)


監督という言葉は映画を撮ることを連想させます.間違いなく、私たちが作ったゲームは、ゲームプレイヤーに映画を体験するように手配することに相当します.監督は「映画」の流れをコントロールする鍵です.
エンジンの各クラスの機能は非常に強いので、私は勉強している間に、各クラスの機能を徹底的に見ることは明らかに不可能です.そのため、私はどの機能が必要なのかだけに関心を持っています.監督類には多くの機能があり、一つ一つ列挙するより文書を見に行ったほうがいい.ここにはCSDNネットユーザーが共有した文書があり、内容は翔実である.
ネット上のAPIドキュメント
 
 
一、監督は準備をしなければならない
監督の意味は実は分かりやすいですが、どこから監督を知るのでしょうか.私の考えは自動生成のフレームワークコードから着手し、まず監督の基本的な職責を簡単に理解することです.
自動生成クラスAppDelegateでは、メンバー関数アプリケーションDidFinishLaunchingでゲームを初期化し、監督が準備作業の核心となる.
まず、
auto director = Director::getInstance();

ここで,監督は単例モードを採用していることが分かる,すなわち,ゲーム全体に1人の監督の例しかない.単例モードはゲームでよく見られるデザインモードで、ネット上の資料が豊富で、余計なことを言わない.
auto glview = director->getOpenGLView();

OpenGLViewを取得します.
director->setOpenGLView(glview);

OpenGLViewを設定します.
director->setDisplayStats(false);

ゲーム状態が表示されるかどうかを設定し、デフォルトはtrueで、ゲームに入ると左下にFPSなどのゲーム状態が表示されます.
director->setAnimationInterval(1.0 / 60);

ゲームFPSを設定することは、通常フレーム数であり、1.0/60は1秒60フレームであるべきである.
director->runWithScene(scene);

シーンscene(sceneは自分のシーンのインスタンスのポインタ)に入ると、「映画」が始まります.
 
 
二、監督はゲームの流れをコントロールしなければならない.
基本設定が完了すると、本格的にゲームが開始されます.一般的に私たちがゲームをするとき、まずメインメニューというシーンを見て、ゲームの開始ボタンをクリックすると、メインゲームのシーンに入り、設定をクリックすると、設定パネルというシーンに入り、終了をクリックすると、ゲームを終了することが想像できます.これらは、監督のコントロールが必要だ.
Director::getInstance()->replaceScene(TransitionFade::create(0.5, newScene)); 

例えばメインメニューをクリックしてゲームを開始すると、メインゲームシーンに入ります.newSceneはこのシーンです.TransitionFadeは、シーン切り替え時のフェードアウト(元のシーン)フェードイン(新しいシーン)効果で、0.5は効果切り替えの時間、単位秒です.また、cococos 2 dx sceneシーン切り替え効果を検索して資料を検索する効果もたくさんあります.
Director::getInstance()->stopAnimation();
Director::getInstance()->startAnimation();

AppDelegateクラスで前後台に入るときに呼び出されます.1つは停止動作、1つは開始動作です.彼らを使ってゲームを一時停止し、ゲームを続けることを考えているかもしれません.しかし、実際の使用効果はよくありません.ここでは動作を一時停止するだけなので、重力の場合は明らかな振れがあります.ゲームを一時停止して復元するには:
Director::getInstance()->pause();
Director::getInstance()->resume();

ゲーム全体の流れは大体このようにして、最後にゲームを終了します:
Director::getInstance()->end();

 
 
三、監督からゲームの基本情報を入手できる
監督はゲーム全体を監督するため、ゲームの基本情報は監督に把握されている.プログラミングでは、これらの「グローバル」な情報が必要になることが多いかもしれません.
Size visibleSize = Director::getInstance()->getVisibleSize();

表示領域を取得します.
Vec2 origin = Director::getInstance()->getVisibleOrigin();

座標の原点を取得します.
auto scene = Director::getRunningScene();

現在実行中のシーンを取得します.
Size windowSize = Director::getInstance()->getWinSize();

OpenGLビューのサイズを取得します.
 
要するに、監督はゲーム全体の最も重要な操作者であり、ゲーム全体を接続して制御しているが、ゲーム内の具体的な論理はそれとは大きく関連していない.したがって,使用時には,ゲームのある時点で監督がシーンを切り替えたり,ゲームを一時停止したり,ゲームを終了したりする必要があることを知るだけでよい.他のもっと複雑な機能は、必要に応じて、さらに深く研究します.