#13進捗_ソース構成とクリックイベント
ス「トランシーバーを止めたスーだよ」
ミ「補足担当のメイド版ミカゼです」
ス「久しぶりの進捗回やるよ」
ミ「一ヶ月くらい立っちゃいましたね」
ス「二週間制作ストップさせてたから仕方ないね。進捗の後にこのゲームプロジェクトのソースの階層とクリックイベントの実装の感じとお気持ちを話すよ」
ミ「珍しい試みですね。」
ス「進捗はすぐ終わっちゃうからだよ」
ス「ステージ3の骨組みは大体できたからざっくり見せるよ」
動画開始
ミ「画面と被っているので消えますね」
ス「最初の部屋恒例のルールやら
メモやらを見ないと進めない機能実装」
ス「出口」
ミ「白い扉ですね」
ス「上と下に南京錠」
ミ「大変そうな仕掛けですね」
ス「鍵を取って開けるだけだよ。通行禁止マークも用意。移動して南京錠開けるよ」
ミ「赤い部屋ですね」
ス「イベントは未実装」
ミ「鍵の取る取らない選択肢は実装。上の南京錠も開けるよ」
ス「わー、モノが多いです」
動画終了
ス「次はソースの階層をどういう感じでやっているのか説明するよ。」
ミ「わかりました」
前提!
ス「前提としてクラス=ファイル名にしているよ。C#では一致させる必要はないけど分かりやすいからね。」
ミ「補足ですが1ファイルの中に複数のクラスも入れられちゃいます。」
構造!
ス「最初は機能別にフォルダを作ってソースを入れていく形にしていたんだ。例えば振る舞いを行うソースはBehaviorというフォルダを作って中にソースを入れていくという形だね。さらにその中でステージ1用のフォルダを作ったりして分けて入れていく形。でもソースの階層を変えた」
ミ「どのように変えたのですか?」
画面を映しつつ
ス「ステージ毎に分けることにしたよ。ステージ1だったらStage1フォルダの中にBehaviorやClickEventフォルダを入れる。ステージ2も他も同じ構成。共通で使用するのはCommonフォルダを用意してソースを入れる」
ミ「機能とステージを逆にしたのですね。何でそんな形を取ったのですか」
ス「理由は2つあるよ。1つはAssembly Definitionを使ってコンパイル・ビルドを早くしたかったからだよ。プロジェクトの規模が大きくなるとコンパイル・ビルド時間が長い。その対策だよ。2つ目はシンプルにステージ毎のほうが分かりやすいからだよ。」
ミ「Assembly Definitionというのは何ですか?」
ス「Unityの機能でAssemblyを分割するものだよ。デフォルトだとAssembly-CSharp.dllファイルに纏められちゃうんだ。このDLLファイルは自分で書いたC#のソースをコンパイルした結果、作成されるファイルだよ。ゲーム本体に近しいものと思って良いよ。
Assembly Definitionは差分ビルドファイル、DLLを作って必要最低限なものだけコンパイル・ビルドして早くする仕組みだよ。」
ミ「分かりません」
ス「ざっくり説明すると一つのデカイAssemblyファイルを分割してコンパイル・ビルドを早くしちゃおうって機能だよ。」
ミ「なるほど。効果はあったのですか?」
ス「実はフォルダ構成やソースの配置に欠陥があって試してないよ。」
ミ「そうなのですね。となるとシンプルに分かりやすいという面が大きいという感じになりますね」
ス「そうだね。でもね、でもね、思った以上に見やすくて捗るよ!後、現状のコンパイル・ビルドは遅く感じてないからAssembly Definitionはおあずけだよ」
ミ「ならヨシ!ですね」
クリックイベント!
ス「次にクリックイベントについて語るよ。どこかの動画でソースから終えるようにしたいから、ソースにイベントを書いてソースから追えるようにしたいって言ってたけど半分変更したよ」
ミ「半分というのはどういうことでしょうか」
ス「Unity付属のButton機能でのクリックイベントは使わないことは変わってないよ。代わりにClickBlackKey のようなソースを用意してコンポーネントにアタッチさせる。このソースの中でクリックイベント登録をしてクリックしたら、任意の処理を実行するのような形にしたよ」
ミ「任意の処理ですか」
ス「そう。メッセージを表示したり、選択肢を表示させたりだね。この当たりも工夫しているんだけど長くなったから別の機会に解説するよ」
ミ「豆知識みたいなTips動画があっても良いかもですね」
ス「ううーん、あったら良いけどデザインパターンシリーズ作っちゃったからしばらくは難しいよ」
ミ「今回はこんな感じですかね」
ス「うん。次回はステージ3の骨組みが出来たからギミック作って、メッセージ分作ってステージ4に行く流れになるよ」
ス「締めるよ」
ス・ミ「ご視聴ありがとうざいました」
ス「またね」
ミ「貴方の一日が素晴らしきものでありますように」