Unity 2019.3でUnityのStandard Assetsをインポートした際に発生するエラーとして、’GUIText’ is obsolete: ‘GUIText has been removed. Use UI.Text instead.’が表示されると思います。多くの方がStandard Assets 1.1.5をunityにインポートしたときに発生したのではないでしょうか。このエラーは簡単に修正することができるので安心してください。
それでは、一緒にこのエラーを解決していきましょう!
なぜエラーが発生しているのか?
unityの最初の頃のバージョンにはOnGUIという関数が使われていました。OnGUIとは、画面上にテキストやボタンを表示できる関数です。しかし、OnGUIはスクリプトでテキストやボタンの位置や種類を指定しないといけないことや、ゲームを実行しないとUIの状況を確認できないなど効率性が悪いものとなっていました。そこで、最近uGUIというシステムが導入され、テキストやボタンがsceane上で編集でき、また確認することもできるようになりました。なので、わざわざ古くて効率性の悪いOnGUIは使う必要がなりGUIシステムを移行しようということになりました。今回のエラーは、GUIシステムの移行によって発生しているエラーだと考えられます。
エラーの解決方法
Standard Assetsをダウンロードしたときは、projectウィンドウからAssets/StanderdAssets/Utility/SimpleActivatorMenuをクリックしてください。
エラー発生時のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using UnityEngine; //ここに「using.UnityEngine.UI;」を追加 #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;//「GUIText」→「Text」に変換する public GameObject[] objects; private int m_CurrentActiveObject; |
3行目に「using.UnityEngine.UI;」を追加して、12行目の「GUIText」を「Text」に変換する
エラー改善後のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using UnityEngine; using UnityEngine.UI; #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; public GameObject[] objects; private int m_CurrentActiveObject; |