Unity GUI 通過某個GUI控制元件禁用另一個GUI控制元件
阿新 • • 發佈:2019-01-23
前言:
Unity的GUI系統相對UGUI系統而言,實在是不方便. 就如GUI控制元件的啟用和禁用,也沒有UGUI中的SetActive方法來得方便.
GUI中有個變數為enabled,可以控制"圖形使用者介面元件是否被啟用",有2個布林值true和false供選用.但是其針對所有的GUI控制元件同時生效.
問題來了:
如果想用gui控制元件A自由地"禁用"和"啟用"gui控制元件B,使用了GUI.enabled = false;之後,那麼這兩個控制元件都會被"禁用",無法再用A來"啟用"B了.
自己在做實驗練習時便遇到這個問題,不過實際上是自己想複雜想偏了.這個問題的解決跟Unity沒多大關係,也是跟演算法基礎知識相關.下面就用我遇到的實驗題目和解決的方法(C#語言)來闡述一下(同時也為了記錄一下,防止以後重蹈覆轍).
題目:
在Unity中, 用GUI圖形使用者介面系統實現:
介面上有一個Toggle控制元件和Button控制元件,使用Toggle控制元件來控制螢幕中Button控制元件的啟用和禁用。
解:
1.建立一個指令碼NewScript.cs,程式碼如下:
2.將建立好的指令碼掛載到攝相機上,執行即可.using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewScript : MonoBehaviour { bool isEnabled; void Start() { isEnabled = true; } void OnGUI() { isEnabled = GUI.Toggle(new Rect(Screen.width / 4, Screen.height / 8, Screen.width / 2, Screen.height / 4), isEnabled, "按鈕開關"); GUI.enabled = isEnabled; if (isEnabled) { GUI.Button(new Rect(Screen.width / 4, Screen.height * 2 / 3, Screen.width / 2, Screen.height / 4), "按鈕啟用"); } else { GUI.Button(new Rect(Screen.width / 4, Screen.height * 2 / 3, Screen.width / 2, Screen.height / 4), "按鈕禁用"); } GUI.enabled = true;//重置,使Toggole等所有控制元件可用;另外由於此步晚於上述由Toggle控制元件控制的GUI.enabled值,所以仍舊可以控制Button的啟用和禁用. } }
(注意:GUI控制元件禁用時,呈"半透明"狀態)