ブログ設営中

【初心者向け】独学でも圧倒的に分かる「Unityの学習ロードマップ①」

 

この記事を読んだ方がいい人

  • Unity本気で勉強したいけど,無駄な努力したくない人
  • 技術本で動くプログラムは作ったけど結局、理解はできなかった人
  • 暗記は不得意だから、Unityの全体像をつかみたい人

 

この記事を読むとどうなるか

  • Unityの全体の仕組みが理解できる
  • より深くUnityの本質的なことを知ることができる
  • Unityの学習の時間を短縮できる

 

記事の信頼性

  • Unity歴3年である
  • すべてUnityを独学で学習している
  • プログラミング講師やARの案件の経験がある

 

 初めまして! J(じぇい) です!僕の知識が皆さんの助けになれば嬉しいです。

「2年目のヤツが何言ってんだよ」
と聞こえてきそうです。

 ですが「プロが初心者に寄り添う」のは難しいです。だから「僕が寄り添って」丁寧に書くのには十分意味があります。

 

目次:ロードマップ① (学習の全体像)

全体像

学習の目次

  • ロードマップ
    • Unityの学習に初心者が挫折するのはなぜ?
    • プログラミングとゲーム
  • 3つのつながり
    • Unityのゲーム作り
  • ❶モノ:空間のつながり
    1. プロジェクト (Project)
    2. シーン (Scene)
    3. ゲームオブジェクト (GameObject)
    4. コンポーネント (Component)
  • ❷機能:言葉のつながり
    1. Unity (図書館)
    2. ネームスペース (本棚)
    3. クラス (本)
    4. メソッド (目次)
    5. 定義 (文章)
  • ❸動作:時間のつながり
    1. MonoBehaviour
    2. C#の継承
  • Unityの全体像
    • 言葉と空間のつながり
    • 言葉と時間のつながり
    • 3つのつながり
  • まとめ

 

Unityの学習に初心者が挫折するのはなぜ?

Unityの独学は辛い

 それは「何が分からないか」が分からないからです。
そしてそれは、Unityの「全体像」が分からないからです。

※これから解説するのは「プログラミングのやり方」ではありません。Unityの「全体像」です。自作なので教材意見はコメントいただけると嬉しいです。

 

 

Unity:プログラミングとゲーム

ゲームとWebページの差はなんでしょう?

 何が違うのでしょうか?いいですか?

 

ゲームには「空間」と「時間」があります

  • Webページ
    • プログラミング(=言葉) で「ページ」を作る
  • ゲーム
    • プログラミング(=言葉) で「空間と時間」を作る

「空間」と「時間を「言葉」で表現するために、Unityはある

 これが頭に無かった皆さんは「赤は止まれ」の「理由を知らないまま」止まっていた危ない人です。本質的なことをしっかり理解しましょう。

 

 

Unityの学習で最初に理解して欲しい「3つのつながり」

Unityのプログラミングはこの3つで「全てつながっています」

  • 空間のつながり
  • 言葉のつながり
  • 時間のつながり

 Unityはこの3つで説明がつきます。

 僕はこの感覚を掴むのに2年かかりました。しかも複雑につながっているので誰も簡単に説明できません。調べてヒットするのはやり方だけです。

 

 

Unityのゲーム制作

 さて、今からUnityでゲームを制作する皆さんは

  1. 「モノ」を置いて
  2. 「機能」を付けて
  3. 「動作」をさせる

 これの繰り返しです。これがゲームを作る手順です。

 

 

① モノ:空間のつながり

Unityの「機能」は全て「モノ」につながっています

 

階層構造

  • プロジェクト (Project)
    • シーン (Scene)
      • ゲームオブジェクト (GameObject)
        • コンポーネント (Component)
 複雑な「処理」を「空間・モノ」単位でグループ分けする為のUnityの仕組みです。

 

  1. 「プロジェクト(=ゲーム)」は
  2. 「シーン(=空間)」の集まりで構成され,そこに
  3. 「ゲームオブジェクト(=モノ)」を配置し
  4. 「コンポーネント(=機能)」をつけることで動作を作る。

 

プロジェクト (Project)

 「ゲーム自体」のことです

ゲーム1つを構成するデータ全てが入った「開発ファイル」のことを指すことさします。これをUnityが起動します。

 

シーン (Scene)

 現実世界における「空間」のイメージに近いです。

 ただ誤解しやすいのは、ここで言う「シーン」は「場面」のことではなく,概念的な「空間」です。なので「シーン」自体には、何もありません。

ここに「ゲームオブジェクト」を配置していきます。

 

ゲームオブジェクト (GameObject)

 現実世界における「モノ」のイメージに近いです。

 ただ誤解しやすいのは,ここで言う「モノ」は「物体」のことではなく、概念的な「モノ」です。なので「ゲームオブジェクト」自体には「位置情報」があるだけで,何もありません。

ここに「コンポーネント」をつけていきます。

 

コンポーネント (Component)

 現実世界における「機能」のイメージに近いです。

 ただ誤解しやすいのは,現実世界では当たり前のことも,ゲームでは「機能」として,用意します。

 「四角い形を見せる機能」「見る機能」「光を当てる機能」この全部がモノとして空間に配置されて、「箱」が「ゲーム画面」に「見える」わけです。

 

 

② 機能:言葉のつながり

全ての「機能・動作」はあらかじめ「定義」してあります。

 皆さんはそれを,呼び出して使うだけです。

 

階層構造

  • Unity
    • ネームスペース
      • クラス
        • メソッド
          • 定義
 膨大な「処理文を使いやすくする」為の,プログラミング言語の仕組みです。

 

  1. 「Unity(=ゲーム開発ソフト)」の中の
  2. 「UnityEngine(=Unityの基本処理集)」というネームスペースには
  3. 「Rigidbody(=物理動作の機能)」というクラスがあり,その
  4. 「AddForce(=力を加える動作)」というメソッドを使用して力を加えるプログラムを使用する

 

Unity (図書館)

 Unityは「図書館」の様にプログラム文を保管しています。

 

ネームスペース (本棚)

 図書館から探しやすくするため「本棚」の様にネームスペースでカテゴリ分けされています。

 

クラス (本)

 クラスには「本」の様に,プログラム文がひとまとまりになっています。「クラス」は「コンポーネントとほぼ同じ」です。

 

メソッド (目次)

 メソッドは「目次」の様に,実際に読みたい文を呼び出しやすくする為にあります。

 

定義 (文章)

 定義は,上記の道筋でつながって呼び出される「実際に動作するプログラム文」です。

 

 

③ 動作:時間のつながり

全ての「動作」はつながっています

メソッドはプログラムの「動作」のことです。

階層構造

  • MonoBehaviour(クラス) の指定のメソッド
    • メソッド
      • メソッド
        • メソッド
 別々のモノを「同じ時間軸で動かす」為に「C#の継承」を利用した「Unity」の仕組み

 

  • 「メソッド(=動作)」を動かしているのは「メソッド(=動作)」で
  • その「メソッド(=動作)」を動かしているのは別の「メソッド(=動作)」で
  • その「メソッド(=動作)」を動かしているのは別の「メソッド(=動作)」で
  • ・・・

この様に繋がっています。

 

疑問:「MonoBehaviour」ってなに?

Unityが用意した「クラス」です。このクラスの主な「機能」は「動作を開始させること」です。

 

疑問:「継承」ってなに?

C#で使用できる「クラスの書き方」です。この書き方をすると、「Aクラスの機能有りき」でBクラスを作ることができます。

 

疑問:「MonoBehaviour」を「継承」するとは?

Unityでは「動作を開始させる+機能有りき」でクラスを作ることで、MonoBehaviourクラス自体を変更することなく、1つで全ての動作を開始・連鎖させゲームを動かします。つまり時間を管理しているのです。

 

 

Unityの「全体像」

空間と言葉のつながり

クラスとコンポーネントは同じ

その他は全く別物です。

 

言葉と時間のつながり

メソッドはつながっている

プログラムの中のメソッドはMonoBehaviourから全てつながっています。

 

Unityの3つのつながり

学習の全体像

  1. 「モノ」を置いて
  2. 「機能」を付けて
  3. 「動作」をさせる

我ながら1つの画像でUnityの全体像をとらえた秀逸なイラストだと思います。

 

 

まとめ

全体像が掴めない方は繰り返し見てもらえればと思います。

全体像が分かるとUnity学習がかなりはかどる

これが理解できたら、後は書いて具体的なコードを使って慣れるだけです。

 

僕の2年間を皆さんは5分間でショートカットできたかと思うと羨ましい限りです。皆さんのゲーム開発を心から応援しています。

 

僕の「ARダンサーを目指す活動」も応援いただければと思います

最後まで読んでいただき,ありがとうございました。

 

 

SNSでシェアしてね!1秒で出来ます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA