今回は気づいたら単純な Unityのエラーなのですが、以下のエラーの解決法を解説します。
「error CS0117: ‘SceneManager’ does not contain a definition for ‘LoadScene’」


【現象】
以下のプログラム内にて、シーンの呼出しを行う「LoadScene」のところでエラーが出ています。

これを Unityエディタに取り込むと、最初に示しましたが、以下のようなエラーが出てきます。
「error CS0117: ‘SceneManager’ does not contain a definition for ‘LoadScene’」

エラー文を見ると、「LoadScene関数の定義が SceneManagerに登録されていない」と言っています。
最初に「using UnityEngine.SceneManagement;」も記入しているので、SceneManagerにはエラーが出ていませんが、LoadScene関数が呼び出せないとはどう言うことでしょう。。。
【解決法】
これの原因は、自分で作成したクラス名に「SceneManager」と言う名前を付けてしまったことにあります。
要は、SceneManagementのクラス SceneManagerと自分のクラス名がかぶっているので、その自分の SceneManagerに LoadScene関数が定義されていないと怒られてしまっています。

と言うことは、解決法は2つ場合があることになります。
① クラス名をそのまま使用する場合
クラス名をそのまま使用したい場合は、しかたないので、LoadSceneがどのクラスの関数かを明記する必要があります。
以下のように、「UnityEngine.SceneManagement.SceneManager.LoadScene」としましょう。
public class SceneManager : MonoBehaviour { public void Open_GameScene() { UnityEngine.SceneManagement.SceneManager.LoadScene("GameMain"); } }
② クラス名を変えても良い場合
単純に自分のクラス名を変更すれば解決です。例えば、以下のように。

public class SceneController : MonoBehaviour { public void Open_GameScene() { SceneManager.LoadScene("GameMain"); } }
今回のエラーは、気づけば単純ですが、Sceneを変更制御するだけのクラスを「SceneManager」と言う名前を付けたくなってしまいますよね。
お気を付けください。
Sponsored Link