環境
Unity 2019.3.7f1
はじめに
ネットでコードを検索していると new がついているコードありますよね??
今回は、
・newとは何か?
・newが必要なシチュエーション
を私がわかっている範囲でまとめておきます。
newとは何か?
まずnewですが、
インスタンスを作る演算子
です。
new 型名();
でその型名のインスタンスを作成することができます。
設計図の状態から実体を持たせるらしいです。(雰囲気しかわかってない)
newが必要なシチュエーション
今私が把握しているのは次の4つです。
・空のゲームオブジェクトを作るとき
・自分で作ったクラスを使うとき
・配列を使うとき
・構造体(Vector3やVector2など)を使うとき
※もとから作られているC#のクラスはnewでインスタンス化できないらしい
コード例
・空のゲームオブジェクトを作るとき
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasstest:MonoBehaviour{voidStart(){newGameObject();//空のオブジェクト作成 括弧内に文字列を入れることでオブジェクトの名前を指定できる}}
・自分で作ったクラスを使うとき
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;//ABCという名前のクラス作成publicclassABC{//関数作成publicvoidMoji(){Debug.Log("newって難しい");}}publicclasstest:MonoBehaviour{ABCa;//作成したクラスABC型の変数aを宣言voidStart(){a=newABC();//変数aにABCクラスのインスタンスを作成a.Moji();//ABCクラスのMoji()関数を実行}}
・配列を使うとき
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasstest:MonoBehaviour{privateint[]a;//int型の配列を変数aで宣言voidStart(){a=newint[3];//配列を作りint型の配列変数aに入れる//配列 a[0]=0, a[1]=1, a[2]=2 にするfor(inti=0;i<3;i++){a[i]=i;Debug.Log("a["+i+"]="+a[i]);}}}
・構造体(Vector3やVector2など)を使うとき
Vector3
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasstest:MonoBehaviour{voidStart(){//このスクリプトがアタッチされたオブジェクトの位置を(1,2,3)へ変更transform.position=newVector3(1,2,3);}}
Vector2
usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclasstest:MonoBehaviour{voidStart(){//このスクリプトがアタッチされたオブジェクトの位置を(10,20,0)へ変更transform.position=newVector2(10,20);}}
おわりに
空のゲームオブジェクトを作ることは実際やらないと思うので、
・自分で作ったクラスを使うとき
・配列を使うとき
・構造体(Vector3やVector2など)を使うとき
の3パターンの場合、newするってのを覚えておけば開発に問題無いと思ってる私です。
そのうち深く理解できることを信じて今日も開発!!