これを達成する方法は2つあると思います。それはすべて、ターゲットプラットフォームとリソースの重要性によって異なりますが、ここで説明します。
1)リソースが問題ではない場合
通常のシーンとバトルシーンのオブジェクトをすべて1つのシーンにまとめることができます。
2つの空のゲームオブジェクトを作成します(1つはタウンシーンオブジェクト用、もう1つはバトルシーンオブジェクト用)。その後、ゲームキャラクターのバージョンを2つまたは1つ持つことができます。次に、戦闘がトリガーされたときにカメラを町のシーンから戦闘シーンに切り替え、戦闘が終了したときに町のシーンに戻すだけのスクリプトを記述します。
各キャラクターのバージョンが1つある場合は、ゲームキャラクターコントローラーの動作をバトルモードとノーマル/タウンモードに変更するスクリプトを追加するだけです。
各キャラクターのバージョンが2つある場合は、適切なキャラクターコントローラースクリプトを記述し、使用しているキャラクターに応じてゲームキャラクターをアクティブ化/非アクティブ化する必要があります。これは、ファイナルファンタジー7、8、9のようなゲームが同じ効果を達成した方法です。ゲームキャラクターには2つのバージョンがありました。1つはバトルモード用で、もう1つは通常モード用です。
2)リソースが問題である場合(そして私はより効率的な方法だと思います)
Application.LoadLevelAdditive関数を使用できます。この関数を使用すると、別のシーンをロードして、現在のシーンのすべてを破棄するのではなく、新しいシーンとそのすべてのオブジェクトを取得して、現在のシーンに追加できます。したがって、基本的には次のように使用できます。
別のバトルシーンを作成し、シーン内に空のゲームオブジェクトを作成して、シーン内のすべてのオブジェクトを保持します。
あなたのnoramlシーンでも同じことをしてください。
バトルモードに移行する必要がある場合は、次を使用します。
Application.LoadLevelAdditive('battlescene');
そして、その後バトルシーンをアンロードしたい場合は、バトルシーンのすべてが含まれているため、バトルシーンゲームオブジェクトを破棄するコードを記述するだけでアンロードできます。
最初の方法と同様に、2つの異なるバージョンのキャラクターを使用するかどうかを決定できます。2つのバージョンを使用することの利点の1つは、ゲームモデルを詳しく説明しないことで時間を節約したい場合(特にゲームが非常に大きい場合)、町のシーンに縮小されたモデルを使用することで処理能力を節約できることです。バトルシーンがキャラクターが戦っている場所を表す小さなステージであると仮定して、バトルシーンに洗練されたより詳細なモデルを使用します。ファイナルファンタジーVIIを考えてください。考慮すべきことです。
それがお役に立てば幸いです。私はそれをすべて急いで書いたが、lemmeは何かを片付ける必要があるかどうかを知っている。