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