【问题标题】:Canvas to Canvas (MainMenu to Options) Same Scene Unity画布到画布(MainMenu 到选项)相同的场景 Unity
【发布时间】:2016-07-29 14:03:42
【问题描述】:

我希望我的MainMenu 中的OptionButton 隐藏MainMenuCanvas,这样我就可以使用OptionCanvas,这可能吗?

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Director : MonoBehaviour {
    private GameObject mainMenu, options;

    void Awake (){
       mainMenu = GameObject.Find ("MainMenuCanvas");
        options = GameObject.Find ("OptionCanvas");
        }
    void Start () {
        mainMenu.SetActive (true);
        options.SetActive (false);
    }
    void Update () {
      //should i put If.else here?
     /* like 
         if (button.clicked){
             mainMenu.SetActive (false);
             options.SetActive (true);*/
     }
   }
}

【问题讨论】:

    标签: c# canvas unity3d


    【解决方案1】:

    应该是可以的。虽然我建议使用 Canvas.enabled(https://docs.unity3d.com/ScriptReference/Behaviour-enabled.html) 变量以保持一致性。

    只需在脚本中创建一个函数来处理点击。 f.e.

    void onOptionsClick(){
    if(mainMenuCanvas.enabled){
        mainMenuCanvas = false;
        optionCanvas = true;
     }  
     else{
        mainMenuCanvas = true;
        optionCanvas = false;
     }
    }
    

    这个函数应该做你想做的事。然后,您只需选择按钮并在 Inspector 中选择此函数作为该按钮的 onClick()。

    让我知道这是否有效,因为我无法在 atm 测试它!

    【讨论】:

      【解决方案2】:

      您只需将您的OptionButton 事件注册到一个函数。单击Button 时,将调用注册的函数。 Button.onClick.AddListener 用于注册Button 事件。 Button.onClick.RemoveAllListeners 用于注销Button 事件。

      private GameObject mainMenu, options;
      public Button OptionButton;
      
      void Awake()
      {
          mainMenu = GameObject.Find("MainMenuCanvas");
          options = GameObject.Find("OptionCanvas");
      }
      
      void Start()
      {
          mainMenu.SetActive(true);
          options.SetActive(false);
      }
      
      void OnEnable()
      {
          //Register Button Event
          OptionButton.onClick.AddListener(() => OptionButtonCallBack());
      
      }
      
      //Will be called when OptionButton is clicked
      private void OptionButtonCallBack()
      {
          mainMenu.SetActive(false);
          options.SetActive(true);
      }
      
      void OnDisable()
      {
          //Un-Register Button Event
          OptionButton.onClick.RemoveAllListeners();
      }
      

      您可以找到设置 UI here 的完整步骤。

      【讨论】:

        猜你喜欢
        • 2019-02-04
        • 2019-02-25
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多