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

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

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

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

2回答

3075閲覧

The variable ~ has not been assigned.のエラー

to_shi_0607

総合スコア26

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2021/10/20 00:39

エラー内容は以下です。

UnassignedReferenceException: The variable method43 of lefthand4 has not been assigned.
You probably need to assign the method43 variable of the lefthand4 script in the inspector.
UnityEngine.GameObject.GetComponent[T] () (at <cc0084eac53d486888f184f29b10b051>:0)
lefthand4.Update () (at Assets/Scenes/Script/Scene4/lefthand4.cs:24)

インスペクター画面にmethod43をアタッチしてないというエラーだと思いますが、インスペクター画面にはアタッチしてあることは確認済みです。ゲームを実行するとこのエラーが貯まってしまいます。
スクリプトに原因があるのでしょうか?

コード using System.Collections; using System.Collections.Generic; using UnityEngine; public class lefthand4 : MonoBehaviour { public GameObject method43; public Camera standcamera; // Start is called before the first frame update void Start() { standcamera.gameObject.SetActive(false); } // Update is called once per frame void Update() { //method43が表示されている時にstandcameraが表示される。 if (method43.GetComponent<Renderer>().enabled == true) { standcamera.gameObject.SetActive(true); } } void OnMouseDrag() { //method43が表示されていてる時に動かせる。 if (method43.GetComponent<Renderer>().enabled == true) { Vector3 objectPointInScreen = Camera.main.WorldToScreenPoint(this.transform.position); Vector3 mousePointInScreen = new Vector3(Input.mousePosition.x, Input.mousePosition.y, objectPointInScreen.z); Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint(mousePointInScreen); mousePointInWorld.z = this.transform.position.z; this.transform.position = mousePointInWorld; } } }

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

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

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

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

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

guest

回答2

0

ベストアンサー

インスペクター画面にmethod43をアタッチしてないというエラーだと思いますが、インスペクター画面にはアタッチしてあることは確認済みです。

とのことですが、lefthand4スクリプトがアタッチされているGameObjectのmethod43にヒエラルキー上にある常時存在する何かしらのGameObjectが割り当てられていますでしょうか。

投稿2021/10/20 00:59

YOshim

総合スコア1085

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

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

to_shi_0607

2021/10/20 01:31

ご回答ありがとうございます。他のスクリプトでmethod43が非表示にするようになっておりましたので、そこを修正したらエラーが出なくなりました。ありがとうございます。
guest

0

method43という変数は、

public GameObject method43;

と宣言されていますが、値が代入されていません。そのため、method43の値が無い状況になっています。

Start関数の中で、

method43 = 何か適切なGameObject;

というような感じで適切に初期値を入れれば、問題は解決すると思います。

投稿2021/10/20 00:51

coco_bauer

総合スコア6915

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

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

to_shi_0607

2021/10/20 01:01

method43はUnityのインスペクター画面にアタッチすることで参照はされると思うのですが、スクリプト上でも記述が必要でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問