类型' '已包含'的定义'

时间:2016-07-17 10:12:36

标签: c# unity3d monodevelop

我在Unity上尝试制作主菜单。当然,我非常沉闷,我在编码方面非常不熟练。但是,我喜欢它,但这只是屁股的痛苦。

我的问题正是

  

"类型' LevelManager'已包含' OptionsMenu'

的定义

我只想尝试在选项按钮中编码,但它只是一个屁股。这是我的代码;

using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;

public class LevelManager : MonoBehaviour {

    public Transform MainMenu, OptionsMenu;

    public void LoadScene(string name){
        SceneManager.LoadScene(name);
    }
    public void QuitGame(){
        Application.Quit();
    }
    public void OptionsMenu(bool clicked){
        if (clicked == true){
            OptionsMenu.gameObject.SetActive(clicked);
            MainMenu.gameObject.SetActive(false);
        } else {
            OptionsMenu.gameObject.SetActive(clicked);
            MainMenu.gameObject.SetActive(true);            
        }       
    }
}

2 个答案:

答案 0 :(得分:1)

您不能在同一个C#类中使用具有相同名称的字段和方法。

public Transform MainMenu, OptionsMenu;

public void OptionsMenu(bool clicked)

您需要更改其中一个。

原因,如果您想将方法OptionsMenu传递给另一个方法,该怎么办:

private static void DoSomething(Action<bool> action)
{

}

private static void DoSomething(Transform  t)
{

}

然后:

var obj = new LevelManager();

// confusing call. Is this the method or the field ?
DoSomething(obj.OptionsMenu);

答案 1 :(得分:1)

您有一个名为OptionsMenu public Transform OptionsMenu;的转换,然后是一个名为OptionsMenu的函数。

只需重命名您的void OptionsMenu(bool clicked)功能或重命名Transform OptionsMenu变量。