ぺんたんがゲーム開発やアプリ開発、最近の気になる話題、特にスマホやIT関連について語る場所

ぺんごや

Unity Unity初心者 Unity基礎

【Unity】スクリプトをクラスみたいにnewする方法

投稿日:

コメントの吹き出し素材 その2以前の記事でnewすると警告が出て怒られるのでオブジェクトにアタッチしてGetComponentして使えよと書きましたが、もっとシンプルにやる方法があります。ありました。

<表示される警告>
You are trying to create a MonoBehaviour using the ‘new’ keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()

スプリプとをnewする方法

至ってシンプル。newしたいスクリプトの「MonoBehaviour」継承を消してあげればいいです。

MonoBehaviourを継承しているがためにnewできないなら、じゃあ継承してやらなければいいじゃんという理屈。

具体的に、例えば「ItemBase.cs」というスクリプトをnewしてインスタンス化したいならば以下のようにすればいけます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemBase {
    protected int i_id;
    protected string i_name;
}

このように、Unityによって自動で付加されていた「: MonoBehaviour」を消してあげれば次のようにnewしても警告が出なくなります。

ItemData i_data = new ItemData();

ただ1つ注意しないといけないのが、MonoBehaviourを継承していないので当然ゲームオブジェクトにアタッチできなくなります。
クラスのような使い方をしているスクリプトをゲームオブジェクトにアタッチすることはないと思いますが一応ご注意を。

-Unity, Unity初心者, Unity基礎

Copyright© ぺんごや , 2019 All Rights Reserved Powered by STINGER.