カテゴリー: Tools

【Unity】Standard Assetsでエラーが出た時の対応

はじめに

こんにちは、suzukiです。本日はunityのStandard AssetsをImportした際に、発生する。エラーの対処方法についてまとめました。

Standard Assetsのエラー

Unityの3Dアプリケーションを作るにあたり必要になる機能が色々含まれています。
ThirdPersonControllerにはよくお世話になりました。
最後のUpdateはApr 8, 2020となっており、メンテナンスがされていないません。
そのためGUI Textという旧UIコンポーネントを利用しており、インポートを行った際に下記のエラーが発生します。
Assets/Standard Assets/Utility/SimpleActivatorMenu.cs(11,16): error CS0619: ‘GUIText’ is obsolete: ‘GUIText has been removed. Use UI.Text instead.’

修正方法

コンソールでているエラーをダブルタップすることでエラーの出ているスクリプトが開きます。
SimpleActivatorMenu
/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs

using System;
using UnityEngine;

#pragma warning disable 618
namespace UnityStandardAssets.Utility
{
    public class SimpleActivatorMenu : MonoBehaviour
    {
        // An incredibly simple menu which, when given references
        // to gameobjects in the scene
        public GUIText camSwitchButton;
        public GameObject[] objects;


        private int m_CurrentActiveObject;


        private void OnEnable()
        {
            // active object starts from first in array
            m_CurrentActiveObject = 0;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }


        public void NextCamera()
        {
            int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1;

            for (int i = 0; i < objects.Length; i++)
            {
                objects[i].SetActive(i == nextactiveobject);
            }

            m_CurrentActiveObject = nextactiveobject;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }
    }
}

修正が必要な内容は下記の2点です。
public GUIText camSwitchButton;をpublic Text camSwitchButton;に変更
using UnityEngine.UI;の追加
変更を行なったコードは下記

using System;
using UnityEngine;
using UnityEngine.UI;//Fixed

#pragma warning disable 618
namespace UnityStandardAssets.Utility
{
    public class SimpleActivatorMenu : MonoBehaviour
    {
        // An incredibly simple menu which, when given references
        // to gameobjects in the scene
        public Text camSwitchButton;//Fixed
        public GameObject[] objects;


        private int m_CurrentActiveObject;


        private void OnEnable()
        {
            // active object starts from first in array
            m_CurrentActiveObject = 0;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }


        public void NextCamera()
        {
            int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1;

            for (int i = 0; i < objects.Length; i++)
            {
                objects[i].SetActive(i == nextactiveobject);
            }

            m_CurrentActiveObject = nextactiveobject;
            camSwitchButton.text = objects[m_CurrentActiveObject].name;
        }
    }
}

さいごに

使用されることの多いライブラリなので、メンテナンスされて欲しいですね。
とはいえ最低限の修正を使う側もできることは大事だと思うので、エラー発生した際に落ち着いて対応していきたいです。

おすすめ書籍

suzuki

シェア
執筆者:
suzuki
タグ: Unity

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前