Unityをはじめて3ヶ月たったので習得時につまづいたところや思うところを色々書いていきます(`・ω・´)
0.1 Unityでのゲームの考え方
Unityでゲームを作成する際、以下のように考えるとスムーズに習得できると思います
1.ゲームは複数のSceneで構成される
2.Sceneは複数のGameObjectで構成される
3.GameObjectは複数のComponentで構成される
--
1.ゲームは複数のSceneで構成される
Sceneとは「タイトル画面」「ステージ画面」「ゲームオーバー画面」のことです。
Unityではそれぞれを用途・機能によって独立した画面として扱います。
SceneはUnityでは「*.unity」という拡張子のファイルです。
↓これ
2.Sceneは複数のGameObjectで構成される
シューティングゲームを例に挙げるとGameObjectとは「自機」「敵機」「自機の出す弾」などです。
GameObjectは独立して移動したり衝突を検知したりすることができます。
Unityでは再利用可能/動的生成可能なGameObjectを「Prefab」と呼びます。
PrefabはUnityでは「*.prefab」という拡張子のファイルです。
3.GameObjectはComponentで構成される
「オブジェクト」は以下の様な様々な機能で構成されます。
・座標の定義(Transform)
・画面への表示(Renderer)
・衝突の検出(Collider)
・音声再生(Audio)
etc..
Unityでは上記のような機能の一つ一つをComponentと呼びます。
GameObjectには複数のComponentを持たせることができます。
また、自分で記述したScript(Javascript,C#,Booで記述)をComponentとして扱うことができます。
(※いくつかのルールに従う必要があります。詳しくは後述)
0.2 MonoBehavior
Unityでゲームをつくろうとし、Scriptを作成すると以下の様なファイルが作成されます。
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour
{
void Start () {
}
void Update () {
}
}
これはMonoBehaviourを継承したクラスです。
MonoBehaviourを継承したScriptはComponentとしてGameObjectに追加できます。
MonoBehaviourはUnityのコアとなる多くの機能が定義されているので何度もリファレンス読んで理解するのがおすすめです。
そしてScriptをComponentとして扱うにはいくつかのUnity独自ルールがあります。
- コンストラクタを書いてはいけない
(コンストラクタ動作が保証できないため。Awake()もしくはStart()で初期化処理をかく) - class名とファイル名は同じにする
(同じにしないとエラー) - 調整や紐付けが必要なメンバ変数はserializefieldにし、Inspectorで編集可能にする
--
ざっくりはじめての人向け概要と用語説明おわり。
次回(その1)は実際にUnityでゲームの枠組み作成&2D画像表示をやってみるところ