シーン。聞いたことありますよね。Unityで,SIV3Dで。仕組みは単純です。いろいろ構成を変えてお気に入りの、自分だけのシーンを作っちゃいましょう!
シーンとは
タイトル画面、設定画面、ゲーム画面などを切り替えるためのクラス。ただそれだけ。しかし、アルトナイトじゃ大違い!
hyojimanとかinputinは以前の講座でやってますのでそちらを参照くださいまし。
シーンには何が必要?
そんなものはシーンなしで作った奴から移植するだけです。フレーム毎の処理(画面表示とかインプットとか)だけあればいいと思いますね。それとシーンを切り替えるためもクラスが必要ですね。そいつはどうすればいいかというと。
class SC
{
Scene s;//力技だけどここを切り替えるといい感じにシーン変更ができる。
}
class Scene
{
SC sc;
hyojiman hyo;
public Scene(SC sscc)
{
sc=sscc;
}
protected void kirikae()
{
sc.s=new Scene(sc);
}
public void frame(inputin i)
{
hyo.hyoji();
if(i.ok(Keys.Escape,itype.down))kirikae();
}
}
//~~~~Formの方では
public void ticked(Eventargs e)//タイマーがティックしたときのイベント
{
sc.s.frame(input);//フレーム処理を行う
}
sc.sにシーンを格納し、それを切り替えることによってSceneを転換できます。ただそれだけです。切り替えにエフェクトが欲しいならkirikae();のところで書いたりするのがいいと思います。
ちなみに、もっといい方法があるかもしれませんので僕はこうやってるよって話で。
どんなシーンがある?
タイトル、設定、キャラセレクトなどのインフラに加えてストーリーと言うかお話を表示するためのシーン(ポーズに流用できたり)、ゲーム本体のシーンとそれをつなぐためのシーンがあったりします。
コンストラクタはだいたいSCだけですが、ポーズ画面を出す場合なんかは背景にゲーム画面の静止画を映しておきたいので表示するためのクラスをコンストラクタで渡していたりします。
その他
ステージを生成するとか、背景を生成するとかそういう使いまわすようなメソッドはstaticでつくるか、protectedにして子クラスで使用できるようにしておくと便利ですねぇ。