类型'';已经包含'';

本文关键字:包含 类型 | 更新日期: 2023-09-27 17:57:31

我在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);            
        }       
    }
}

类型'';已经包含'';

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

只需重命名void OptionsMenu(bool clicked)函数或重命名Transform OptionsMenu变量即可。

在同一个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);