Unity勉強記録

Unityとプログラミングの勉強の記録。

2/17日

使用参考書

Unity5 3D/2Dゲーム開発 実践入門

猫でもわかるC#プログラミング

 

進度

3D/2D p320~

列挙型

Switch文

 

関数

Component.SendMessage

public void SendMessage(string methodName);

Component.SendMessage - Unity スクリプトリファレンス

→同じゲームオブジェクトについている他のコンポーネントのメソッドを呼び出せる。

→Aスクリプト内で、SendMessage(”Bスクリプトのメソッド”);として呼び出すことができる。AスクリプトとBスクリプトは同じゲームオブジェクトにアタッチされている必要がある。

 

GameObject.SetActive

public void SetActive(bool value);

GameObject.SetActive - Unity スクリプトリファレンス

 

 

Object.FindObjectsOfType

public static Object FindObjectsOfType<コンポーネント名>();

Object.FindObjectsOfType - Unity スクリプトリファレンス

→<コンポーネント名>で指定されたコンポーネントを、シーン中のすべてのゲームオブジェクトから検索し、あるだけ取得し、そのコンポーネントクラス型の配列に入れる。

→例

   ScrollObject   scrollObjects = GameObject.FindObjectsOfType<ScrollObject>();

    →シーン中のすべてのScrollObjectコンポーネントを探し、その参照をScrollObject型の配列に入れる。

 

 

 

 

その他

 

 

C#

列挙型

→定義   enum 列挙名 : 型   {列挙子、、、}

→:型を特に定義しなければ、型Intになる。

→列挙名の頭文字は大文字。

→列挙子の頭文字は大文字。

→アクセスの仕方、   列挙名.列挙子

→列挙子には、0から順に数字が入っていく。

→列挙子=1,とすると、0からではなく、1から順に数字が入る。

→例 

    enum  MyMonth{ Jan=1、Feb,Mar,Apr,May,Jum,Jul,Aug,Sep,Oct,Nov,Dec};

 

      Debug.Log ( (int) MyMonth.Feb);          //2

      Debug.Log ( (int) MyMonth.Dec);           //12

 

 →列挙名の変数を定義して、それに列挙子を入れることもできる。

    

       MyMonth month = MyMonth.Jan;

      これを利用してSwith文などをわかりやすくすることができる?

      3D2Dのp330 GameControllerスクリプト

 

Switch文

→Switch分は、式の値に応じた選択肢が複数あるときに使う。式が返す値は整数型か、String型でなければならない。

→定義 switch(式)

    {   

      case 定数式1:

         処理1;

         break;

      case 定数式2:

         処理2;

         break;

      default:

         処理3:

         break;

               }

→式が定数式1と一致するときは、処理1が実行され、breakキーワードでSwitch文を抜ける。

→式が定数式1、定数式2にも当てはまらないとき、defaultないの処理がされる。defaultはなくてもいい。

 

 

 

 

 

 

 

2/16土 4時間

使用参考書

Unity5 3D/2Dゲーム開発 実践入門

 

進度

3D/2D p280~319   39ページ

 

仕組み

・アニメーションクリップによるスプライトアニメーションは、単純にスプライトの参照先の切り替えを、すばやく行う仕組みになっている。p305

 その証拠に、AzarashiSprite@flapアニメーションクリップを再生すると、AzarashiSpriteのSpriteRendererコンポーネントのSpriteパラメータの内容が切り替わっているのを確認できる。

 

・Awake関数→オブジェクトが生成された瞬間に呼ばれる。

 Start関数→オブジェクトが生成されて、はじめてのフレームの直前に呼ばれる。

 注意点→Unityにおいてゲームスタート時のゲームオブジェクトの生成順はランダムなため、Awake関数内で、そのスクリプトがアタッチされたゲームオブジェクト以外のゲームオブジェクトにアクセスしようとするとNull参照が起こる可能性があるので、Awake関数内では、そのスクリプトがアタッチされているゲームオブジェクト内で完結する処理のみをかくようにすること。

 

 

関数

Transform.Translate

public void Translate(Vector3 translation);

public void Translate(float x, float y, float z );

Transform.Translate - Unity スクリプトリファレンス

→引数の値分、移動させる。引数のワールド座標に移動させるのではない。

 

Mathf.Atan2

public static float Atan2(float y , float x);

Mathf.Atan2 - Unity スクリプトリファレンス

→引数に設定したYとXを、原点からのYベクトル、Xベクトルとみなしたとき、

 TanθがY/Xとなるとき、その間の角度をラジアンで返す。

 

Mathf.Rad2Deg

public static float Rad2Deg;

Mathf.Rad2Deg - Unity スクリプトリファレンス

→定数

ラジアンから度に変換するための定数。

ラジアンにこの定数を掛けると、度になる。

→360/(PI*2)。

→詳しくはp316プリント

 

Quaternion.Euler

public static Quaternion Euler(float x , float y, float z);

Quaternion.Euler - Unity スクリプトリファレンス

→transform.ratation = Quaternion.Euler(0,0,z);

 とすると、ゲームオブジェクトがZ軸でz分回転する。

 

MonoBehaviour.OnCollisionEnter2D

void OnCollisionEnter2D(Collision2d other)

MonoBehaviour.OnCollisionEnter2D(Collision2D) - Unity スクリプトリファレンス

→コライダー同士が衝突したときに呼び出される関数。

→トリガーにコライダーが衝突したときは、OnTriggerEnter関数。

 

 

 

コンポーネント

SpriteRendererコンポーネント

→2Dオブジェクトのスプライトを表示するためのコンポーネント

→SortingLayerパラメータで、描画順を決める。

 パラメータは、Edit→ProjectSetting→Tag&Layerで設定できる。

 そのときに上にあるレイヤーのほうが、奥のレイヤーとなる。

→OrderInLayerパラメータで、SortingLayer内での描画順も決められる。数字が小さいほうが奥。

 

BoxCollider2Dコンポーネント

 

その他

miscellaneous

→ミサレイニアス  : 雑多な、多方面の。

→Animatorコンポーネントをつけるとき、Componentメニュー→miscellaneous→Animator

 

カニムの視点移動

→Alt押しながらドラッグ

 

 

 

 

2/15金 4時間50分

使用参考書

Unity5 3D/2Dゲーム開発 実践入門

猫でもわかるC#プログラミング 

 

進度

3D/2D p262~279 18ページ

次の参考書などを決める、勉強方針の模索

 

 

 

 仕組み

ボタンのクリックイベントの設定p262~

→ボタンUIオブジェクトのOnClickパラメータに、クリックしたときに呼び出す関数とその関数を持つゲームオブジェクトを指定する。呼び出す関数はPublicにする。

ゲームビューの背景変更

→MainCameraのCameraコンポーネントのClearFlagsパラメータをSolidColorに変更。そのあとBackGroundをいじる。

 

シーンの切り替えp274

→シーンの切り替えを行うには、どのシーンがアプリに含まれるか設定しておかなければならない。

→BuildSettings→Scene In Build→シーンファイルをドラッグ(一番上に設定したシーンが起動時のシーンとなる。)

 

 

 

 

関数

 Application.LoadLevel(string name);  static

→引数と同じ名前のSceneに切り替える。

SceneManagement.LoadScene(string sceneName);   

→引数に渡されたSceneに切り替える。

→Application.LoadLevelも同じ機能だったが、廃れて(Obsolete)使われなくなったらしい。

SceneManagement.SceneManager.LoadScene - Unity スクリプトリファレンス

→使うときは、「using UnityEngine.Management;」する。

 

MonoBehaviour.Invoke

[public void Invoke(string methodName,float time);]

MonoBehaviour.Invoke - Unity スクリプトリファレンス

→設定した時間に指定したメソッドを呼び出す。

→MonoBehaviourクラスで定義されているクラスなので、「継承元のクラスの関数は、頭になにもつけずに使える」。Instantiateと同じ使い方。

 

Behaviour.enabled関数  [public bool enabled;]

Behaviour.enabled - Unity スクリプトリファレンス

→Unityで作ったスクリプトのクラスは、Behaviourクラスを継承しているので、この変数は頭になにもつかずに使える。

→enabled = false;とすると、そのスクリプトコンポーネントの更新を停止できる。

→Inspectorでいうコンポーネントの横のON,OFFボックスが、enabled変数と対応している。

スクリプトコンポーネントだけではなく、他のコンポーネントでもenabled変数があって、そのコンポーネントインスタンスを得てから、同じくfalseを入れるとそのコンポーネントをオフにできる。

 

PlayerPrefs.GetInt関数  [public static int GetInt(string key);]

PlayerPrefs.SetInt関数     [public static void SetInt(string key , int value);]

PlayerPrefs.GetInt - Unity スクリプトリファレンス

PlayerPrefs.SetInt - Unity スクリプトリファレンス

→ゲームのスコアをつけるときに使う。

→ GetInt関数でキーにある値を取り出す。 引数の名前のキーが作られていなかったら、作って初期値を返す。

→SetInt関数でキーに、引数の値をセットする。

 

2/11月 2時間40分

使用参考書

Unity5 3D/2Dゲーム開発 実践入門

猫でもわかるC#プログラミング 

 

進度

3D/2D p234~261 27ページ

 

関数

 OnControllerColliderHit(ControllerColliderHIt hit )

→ MonoBehaviour.OnControllerColliderHit(ControllerColliderHit) - Unity スクリプトリファレンス

→CharacterControllerコンポーネントをアタッチしたゲームオブジェクトにコライダーがヒットしたときに呼び出される。

→void Updateのように void OnController ColliderHIt(ControllerColliderHIt hit)を定義して

中に処理をかく。

→p234,235

 

Transform.SetParent(Transform parent,bool worldPositionStay);

インスタンスメソッド

Transform.SetParent - Unity スクリプトリファレンス

→そのゲームオブジェクトの親を、parentに設定する。

→ worldPositionStay= trueのとき、

  そのゲームオブジェクトの座標を、そのままワールド座標として、親子関係を作る。

   例   ゲームオブジェクトが(0,0)のとき、ゲームオブジェクトは原点にいる。

  wordlPositionStay= falseのとき、

 そのゲームオブジェクトの座標を、親に対するローカル座標として親子関係を作る。

   例 ゲームオブジェクトが(0,0)のとき、ゲームオブジェクトは、親と同じ場所になる。(0,0)が親に対するローカル座標として親子関係になる。

 

 

OnDrawGizmos()

MonoBehaviour.OnDrawGizmos() - Unity スクリプトリファレンス

→Updateと同じようにvoid OnDrawGizmos()と定義する。

→p239

→ギズモとは、Sceneビュー上で、開発を効率よくサポートしてくれる表示のこと。

→Posionツールや、Rotationツール、カメラなど表示のこと。

→Unityがデフォルトで用意しているギズモもあるが、独自に設定することもできる。

 

Gizmos.DrawSphere(Vector3 center,float radius);

Gizmos.DrawSphere - Unity スクリプトリファレンス

→OnDrawGizmos関数の中で使える関数。

→そのスクリプトのアタッチされているゲームオブジェクトの場所に円を描画する。

 

Gizmos.DrawIcon(Vector3 center ,string name, bool allowScaling = true);

Gizmos.DrawIcon - Unity スクリプトリファレンス

→OnDrawGizmos関数の中で使える関数。

→string name で指定されたアイコンの画像を表示する。

 そのアイコンの画像が入っているフォルダは、Aseetsフォルダ直下のGizmosフォルダに入れておかねばならない。

 

 

 

GameObject.SetActive(bool value);

GameObject.SetActive - Unity スクリプトリファレンス

インスタンスメソッド。

→ゲームオブジェクトのアクティブのON/OFF。

 

 

仕組み

・UIのコンポーネントスクリプトから扱うには、

 「using UnityEngine.UI」が必要。

 

・複数アスペクト比・解像度に対応するための設定 p248,250

 アスペクト比→UIオブジェクトのRectTransformコンポーネントのアンカーを設定する。

 解像度→CanvasオブジェクトのCanvasScalerコンポーネント

     UI ScaleModeパラメータ→Scale with ScreenSize

                  ScreenMatchModeパラメータ→Expand

                  に設定する。