【Unity】Standard Assetsでエラーが出た時の対処方【error CS0619】

前にUnityで簡単に車を走らせる記事を書きました。

ところが、2019年12月現在の最新バージョンである2019.3.0f1で動かそうとすると、以下のエラーが出るようになってしまいました。

Assets\Standard Assets\Utility\ForcedReset.cs(6,27): error CS0619: 'GUITexture’ is obsolete: 'GUITexture has been removed. Use UI.Image instead.’

Assets\Standard Assets\Utility\SimpleActivatorMenu.cs(10,16): error CS0619: 'GUIText’ is obsolete: 'GUIText has been removed. Use UI.Text instead.’

スクリプトの編集が必要になりますが、簡単に直るので対処方法をシェア。

ForcedReset.csを修正する

まず最初のエラーを直します。

Assets\Standard Assets\Utility\ForcedReset.cs(6,27): error CS0619: 'GUITexture’ is obsolete: 'GUITexture has been removed. Use UI.Image instead.’

Google翻訳によると、

「GUITexture」は廃止されました。「GUITextureは削除されました。代わりにUI.Imageを使用してください。」

となります。

というわけで、ForcedReset.csファイルを開いて、

※ファイルを開く場合は、エラーメッセージをダブルクリックすると対象の個所を開いてくれます。

「GUITexture」の部分を 「Image」に変更します。

[RequireComponent(typeof (Image))]

こんな感じ。

「GUITexture」を 「Image」に変更すると、Imageが見つからないと言われるので、 次の一行を追加します。

using UnityEngine.UI;

修正した ForcedReset.csファイルは、こんな感じになります。

using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.CrossPlatformInput;

using UnityEngine.UI; // 追加

[RequireComponent(typeof (Image))] // 変更 GUITexture -> Image
public class ForcedReset : MonoBehaviour
{
    private void Update()
    {
        // if we have forced a reset ...
        if (CrossPlatformInputManager.GetButtonDown("ResetObject"))
        {
            //... reload the scene
            SceneManager.LoadScene(SceneManager.GetSceneAt(0).name);
        }
    }
}

修正終わったら、忘れずにセーブ。

SimpleActivatorMenu.csを修正する

次のエラーを修正します。

Assets\Standard Assets\Utility\SimpleActivatorMenu.cs(10,16): error CS0619: 'GUIText’ is obsolete: 'GUIText has been removed. Use UI.Text instead.’

一応Google翻訳すると、

「GUIText」は廃止されました。「GUITextは削除されました。代わりにUI.Textを使用してください。」

内容は同じですね。

SimpleActivatorMenu.csファイルを開いて、「GUIText」を「Text」に変更します。

public Text camSwitchButton;

こんな感じ。

前のファイルと同じように、 UnityEngine.UI を使えるようにして、

using UnityEngine.UI;

修正後の SimpleActivatorMenu.csファイル はこんな感じ。

using System;
using UnityEngine;

using UnityEngine.UI; // 追加

namespace UnityStandardAssets.Utility
{
    public class SimpleActivatorMenu : MonoBehaviour
    {
        // An incredibly simple menu which, when given references
        // to gameobjects in the scene
        public Text camSwitchButton; // 変更 GUIText -> Text
        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;
        }
    }
}

修正終わったら、忘れずに保存。

Unityに戻ると、なんか作業が始まって、しばらく待つとエラーが消えてると思います。

以上、最新版のUnityで「Standard Assetsでエラーが出た時の対処方」でした。

では、良いUnityライフを。