【ウディタ】初心者向けテクニック4(動的選択肢作成)

1.やってしまいがちな選択肢の作り方


例えば、難易度選択の選択肢を作る際、
クリアした難易度によって選べる難易度が増えるとします。

【例】

  • クリアした難易度が0の場合(未クリア)
    • レべル1
  • クリアした難易度が1の場合(レベル1クリア)
    • レべル2
    • レべル1
  • クリアした難易度が2の場合(レベル2クリア)
    • レべル3
    • レべル2
    • レべル1

クリア済の難易度が通常変数に格納されているとします。
やってしまいがちなのは、クリア済の難易度による条件分岐で
それぞれの選択肢を表示するやり方(図1-1)です。

f:id:ashutaru1552:20190707161756j:plain
図1-1

このやり方をしてしまうと、
クリアした難易度の数だけ条件分岐が増えて大変です。

また、もし選択肢の中に直接処理を記述していた場合、
追加の処理が発生した場合にすべての条件分岐に追加しなければならない
というデメリット(図1-2)もあります。

f:id:ashutaru1552:20190707162655j:plain
図1-2

2.ウディタの選択肢仕様(空の文字列)


ウディタの選択肢には特殊な仕様があります。
それは空の文字列を設定した場合、その選択肢が表示されなくなる
というものです。

これはすべての選択肢に対して有効な仕様なので、
選択肢1,2は空の文字列で選択肢3だけ文字が入っていた場合、
選択肢3だけ表示されるようになります(図2-1, 2-2)。

f:id:ashutaru1552:20190707163903j:plain
図2-1

f:id:ashutaru1552:20190707164136p:plain
図2-2

この仕様を利用することで、
条件分岐を使わずにすっきりした選択肢を作ることができます。

3.動的選択肢作成


空の文字列は選択肢に表示されないということは、
必要ない時は選択肢の文字列を空っぽにしておくことで
表示しないようにすることができるということです。

例えば最初は図2-1のように選択肢1,2を空っぽにしておいて、
レベル1だけ表示されるようにしておきます。

その上でレベル1がクリアされたら、
選択肢2に「レベル2」という文字列を設定してあげることで、
動的に選択肢を増やしていくことができるわけです(図3-1, 3-2)。

f:id:ashutaru1552:20190707165034j:plain
図3-1

f:id:ashutaru1552:20190707165138p:plain
図3-2

この方法を利用すると、図3-1のように、
ひとつの選択肢だけで処理を記述できるようになり、
コモンがすっきりして管理しやすくなります。

4.CDBを利用した管理方法


コモンで扱える文字列変数は最大5つまでなので、
コモンの文字列変数で選択肢を増やすのはあまり得策ではありません。
そこで、CDB(可変データベース)を利用します。

選択肢に、CDBの値を表示する特殊文字(※)を設定します。
※\cself[タイプ番号:データ番号:項目番号]

【例】

  • 選択肢1
    • \cself[20:0:0]
  • 選択肢2
    • \cself[20:0:1]
  • 選択肢3
    • \cself[20:0:2]

そしてCDBに選択肢用のデータを作成し、
必要に応じて選択肢を追加してあげることで、
同様の結果が得られます(図4-1)。

f:id:ashutaru1552:20190707171609j:plain
図4-1

項目「選択肢2」に「レベル2」という文字を
レベル1クリア時などに設定してあげれば、
動的な選択肢の完成です。

CDBの値はセーブファイル毎に保存されるため、
セーブ処理が実行されれば、
常に最新の状態の選択肢が表示されるようになります。

選択肢のパターンをコモン側で管理したり、
実行するコモン番号もDB側で管理したりすると、
より便利なコモンが作れそうですね。