前提・実現したいこと
現在Unityを使用したゲームを作成しているのですが、ビルドせずにいるとこのような警告がコンソールに表記されています。
発生している問題・エラーメッセージ
Assets/Scripts/SceneLoader.cs(17,31): warning CS0618: `UnityEngine.Application.loadedLevel' is obsolete: `Use SceneManager to determine what scenes have been loaded'
Assets/Scripts/SceneLoader.cs(19,28): warning CS0618: `UnityEngine.Application.levelCount' is obsolete: `Use SceneManager.sceneCountInBuildSettings'
Assets/Scripts/SceneLoader.cs(21,15): warning CS0618: `UnityEngine.Application.LoadLevel(int)' is obsolete: `Use SceneManager.LoadScene'
Assets/Scripts/SceneLoader.cs(26,31): warning CS0618: `UnityEngine.Application.loadedLevel' is obsolete: `Use SceneManager to determine what scenes have been loaded'
Assets/Scripts/SceneLoader.cs(27,32): warning CS0618: `UnityEngine.Application.levelCount' is obsolete: `Use SceneManager.sceneCountInBuildSettings'
Assets/Scripts/SceneLoader.cs(30,15): warning CS0618: `UnityEngine.Application.LoadLevel(int)' is obsolete: `Use SceneManager.LoadScene'
該当のソースコード
これがそのエラー元のスクリプトです。(アセットストアから持ってきたunityちゃんにデフォルトで入っていたものです)
using UnityEngine; using System.Collections; public class SceneLoader : MonoBehaviour { void OnGUI() { GUI.Box(new Rect(10 , Screen.height - 100 ,100 ,90), "Change Scene"); if(GUI.Button( new Rect(20 , Screen.height - 70 ,80, 20), "Next")) LoadNextScene(); if(GUI.Button(new Rect(20 , Screen.height - 40 ,80, 20), "Back")) LoadPreScene(); } void LoadPreScene() { int nextLevel = Application.loadedLevel + 1; if( nextLevel <= 1) nextLevel = Application.levelCount; Application.LoadLevel(nextLevel); } void LoadNextScene() { int nextLevel = Application.loadedLevel + 1; if( nextLevel >= Application.levelCount) nextLevel = 1; Application.LoadLevel(nextLevel); } }
試したこと
古いから新しいものを使えと催促されているとのことなので該当する内容があるかもしれないと思い、検索をしてみましたが似たようなものが見つからず困っています。
警告の一部だけ抜き出して検索してもそれらしいサイトが見つかりません。
「`UnityEngine.Application.loadedLevel' is obsolete:」など、warning CS0618:以降の文字列でググると色々出て来ると思います。
もしくは「UnityEngine.Application.loadedLevel」「SceneManager.sceneCountInBuildSettings」など重要っぽい単語で検索してもいいかと。
余談ですが黄色い表示は「エラー」ではなく「警告(ワーニング)」です。
エラー→直さないと動作に影響が出る/警告→直さなくても(今は)正常動作はする
という違いがあります。伝達時に齟齬が出る場合があるので以後使い分けて頂けると幸いです。
また、質問タイトルは具体的に書いた方がありがたいです。今回なら「UnityEngine.Application.〜という警告を消すには?」など。良ければこちらもご覧ください→https://teratail.com/help/question-tips
横やり&細かい点ですいませんが、「エラーではないので処理は止めないが、動作に影響が出るかもしれない」場合もワーニングが出されることがあります。
なので、ワーニングは「直さなくても(今は)正常動作はする」というよりかは「その処理が意図した動作であれば問題ないが、基本的には直すべき」というほうが正しいのではないかと思います。
>fiveHundredさん
「その処理が意図した動作であれば問題ないが、基本的には直すべき」これは確かにその通りですね。正常動作というのは「自身が想定した動作」のつもりでしたが言葉が足りなかったです。
回答3件
あなたの回答
tips
プレビュー