Unityが分からないから勉強してみた【Unity学習Log #5】
当記事をご覧頂きありがとうございます。
この記事はUnity初心者の私が学んでいく過程で分かったこと・メモしておきたいこと・躓いてしまったこと等をまとめる記録となっています。
ナンバリングしていますので、同じく初心者の方の道しるべの一つになれば幸いです。
パスウェイ
今回の記事では、画像の中央紫項目を行いました。
Chrome拡張機能 Deepl翻訳
前回の記事に引き続き大活躍した拡張機能です。
英語の問題文やSNSの外国語等、文章翻訳に力を貸してくれました。
Unityの専門用語やいくつかの単語は単体で調べる必要がありましたが、翻訳⇒日本語と見比べることで外国語の勉強にも向いていると思います。
Junior Programmer
今回進んだ工程は「Junior Programmer」です。
ここでは過去の記事にまとめた「Create with Code」と、その内容に肉付けする拡張機能・学んだ機能を元に自分の考える仕様を追加するチャレンジ項目等、かなり内容の濃いものとなっていました。
また、ゲームを作成する際に必ず必要なセーブ・ロード機能や3Dオブジェクトの組み合わせ方等も解説があったため、簡単なスマホアプリやPCゲームであれば「Junior Programmer」の内容までで十分組めると思いました。
自分のアイデアをどうスクリプトに落とし込めるかが重要になりそうなので、Unityの基礎知識を学ぶ場合はやってみる価値あるのではないかと思います!
Junior Programmer: Create with Code 1
「物を前に走らせよう!」
「物がぶつかったらぶつかったものを無くそう!」
「ヒエラルキーの扱い方はこうやって使いましょう!」と、3Dゲームで扱いがちなスクリプトやUnityでよく扱う内容についてがまとまっています。
1つのゲーム完成に向けた解説を追いながらやっていくので、完成したときは純粋に嬉しく思いました!
動画を主としているため字幕の英語は内容がよく分からないところが多いですが、監督役の方が画面を操作しながら解説して下さっていることもあり、なんとなくやっていることが分かる・とりあえずやってみようの気持ちで、過去記事当時は進めていきました。
今回は復習の気持ちも込めてやっていたため、しっかりやろう!という気持ちが大きかったです。
「Bonus Features」と題した項目では、解説有りで完成したゲームに4つの難易度でそれぞれ拡張機能を実装していくという「Junior Programmer」オリジナル要素も加わり、頭を悩ませました。
最終的にどの「Create with Code」項目もEasy・Mediumはできましたが、難しい難易度Hard・Expertはクリア出来ずじまいだったので、これからのパスウェイ中に余裕があれば実装してみたいと思っています。
※Unit 2の「Bonus Features」項目 当時完成図
Junior Programmer: Create with Code 2
「キーボード・マウス操作での画面操作」
「ゲームオブジェクトを非表示から表示するスクリプト実装」
「テキストUIや音・エフェクトの実装」と、Unityを扱っていく上でなくてはならない部分を中心に扱われていました。
ゲームオブジェクトをクリックすると、消えると同時に爆発エフェクトがボンっとなり、スコアに反映される。
単純な挙動ですが、その挙動を開発する際どんな処理が扱われているのか知る機会が得られて、またそれを自分で組めたことに嬉しくなりました。
また、ここでは何かプロジェクトを始める場合に必要なテストや、自分の実績を表すポートフォリオについてもまとめていました。
組織で働いていくと自分の実績は見落としがちになりますが、個人で勉強・働くとなると自分の能力が可視化されていることは、そのままステータスになります。
世に出すポートフォリオが無いと、食べていくのも難しくなる。
当たり前のことですがとても納得いく内容で、今まで意識していなかったことでもあり勉強になりました。
※Unit 3の「Bonus Features」項目 当時完成図
Junior Programmer: Manage scene flow and data
実際にゲーム開発していくとすると、どう開発していけばいいでしょうか。
頭の中にある漠然としたゲームを、ただ闇雲にゲームオブジェクトやスクリプトに落とし込めようとしても上手くいかないと思います。
プレイヤーはどうやって画面操作するでしょうか。
エフェクトはどんな色・音にしますか?
画面遷移はしますか?
作ったあと、どうやってテストしましょう。
等々...
ここでは「Junior Programmer」以前に学んだ制作段階や、開発ドキュメントについて。
複数人で制作していく際に気を付けること等、実際に働く・現場に出る際意識するべきことがまとめられていました。
実際働いていくと当たり前に意識することであったり、制作する以上向き合わなければいけない机上の知識。
文章だらけで難しかったですし、例え日本語で書かれていても眠くなってしまうような内容でしたが!
どうにか少しは頭に入ったと信じたいです...!
またセーブ・ロード機能についても解説されていて、(ここではJSONフォーマットを扱っていました)勉強になりました。
記事投稿時、最後の課題が上手く出来ていないのでいつか戻ってこようと思っています!
Junior Programmer: Apply object-oriented principles
スクリプトを扱う際は、4つ意識するべきことがあるそうです。
①Abstraction/抽象化
⇒重複する内容を減らすこと
(クラス・関数化等して見やすいスクリプトにする)
②Encapsulation/カプセル化
⇒むやみにpublic化せず、必要なもの以外は他クラスでは扱えないようにすること
(複数人開発環境での事故を減らすため)
③Inheritance/継承
⇒親クラスと子クラスを作り、スクリプトの内容を更に分かりやすくすること
(親:動物クラス 子:猫・犬・鳥クラス のように)
④Polymorphism/ポリモーフィズム
⇒各関数のパラメータを設定しなおしたり、上書きして使用したりすること
(Jump()関数を動物クラスに設定するが、猫・犬・鳥クラス毎にパラメータは異なってくるはず)
上記のような内容を詳細に解説しており、最後はイチからプロジェクト作成しました。
4つの内容を実装したプロジェクトであればどんなものでもいい課題なため、内容を凝りだすと時間がかかる、かかります。
最終的にやってみたい内容の半分も実装できず、今まで学んだことで実装できるであろうこともできなかったため歯がゆい思いをしました。
時間を見つけて、設計書から一プロジェクトを作るのも勉強になりそうです。
(動画で実装できなかったアイデアの供養用です)
・メニュー画面追加
・難易度に応じてボールの数を変化
・落ちてくるボールのサイズが大小変化
・一定カウントでボールのスピードが速くなったり遅くなったり
・全てのボールが落ちるとゲームオーバーの表示
・一定数カウントでゲームクリアの表示
・ボールの色をランダム表示
・音やエフェクトの実装
バッチ
頂いたバッチです。
難しい難易度2つをクリア出来ていなかったり、セーブ・ロード機能のチャレンジ項目を完遂出来ていなかったり。
出来ていないことを考え出すとたくさんたくさんあり、学習成果としては本当に頂いていいのかという気持ちが残っています。
まずは次のVRパスウェイへ進み、その進捗中や終わった後に復習しに戻ってこようと思いました。
2023年8月13日 とも可