10日で学ぶUnity5 2Dゲーム入門(完)

Unity

8日目 ゲームを管理する

  • 敵キャラ出現の自動化。
  • 不要な敵キャラの削除。
  • ハイスコア(テキスト)の表示。
  • ハイスコアの保存。

敵キャラの出現及び削除は本書のスクリプトをひたすら記述します。
各敵のプレハブ登録・座標取得・敵出現乱数・出現位置調整などが書かれていますが、まぁよく分かりません。
よく分からないけれども、いままで書いてきた命令文が組み合わさっているので、なんとなくは理解可能。
そういうもんだと思って完コピしていくのみ。
コメントアウトで各命令文の役割は一言説明してくれています。

各敵を登録してます。

テストプレイにて敵ランダム出現も成功中。

ハイスコアを表示の際、ここで始めてゲーム画面内に「テキスト」を表示させる方法が出てきます。
Canvas」というユーザーインターフェース(UI)を表示する領域で設定していくみたいです。
そしてUnityでの表示(座標)は「スクリーン座標」と「ワールド座標」なるもので区別されていて、キャラなどの配置とUIの配置がプレビューで大きく異なるようです。

キャラ配置プレビューと比較してCanvasプレビューは、やたらとでかい!

しかし、Canvasとゲーム画面を重ねて表示させる設定を教えてくれるので一安心。

テキストを配置する際、本書ではヒエラルキーの「Create」→「UI」→「Text」となっているが、使用中のバージョン2023版だと「Create」→「UI」→「Legacy」→「Text」となっていました。

バージョン違いでのちょっとした変化がありました。

推奨されるText設定は、フォントを画像に変換する「Text-TextMeshPro」に変更されたみたいです。

今回は練習なので、本書と同じにするためレガシーのほうで設定しておきました。

ハイスコア(データ)の保存・読み込みは、Unityに搭載されている「PlayerPrefs」というクラスを使用するのが一般的みたいです。
しかし、ネットでパラパラと情報をみていたところPlayerPrefsは使用しない方が良い、という情報もあったのでデータ保存はひとまず保留へ。
PlayerPrefsだと勝手にPCの別フォルダにデータを生成するからとか、セーブロードは他のアセットを使った方が良さそうだとかあったので、もう少し調べてからにしてみようと思います。
実際PlayerPrefsを使用してもあまり気にしなくても良さそうですが。

UI表示のCanvasサイズにひとクセ有り!

ゲーム画面とUI画面が独立している作りなので、そこらへんの操作感に注意が必要でした。

あとは、敵キャラの挙動スクリプトは丸写しなため、特に問題なく実装可能。
しかしどうしてもエラーが直らなかった部分は再びChatGPTちゃんに泣きついたが、質問の仕方などが悪くて問題解決せず。
なんとかミス部分を指摘されるも、実際の修正は場所や大文字小文字が逆だったので混乱。

原因である「hero」と「HERO」でのスペルミスに時間取られる。

9日目 タイトルやリザルト画面の追加

本編のゲームシーンとは別シーンに「タイトル画面」を作成していきます。
クリックでゲームスタートとするスクリプトで、「シーン」から「シーン」への遷移を学びます。
このときの注意としては、追加したシーンはビルドセッティング(ゲーム出力設定)で登録しておかないといけないというのがあります。

追加したシーンを登録しておかないとシーン遷移などでエラーが…

追加シーンにチェックを入れて一安心。

クリア後にリザルト画面への遷移は、とあるミスで時間をとられるもなんとか成功です。

とあるミスとは、UI表示であるスクリプト部分。
原因は単純で、スクリプトでUIを制御する場合はスクリプト内での宣言みたいなものが必要だったということ。

canvasでのUI使用時に忘れがちな宣言「using UnityEngine.UI;

ゲームオーバーシーンも追加して、これにて「エビフライゲーム」の完成です。
本書にはこれ以降10日目として、スマホ向けゲーム出力の説明がありますが、まずはPC向けができればよかったので学びはここまでとしました。

10日で学ぶUnity5 2Dゲーム入門
最後まで一通り実践してみましたが、図解も説明も分かりやすく、Unityでのゲーム作業はこんな感じ、ということをしっかりと学べたと思います。

Unity5というとても古いバージョンでも、そんなに、というかほぼ気にならずに2023年版で作業ができました。
Unityのインストール方法だけが最新版を見た方が良いなというぐらいです。

あ、あとは実践しなかったスマホ用ビルドの図解が若干最新版の表示(ウィンドウ内容)と異なってそう、というところでしょうか。方法はそんな複雑ではないと思うので、差異を含めても操作は理解できそうです。

その他、Unityで気になったこと。

  • ウィンドウモードでのゲーム起動の仕方
  • 初期プロジェクトや完成時のファイルサイズ

出力したゲームを立ち上げたとき、全画面表示になっていたのでウィンドウモードでの起動方法を調べました。
ピンポイントな調べ物なので、まずはChatGPTちゃんに聞いてみる。

即答!ビルドセッティングで設定でできるようです。

自分には馴染みである画面サイズ「1280×720」で設定。
後々こういうところはコンフィグでいじれるようにしないといけませんね。

お次はファイルサイズの話。
今回制作したゲームのサイズを見てみました。
新規プロジェクト」のまっさら状態で 1.07GB
完成時プロジェクト」では 1.32GB となっていました。
Unityプロジェクト自体が最初から大きなサイズとなっているのが分かります。

完成時のプロジェクト全サイズ

今回のアセット(画像素材・スクリプトファイル)サイズは 4.26MB

出力後のゲーム全体ファイルのサイズが 162MB

素材を5MBも使用していない状態でのゲームが162MBで出力されるのか…
ビルド時の軽量化も学んでいく必要がありそうだ。
とはいっても1GBクラスが200MBになるなら良圧縮かね。

それよりもプロジェクトのでかさのほうが問題である。
素で1GB超え!
自分の場合は2Dドット絵を扱うため素材自体は大きくならないので(音関係は膨れていくか…)、だいたい1プロジェクト2GBもいかないと思いたいが、それでも増えていくバックアップなどを考えると大きいですなぁ。
もう少し軽くなってほしいけれども、制作機能面を考えればこんなものなのだろうか。

単純なノベルゲームを作るとしたら、普通にノベルゲームエンジンのほうが軽くて良いね(´・ω・`)
そしてアクションゲームの作り方(構成)は理解してきたけれども、
Unityって、ノベルゲームってどうやって作るのだろうか???
シーンの遷移はできるから、各場面を作っていくのだろうが、なんていうか「文章をクリックで進めていく」という構成がイメージできない。
今の時点ではアドベンチャー・ノベルゲームを作るのであるならば「ノベルゲームエンジン」を使用した方が100倍楽チンである、ということしか浮かばないのである。

前途多難!

コメント