質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3539閲覧

Unity : MonoBehaviourに関するエラー

Lulucaf

総合スコア8

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/05/19 07:19

エラーの解消方法が分からないためご助力をお願いいたします。

こちらを参照して作成しているのですが原文通りにクラス名の後にMonoBehaviourを書かずにスクリプトを作成すると**'data' is missing the class attribute 'ExtensionOfNativeClass'!というエラーが発生してしまいます。
一応実行はできるのですが実行すると
The class named 'Data' is not derived from MonoBehaviour or ScriptableObject!**という警告が出てしまいます。

なのでMonoBehaviourを付け加えてみたところ一応スクリプトの作成と実行はできるのですが今度は
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
という警告が出てしまい調べてみたのですが解消方法が分からなかったので質問をしました。

newを消してしまうとエラーでスクリプト自体作成できなくなってしまいました。

※MonoBehaviourを書かない場合と書いた場合どちらも想定する動き(データの格納と読み込み)自体はできております。

該当のコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Data : MonoBehaviour 6{ 7 public readonly static Data Instance = new Data(); 8 public string referer = string.Empty; 9 // Start is called before the first frame update 10 void Start() 11 { 12 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 19 } 20} 21

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

該当コードをコピペしてみたんですが特にエラーが確認できず
このスクリプト単体がエラー出している感じでしょうか?

ちなみにMonoBehaviourを継承しない場合、そのスクリプトをGameObjectにアタッチはできません。(アタッチしている場合エラーがでますし、アタッチしようとしてもエラーがでます)

たとえば下記構成で、TestをGameObjectにアタッチして実行すると「Hoge」がコンソールに表示されるかとおもいますが、いかがでしょうか。

Data.cs

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Data { 6 public readonly static Data Instance = new Data(); 7 public string referer = "Hoge"; 8}

Test.cs (GameObjectにアタッチ)

cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Test : MonoBehaviour { 6 // Start is called before the first frame update 7 void Start() { 8 Debug.Log(Data.Instance.referer); 9 } 10} 11

投稿2021/05/19 09:38

編集2021/05/19 09:41
hogefugapiyo

総合スコア3302

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lulucaf

2021/05/19 10:35

ご回答ありがとうございます。 アタッチしないと使えないものと勘違いしており、当該スクリプトを空のオブジェクトにアタッチしていることがエラーの原因でした。 コンポーネントから削除しMonoBehaviourも削除したところ正常に動作するようになりました。 質問文に書いていないところまで推察、読み取って的確な回答をしてくださり本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問