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

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

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

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

Unity

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

Q&A

解決済

1回答

2297閲覧

Unityのフェイドイン・フェイドアウト時のエラー?

nisioki

総合スコア11

Unity3D

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

Unity

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

0グッド

1クリップ

投稿2016/12/23 20:54

###前提・実現したいこと
Unityでゲームのシーン遷移のフェイドイン・フェイドアウトを作っていた時に出ました。
フェイドは実装できたのですがこのエラーだけ消えません。
Unityのプロジェクト起動時に発生し、それ以降はエラーメッセージは出ません。
自分のプログラムでない部分をエラーが出ているので、
何についてのエラーなのかが全く分かりません。
※該当のソースコードには、自分の遷移のプログラムをのせました。

###発生している問題・エラーメッセージ

UnityでNullReferenceException: Object reference not set to an instance of an object UnityEditor.DockArea.OnGUI () (at C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:272) と出ます。

###該当のソースコード

using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; using System.Collections; /// <summary> /// シーン遷移時のフェイドイン・フェイドアウトを制御するクラス /// </summary> public class Fade : MonoBehaviour { /// <summary>フェイド中かどうか</summary> private bool _isFadeing; /// <summary>フェイドインかどうか</summary> private bool _fadeIn; /// <summary>シーン名保管用</summary> private string _Scene; /// <summary>フェイドカウント用</summary> private float _time; /// <summary>Image格納用</summary> private Image image; //private Canvas canvas; //private int savedOrder = 10; /// <summary>暗転にかかる時間</summary> public float _interval = 5.0f; // Use this for initialization void Start () { //Imageを格納 image = GetComponent<Image>(); //canvas = GetComponentInParent<Canvas>(); //if (canvas != null) { // savedOrder = canvas.sortingOrder; //} startFadeIn(); //フェイドインスタート } // Update is called once per frame void Update () { if (!_isFadeing) //フェイド中以外除外 return; _time += Time.deltaTime; //フェイド時間を足す。 if (_fadeIn) { //フェイドイン image.color = new Color (0.0f, 0.0f, 0.0f, Mathf.Lerp (1, 0, _time / _interval)); if ((_time / _interval) >= 1.0f) { ResetFade (); image.enabled = false; //フェイド用のテクスチャImageを非表示 } } else { //フェイドアウト image.color = new Color (0.0f, 0.0f, 0.0f, Mathf.Lerp (0, 1, _time / _interval)); if ((_time / _interval) >= 1.0f) { SceneManager.LoadScene (_Scene); //シーンの切り替え ResetFade (); } } } private void startFadeIn(){ //canvas.sortingOrder = savedOrder; _isFadeing = true; _fadeIn = true; _time = 0; } private void startFadeOut(){ //canvas.sortingOrder = savedOrder; image.enabled = true; _isFadeing = true; _fadeIn = false; _time = 0; } private void ResetFade(){ //canvas.sortingOrder = savedOrder; _isFadeing = false; _fadeIn = true; _time = 0; } /// <summary> /// シーン遷移用関数 /// 第1引数:シーン名(string) /// </summary> public void LoadScene(string SetSceneName){ _Scene = SetSceneName; startFadeOut (); } }

###試したこと
他プロジェクトでの再実行

###補足情報(言語/FW/ツール等のバージョンなど)
Unity 5.4.3f1 personal (64bit)

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

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

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

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

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

guest

回答1

0

ベストアンサー

NullReferenceExceptionは、値の参照先を実際に見に行った結果、Nullが参照されていた場合にスローされる例外処理です。

Nullであってはならない値がNullになっています。つまりなんにも参照していない状態になっているか、参照しているオブジェクトが必要な時にインスタンス化されていません。

いずれにせよ例外が発生している箇所を確認し、値をどう参照しているか検証していかなければ、このエラーメッセージ以上のことは何も断定できません。

ログを見ると、DockAreaクラスのOnGUI()メソッドの実行時に例外が発生しています。

エラーを解消するには、DockArea.csの272行目を見に行って、値をどうやって参照しているか、参照しているオブジェクトのインスタンスはつくられているか、インスタンスはいつどうやってつくられているか、などを確認する必要があります。

投稿2016/12/27 03:58

camblian

総合スコア50

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問