Skip to main content
 首页 » 编程设计

c#之Unity3D Canvas SetActive 不适用于 WebPlayer

2024年05月10日37txw1958

我在 Unity 中遇到了 WebPlayer 的问题。

我的游戏在我的代码开头使用 SetActive 停用了一些 Canvas 。在编辑器或桌面版本中,这些 Canvas 已正确停用。

但是当我构建一个网络播放器版本时,它们不是。全部显示出来。我更新了所有内容,但没有任何变化。

这是我的代码:

void Start () 
{ 
    base.Start(); 
 
    MusicLoopsManager.manager.PlayMusic(MusicType.menuMusic); 
 
    mode = GameObject.Find("Mode") as GameObject; 
    modeState = ModeState.play; 
    pause = GameObject.Find("Pause") as GameObject; 
    resume = GameObject.Find("Resume") as GameObject; 
    retry = GameObject.Find("Retry") as GameObject; 
    exit = GameObject.Find("Exit") as GameObject; 
 
    titleCanvas = GameObject.Find("TitleCanvas") as GameObject; 
    levelSelectionCanvas = GameObject.Find("LevelSelectionCanvas") as GameObject; 
    hudCanvas = GameObject.Find("HUDCanvas") as GameObject; 
    pauseCanvas = GameObject.Find("PauseCanvas") as GameObject; 
    victoryCanvas = GameObject.Find("VictoryCanvas") as GameObject; 
 
    levelSelectionCanvas.gameObject.SetActive(false); 
    hudCanvas.gameObject.SetActive(false); 
    pauseCanvas.gameObject.SetActive(false); 
    victoryCanvas.gameObject.SetActive(false); 
} 

请您参考如下方法:

请注意,除此之外,您不能在 Unity 中使用 base.Start()。

“开始”并不是那样工作的——它是一个神奇的函数,它几乎就像是一种预处理器语法糖果。

你可以谷歌much about the issue .

所以首先,不要那样做或尝试那样做。

如果您正在使用派生类,请不要尝试在“开始”中做任何事情。拥有自己的功能——比如“开始”或“设置”——并完全使用它。只需从 Unity 的魔法 Start 中调用它,