そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【Unity】newってなに?? newが必要なシチュエーションまとめ

環境

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するってのを覚えておけば開発に問題無いと思ってる私です。
そのうち深く理解できることを信じて今日も開発!!