2017-02-14 14 views
0

たとえば、私はただ1つのシーンで構成されるゲームを持っており、そのシーンでは、ユーザーが通常の再生モードまたはチュートリアルの再生モードの間で選択するようにします。ゲームは4つの異なるオブジェクトを持っています:ボール、4つの正方形とsquarecontroller。チュートリアルモードでは、私はゲームを一時停止している間にポインティング矢印をユーザに提供し、ユーザがポイントされているオブジェクトを押した後に続行したい。通常モード用のスクリプトとチュートリアルモード用のスクリプトを作成する必要があります。スクリプトを1つ作成し、すべての関数でチュートリアルブール値がtrueまたはfalseであるかどうかをチェックします(ユーザーがチュートリアルボタンを押した場合はブール値をtrueにする必要があります)前処理?同じスクリプトで2つのゲームモードを扱うにはどうすればいいですか?

例えばsquarescriptで

:それは答えるのは難しいので、私たちはあなたのゲームの何も知らない

void OnMouseDown() { 
    if (!isTutorial) { 
     return; 
    } 

    ResumeGame(); 
} 

答えて

1

に行く、それは理解して動作するようにコードが難しいことができます。正方形の1つで選手の得点を上げ、チュートリアルの矢印を表示すると決めた場合、これがどのように見えるか想像してみてください。

ビヘイビアを別々のオブジェクトに分割します。正方形の場合は、TutorialCollisionHandler,ScoreCollisionHandlerHazardCollisionHandlerのようになります。次に、どの衝突ハンドラを追加するかを変更するだけで、異なる四角形を作成できます。コードを書く必要はありません。

ユーザーが選択するモードに応じて、さまざまな四角形の組み合わせを使用できます。他のチュートリアルやゲーム固有の動作でも同じ原則を使用できます。

+0

TutorialCollisionHandler、ScoreCollisionHandler、およびHazardCollisionHandlerは、コードで追加できる別個のスクリプトですか? – user24028

+0

MonoBehavioursは、コライダーや剛体のようにSquare GameObjectに追加することができます。 – CaTs

3

:ballscriptで

void OnCollisionEnter2D() { 
if (isTutorial) { 
    PauseGame(); 
    arrow.position = GetRelativePosition(); 
    arrow.setActive(true); 
} else { 
    if (canCollide) { 
    score++; 
    } else { 
    GameOver(); 
    } 
} 

。しかし、経験則として、入力しなければならないほど、より良いものになります。また、ゲームに新しい機能を追加する必要がある場合にはどうなるか考えてください。コードに戻ってトンを変更する必要がありますか? そうなら、あなたはおそらくが良いコードを書いていないでしょう。 Levelから継承私はあなたが、継承を行うクラスLevelを作成し、サブクラスTutorialFreePlayまたは類似をしなければならないと言うだろう具体的な答えを与えるための試みとして、

が次にあなたが追加することができ、基本クラスのすべての「一般」機能や、特定の物事がif文の内部でこれらの動作を構成することにより、サブクラス

+0

私のゲームは、4種類のオブジェクトと約6つのスクリプトを含むかなりシンプルなゲームです。私はチュートリアルモードであるかノーマルモードであるかに基づいて、スクリプトが異なって行動する必要があります。 – user24028

+0

OKなので、ゲームで使用するモードを変数に入れてから、ゲームモードに基づいてさまざまなことを行うことができます。この答えが言うように、あなたはあまり提供していないし、あなたが望むものを知るのは難しいです。 – jdmdevdotnet

+0

さらに詳しい情報を追加しました。必要な情報があれば教えてください。 – user24028

関連する問題