えんの付箋紙と小さなダンボールの中

LOLとかスマホゲームとかたまに開発も サモナーネーム: enpel

画面遷移で悩んでいる。

基本Stateマシンでいいんだけど少し悩んでいるので整理。

 

前提

・各シーンを表すなんかのクラスがある。

・シーン内の画面はそれぞれUIPanelになっている。

・戻るボタンによっていい感じに戻って欲しい。

 

考えている施策

・各UIPanelに戻ることができる画面である事を意味するコンポーネントをつける?

 

メリット

コンポーネントが付いているObject=画面なのでEditor拡張等で後にノードのつながり等知ることができる。

デメリット

・1画面1コンポーネントになりそう・・・?

 

考えられる仕様

・各画面を表すIDかなにかを持つ

・画面単位の遷移の仕方を集約する

 ・1シーンの中であっちこっちに遷移する画面が出てきた場合大変になりそうだけど1画面あたりの遷移の仕様=コンポーネントの記述となる。

 

親Stateと子State・一時State

・遷移先によっては親が変わる場合がある。

・その場合戻るボタンをおした時はちゃんと子Stateに行くべき?

・演出等の一時的なState(戻るの動作で表示すべきではないもの)はどうする?

enum StateType

{

  ParentState,

  ChildState,

  TempState

}

こんななにかをもったものが良さそう

 

class ParentSceneState

{

StateType stateType = StateType.ParentState;

SceneType sceneType = SceneType.Title;

}

 

class ChildSceneState

{

SceneType parentSceneType = SceneType.Title;

ParentSceneState.ChildSceneType currentSceneType = ParentSceneState.ChildSceneType.Top;

}

 

泥臭くなりそうなもの

各Stateは遷移の仕方と戻り方を知っている。

 

class SceneStateAction

{

 public Action Next;

 public Action Return;

}

 

管理する側

class SceneReturnManager

{

Stack<SceneStateAction> states;

public bool CanReturn { get; set; }

public void ReturnScene()

{

if (CanReturn)

  states.Pop().Return();

}

}

 

みたいな?

 

欠点があってこれ設定するのマジで糞めんどくせえってことかな。

あと今がどこかを知るすべがないと行けない。

 

あーむずい...

 

 

終わり