2015-09-17 3 views
0

В сценарии называется MenuScript, я следующие методы для загрузки новой сцены с звук щелчка, когда кнопка запуска нажата:использованием Re-методы с GetComponent

/// Play a sound and change the scene. 
public void LoadLevel(string sceneName) 
{ 
    audioSource.Play(); 
    StartCoroutine(LoadSceneAsync(sceneName)); 
} 


/// Change the scene (load the level). 
private IEnumerator LoadSceneAsync(string levelName) 
{ 
    yield return new WaitForSeconds(0.2f); 
    Application.LoadLevel(levelName); 
} 


/// Start the simulation once the Start Button is clicked. 
public void startSimulation() 
{     
    LoadLevel("mainScene");   
} 

Я сделал это вместо того, чтобы просто использовать Application.LoadLevel("mainScene");

конечно, я храню объект игры, который имеет этот сценарий, прикрепленный к от получения разрушен в Awake:

void Awake() 
{   
    DontDestroyOnLoad(GameObject.Find("Menu Manager")); 
} 

Теперь ... в этом Загрузив новую сцену, я хотел бы сделать то же самое для загрузки еще одной сцены, используя одни и те же функции выше, которые существуют в MenuScript сценарии, так что я написал следующее:

void Start() 
{ 
    GameObject menuManager = GameObject.Find("Menu Manager"); 
    MenuScript menuScript = menuManager.GetComponent<MenuScript>(); 
} 

void Update() 
{ 
    if (Input.GetKeyDown(KeyCode.Z)) 
     menuScript.LoadLevel("finalScene"); 
} 

Однако, часть menuScript.LoadLevel подсвечена красным цветом. Что я делаю не так? Это хороший способ использовать эти методы? Может кто-то, пожалуйста, помогите мне понять, что мне не хватает, или, возможно, есть лучший способ сделать это? Спасибо

ответ

1

Вы пытаетесь получить доступ к переменной menuScript, которая является локальной переменной функции Start(), из другой функции. Чтобы исправить это, объявите переменную menuScript переменной. Вот пример кода:

+0

Спасибо Никита. Теперь это ясно. – Joshua

Смежные вопросы