Unity 2019.3 から Unity Standard Assets 2018.4 版 を Import した際に出るエラーの対処方法
Standard Assets のバージョンが 2017.3 から 2018.4に上がってました.
最近消えていた
実はこのStandard Assets,3月末から1週間くらいUnity Assets Store から消えてました. 最近復活したばかりです.
Standard Assets (for Unity 2017.3)が復活しました
— UnityAssetStoreJapan (@AssetStore_JP) 2020年4月3日
弊社製のアセットの内、数年間メンテナンスされていないアセットが急に削除されていましたが、先程Standard Assetsのみ復活しました。
継続的にメンテナンスを行い、維持していく予定です。
ご迷惑をお掛けしました。https://t.co/G78DuzRSdD pic.twitter.com/IsFT8D0hjy
今日Standard AssetsのUtilityで色々遊んでみようと思ったら,2018.4に上がっていた次第.
Standard Assets が for Unity 2017.3 から Unity 2018.4 になってる (開くて2017.3 の表記にあるけどImportすると 2018.4 表記に戻る) pic.twitter.com/Rs05BsH333
— xrdnk (@xrdnk) 2020年4月11日
2019.3 から用いるとエラーが出る
Unity 2019.3(私の環境ではUnity2019.3.9f1ですが)の場合,早速Importするとこんなエラーが出ます. Unity2019.3から古いGUIシステムが使えなくなったことによって出るエラーです.
Assets\Standard Assets\Utility\SimpleActivatorMenu.cs(11,16): error CS0619: 'GUIText' is obsolete: 'GUIText has been removed. Use UI.Text instead.'
エラー対処法
英語を読めば,どうすればいいかわかりますね. GUITextはもう使えないから,代わりにUI.Textを使ってね.と書かれています.
なので,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; } } }
変更後
using System; using UnityEngine; using UnityEngine.UI; // UIを使うので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; // NOTE : 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; } } }
以上でエラーが出なくなると思います.
Standard Assets 2017.3版 でも同様のエラーが出ていた
2017.3版 でも同様のエラーが出ていました.その時も同じ感じに書き換えてました.