絵描きの不定期Unityゲーム制作日記 ❹
全容を理解したら私の”勝ち”だ。
その1「これはツクールでいうところの何なのよ?」
8月9日:わたくしの思考はRPGツクールMVに準拠しておりますわ!
前回の日記で「スクリプト間の変数ってデフォルトで共有じゃねえのかよ~!」って文句を言ってたけど、それ以外にもツクールでいう「スイッチ」に当たる部分が全く見当が付かなくて困っています。
「フラグ」ていう奴があるのは何となく知ってるんですが、これ調べたら結局「変数」らしいじゃあないですか。
えっ、じゃあツクール君の管理してくれてる「スイッチ」って何なんすか・・・?
逆にbool型の変数処理をツクールでは「スイッチ」って呼んでる可能性・・・?
調べたらスイッチは「グローバル変数」とかいうもので定義している(?)らしく結局「変数」らしい!(さらに調べたらC#にはグローバル変数は無いらしい。)
つまり「フラグ」が実質ツクールでいう「スイッチ」に当たるって認識でいいのかなあ。
「static」を使えばグローバル変数ぽいことできるらしいという記事を見たので後で試すかーという感じ・・・だったんだけどUnityの本見てたら既にそういう使い方してたわ。
プレイヤーが動いているか、メニューを開いているかの取得は「static」で行った方がいいっぽい。スクリプト書きなおさなきゃ。
ってか変数やスイッチを日本語名でリスト管理できたのって神機能なのでは・・・?
Unityにそういうアセット無いんですかね?あったら買うが。
その2「これがツクールでできればなぁ~~~~」
いつか逆輸入してやるからな
結局「static」を使ってメニューの管理をしてたんだけど案の定「ノベルゲーム」をツクールで作ってた時の弊害にぶちあったった。
メニューボタンをクリックすると”クリックした”という判定を受け取って文章が一つ先に進んでしまう、のである。
これは困った。ツクールでもノベルゲー作った時は本文を並列処理で回してピクチャボタンでメニュー開くってやつやってたんだけど、同じ現象で困ってた。
絶対ノベルはティラノで作った方がいいぜ。つかティラノとかどうなってるんだろうっていつも思う。ティラノもツクールと同じjavascriptなんだよね。
でもティラノセーブ画面開いた後のバグ結構多いからあんま参考にしない方がいいのかもしれん。
ちなみにUnityの方は解決できた。
・メニューボタンを作り、そのボタンに「クリックしたときの動作」と「マウスカーソルがボタン上にあるときの動作」「ボタン上から離れた時の動作」を入れたスクリプト(私は「UIManager」とした)を付けておく。
・メニューボタンのインスペクター上で「クリックしたときの動作」をこのボタン自身をもとに(selectobjectにこのボタンをヒエラルキーからドラッグ)してクリックしたときの動作を選ぶ。
・GameManagerのスクリプトではもともと「クリックされたとき」に「OnClick」という関数が実行されるように組んでおく。
今回の「OnClick」の内容は「テキストファイルから文章を一つ進める」だったんだけどこれを条件分岐で変えるようにif文を組む。
デフォルトだとボタン押す判定より先にクリックの判定を取得しているので、「ボタン上にカーソルがある場合はクリックに紐づいた処理を無効にする」という感じでスクリプトを書いた。クリック判定はさせるが、その「クリックしたときの処理」までたどり着かせない。
ここら辺は2Dゲームの本でやった「プレイヤーの状態を”public static(共有できる変数)”でその都度監視し、状態によって”if文”で反応を分岐させる」というのの応用。
メニューボタン上にカーソルがあるかどうか、メニューを開いてるかどうかを「共有されたbool」で判断して、画面をクリックしたときの処理を変える。
これで無事メニューを開いている間はクリックしてもキャラクターが喋る文章が先に進まなくなった。
完璧だ。ミッションコンプリート。これがやりたかったんだよ。
これがツクールでできればUnityでゲーム作らなくて済んだんだよ。
でもやっぱアニメーションの自由度高いし、ピクチャの切り替えがチラつかなくてスムーズなのは最高だからunityを勉強し始めて結果オーライだね。
ツクールって「プログラムできなくてもゲーム作れるよ!」が売りだから
「ツクールをプログラムから理解する!」みたいな本とか記事ってめっちゃ少ないんですよ。
だからプログラム理解初心者はUnityで勉強した方がいいんじゃねぇかな~みたいな。
私はプログラミングある程度理解したらツクールに逆輸入しに帰るよ。必ずね。