Chinar 堅持將簡單的生活方式,帶給世人! (擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例) |
助力快速理解 UGUI 中 Toggle 組件用法 為新手節省寶貴的時間,避免采坑! |
Chinar 教程效果:
1
Description —— 說明
我們在項目開發的時候,有時需要一個按鈕,來模擬 / 控制開關
此時,如果用 Button 的話,作為開發者還需要自己寫一些判定邏輯
來告訴電腦,這個 Button 按鈕是打開、還是關閉
眾所周知,作為程序員、開發者都是比較懶的
能寫10行代碼實現的功能,絕不寫11行,才是一個標准程序員的信仰!
由此: Toggle 組件誕生了,方便且簡單的解決了上述問題
用法上和 Button 幾乎沒有區別,且動態的了模擬現實中開關按鈕,為開發者提供了一個良好的解決方案
由簡入深,下面我們先來了解下 Toggle 組件
附上開關組教程—— Unity 3D UGUI Toggle Group用法教程
2
Create Toggle —— 創建開關組件
強大的 Unity 在降低開發難度的路上,真是越走越遠,甩的同行看不見屁股(有點誇張了)
Unity 提供了非常簡單的創建 Toggle 方式:
我們只需要右鍵點擊層次列表→ UI → Toggle 即可完成創建
( 也可以自己搭建自己的模板,然后掛載 Toggle 組件是一樣的 )
運行就可以直接看效果
3
Custom Template —— 可自定義調節模板
如圖,可自由調節顏色/自由更換布局或是圖片
4
Toggle —— 組件說明
Toggle 組件與 Button 不同之處:
1. Graphic :用來控制 Toggle 開關圖片的顯示/隱藏
2. IsOn :用來表示 Toggle 開關狀態
3. Group :用來表示 Toggle 所屬開關組/群(后邊會講到)
其他幾乎完全一致
5
OnChangeValue —— 值改變時調用
當我們將需要調用的方法,手動添加到 OnChangeValue 時
發現跟 Button 一樣,每點一下都會調用一次方法
手動添加監聽方法:
using UnityEngine;
/// <summary>
/// Chinar專用測試類
/// </summary>
public class ChinarDemo : MonoBehaviour
{
/// <summary>
/// 綁定監聽事件方法
/// </summary>
public void ListenInFunction()
{
print("調用");
}
}
如果 代碼動態添加監聽,就無需在界面 OnChangeValue 手動添加
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Chinar專用測試類
/// </summary>
public class ChinarDemo : MonoBehaviour
{
void Start()
{
//找到組件,動態添加,Lambda表達式,精簡!
//與手動添加效果一致
GameObject.Find("Toggle").GetComponent<Toggle>().onValueChanged.AddListener(isOn => print("調用"));
}
}
運行/測試結果:
6
OnChangeValue IsOn —— (開關)控制監聽調用
Toggle 組件與 Button 不同之處:
上邊說到: IsOn :用來表示 Toggle 開關狀態
那么當我們將需要調用的方法,進行開關的邏輯判定,手動添加到 OnChangeValue 時
就跟 Button 不一樣了,不是每次都會調用,具體取決於函數邏輯
注意: IsOn 默認狀態,就是運行后 開關按鈕(Toggle)的默認狀態
手動添加監聽方法:
using UnityEngine;
/// <summary>
/// Chinar專用測試類
/// </summary>
public class ChinarDemo : MonoBehaviour
{
/// <summary>
/// 監聽方法:可手動/動態綁定
/// </summary>
/// <param name="isOn"></param>
public void OnClick(bool isOn)
{
if (isOn)
{
print("開");
}
else
{
print("關");
}
}
}
如果 代碼動態添加監聽,就無需在界面 OnChangeValue 手動添加
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// Chinar專用測試類
/// </summary>
public class ChinarDemo : MonoBehaviour
{
void Start()
{
//找到組件,動態添加監聽,Lambda表達式,精簡!
GameObject.Find("Toggle").GetComponent<Toggle>().onValueChanged.AddListener(isOn => print(isOn ? "開" : "關"));
}
}
運行/測試結果:
7
Attention IsOn/Graphic —— 注意 IsOn!
注意: IsOn 默認狀態,就是運行后 開關按鈕(Toggle)的默認狀態
Graphic:開關替換圖片,可根據需求自由設定
由 IsOn 的 True/False 決定圖片是否顯示/隱藏
至此:Toggle組件用法教程結束
支持
May Be —— 搞開發,總有一天要做的事!
Chinar 提供一站式教程,閉眼式創建! 為新手節省寶貴時間,避免采坑! |
先點擊領取 —— 阿里全產品優惠券 (享受最低優惠)
1 —— 雲服務器超全購買流程 (新手必備!)
2 —— 阿里ECS雲服務器自定義配置 - 購買教程(新手必備!)
3—— Windows 服務器配置、運行、建站一條龍 !
4 —— Linux 服務器配置、運行、建站一條龍 !

技術交流群:806091680 ! Chinar 歡迎你的加入
本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究
對於需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com
對於經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處並注明網址>