Unityの初心者向け講座をやってみた

2021年2月12日

とても親切なUnityの初心者向け講座のページがあったのでやってみた。内容はブロック崩し。説明図もわかりやすく、操作だけでなく、ちゃんと用語や概念の説明をしてくれている。用語や概念がわからないと身につかないんだよね。手書きのイラストがまたいい。

読み始める前に自分の環境の整備をした

更新日が最近(2020/12/24)なので、最近のバージョンで試そうと思う。

インストールしているうち一番新しいバージョンは2020.1.16f1だが、Unit Hubを使わずに古いバージョンをインストールしたときに壊してしまった気がする。インストール中「今のバージョンをアンインストール」のメッセージがでていた。どのバージョンアンインストールしたんだよ。今ある正式版の一番新しい2020.2.3f1をインストール…失敗した。やっぱり、Unity Hubを通さずインストールするとバージョン管理がおかしくなっている。Unity Hubを通さずインストールするとインストールしているうち一番新しいバージョンに上書きしてしまうのではないかと思う。2020.1.16f1をアンインストールし、も一度2020.2.3f1をインストールしたらうまくいった。今後はUnity Hubを通さないインストールはやめておこうと思う。ようやく最近Unity Hubの便利さがわかってきた気がする。慣れると便利だ。

読み始める

ハイクオリティの映像がリアルタイムに制御できる説明のために紹介されている動画がまたすごい。Unityでこんなハイクオリティなものが作れるのか。

Unityのエディタは拡張できるというところにちょっと興味が出てきた。まぁ、今の知識では全然どうやるかわからないけど。

Unity5以前は機能制限が厳しかったらしいが、2018.1以降から機能制限が特にないらしい。

エディタを黒にしたいためだけに月額4200円のPlusエディションにしてるってすごいな。ThemeのDarkとはまた違うものなのかな。

Sceneタブ内の操作

いろんなツール触っていると操作方法を忘れてしまうので、Windowsの場合だけ自分のためにメモしておく。

目的操作方法(Windows)
特定オブジェクトを中心に回転Alt + 左クリックドラッグ
拡大 / 縮小マウスホイールを回す
視点移動マウスホイールを押し込みながらドラッグ
視点の回転右クリックドラッグ
特定オブジェクトへフォーカスヒエラルキーでオブジェクトを選択してからマウスカーソルをSceneタブ上にもっていき"F"キー

イベント関数の実行順序

unity DOCUMENTATIONのマニュアルトップページ。言語を切り替えられる。

Awake、Start、Update等イベントの実行される順番が書かれているunityのマニュアルのページ

読み終えて

ひととおり行って、Unityの基本的なところは理解できたと思う。Unityの基本的な概念がとても丁寧に説明されている。参考ページのコメントを読むとC#のシンタックスエラー等のコメントが多い。C#等プログラミングが初めての方にはちょっと難しかったのではないかと思う。コピー&ペーストすればシンタックスエラーにはならないのだが、自分で入力した方が学習にはなるのでどちらがいいともいえない。

  • Title、Main、Result等のSceneを作ることでシーン単位の遷移ができる。
  • HierarchyにあるGameObjectはScene上に存在する。異なるSceneを選択するとHierarchyもそのSceneのGameObjectのものに変わる。
  • ProjectはSceneとは独立なファイルの集まりで複数のScenceから使用できる。Windowsならエクスポーラ上でファイルを確認できる。
  • GameObjectにC# Scriptコンポーネントをアタッチできる。
  • PrefabもGameObjectだがScene上には存在せず、動的に複製することでScene上にいくつも追加できる。Prefab(プレハブ)は組立式建物のことだと思うので、簡単に組み立てて作ることができるよということだろうか。Inspectorで変更すると元のPrefabとは異なる設定が可能だ。でもPrefabとの関連付けはされているので変更した設定を元のPrefabに反映したいならApplyすればよい。
  • InspectorはGameObjectのプロパティを扱えるようにしたもので、位置や物理やスクリプト等のコンポーネントを追加できる。
  • 通常のC#ScriptはMonoBehaviourの派生クラスでイベントが発生すると決められたメソッドが呼び出される。publicデータメンバを追加するとInspectorで設定が可能になる。Inspectorではドラッグ&ドロップでGameObjectをアタッチできるのでとても便利だ。
  • C#Scriptでstaticなclassを宣言するとどのScene上でも存在するインスタンスになるので、Sceneをまたいだ値の保持が可能となる。
  • SceneパネルはSceneを作成するためのViewでカメラやLightの位置も操作できる。Gameパネルはカメラから見た表示で操作はできない。
  • Playボタンの近くはPlayくらいしか使ってなかったが、Pause、Stepがある。これStepボタンだったんだ。Stepとは思わなかった。Pauseで一時停止、再開、Stepでコマ送りができる。

SceneとGameObjectとC#Scriptの関係

ブロック崩しに登場するSceneとGameObjectとC#Scriptの関係を図にしてみた。

デバッグ

参考にしたページには説明されていないが、次のようにデバッグできるようだ。

  • Debug.Log()を使ことでConsole上に表示できる。.NET FrameworkのC#で使えるConsole.WiteLine()とかは使えない。
  • Deubg.Break() で一時停止できる。Pauseで再開できる。