默认计划
2342人加入学习
(4人评价)
【唐老狮】Unity中的UI系统之GUI
价格 ¥ 109.00
承诺服务
该课程属于 Unity3d实战就业路线课程套餐
请加入后再学习
using System.Collections.Generic;
using UnityEngine;

public class 单选控件 : MonoBehaviour
{
    /*单选“控件”本质上仍然是通过协同管理多个Toggle控件来实现的*/

    #region 内部类型
    [System.Serializable]
    public sealed class ToggleInfo
    {
        public string content;
        public Vector2 size;
    }

    public enum Direction
    {
        Horizontal,
        Vertical
    }
    #endregion

    public List<ToggleInfo> toggles;
    public Vector2 startPosition;
    public int spacing;
    public Direction m_direction;

    private int selectedIndex = 0;

    private void OnGUI()
    {
        float posX = startPosition.x;
        float posY = startPosition.y;

        for (int i = 0; i < toggles.Count; i++)
        {
            Rect rect = new Rect(posX, posY, toggles[i].size.x, toggles[i].size.y);

            if (GUI.Toggle(rect, selectedIndex == i, toggles[i].content))
            {
                selectedIndex = i;
            }

            switch (m_direction)
            {
                case Direction.Horizontal:
                    posX += (toggles[i].size.x + spacing);
                    break;
                case Direction.Vertical:
                    posY += (toggles[i].size.y + spacing);
                    break;
            }
        }
    }
}

试着自己实现了一个简易好用的单选控件

[展开全文]

public class MainMenu : MonoBehaviour
{
    public GUIStyle gUIStyle;
    public Rect rectStartGame;
    public Rect rectExitGame;
    public Rect rectOpinions;
    public bool opinionsIsSelect;

    public Rect musicToggle;
    public Rect soundToggle;
    public bool musicToggleIsSelect;
    public bool soundToggleIsSelect;

    AudioSource musicAudioSource;
    public AudioClip musicClip;

    private void OnGUI()
    {
        if(GUI.Button(rectStartGame, "开始游戏", gUIStyle))
        {
            SceneManager.LoadScene("GameScene");
        };
        opinionsIsSelect = GUI.Toggle(rectOpinions, opinionsIsSelect, "设置", gUIStyle);
        if (opinionsIsSelect) 
        {
            musicToggleIsSelect = GUI.Toggle(musicToggle, musicToggleIsSelect, "音乐开关", gUIStyle);
            soundToggleIsSelect = GUI.Toggle(soundToggle, soundToggleIsSelect, "音效开关", gUIStyle);
            if (musicToggleIsSelect)
            {
                if (musicAudioSource == null)
                {
                    musicAudioSource= this.gameObject.AddComponent<AudioSource>();
                    musicAudioSource.clip = musicClip;
                    musicAudioSource.Play();
                    musicAudioSource.loop = true;
                }
                else
                {
                    musicAudioSource.clip = musicClip;
                    musicAudioSource.loop = true;
                    musicAudioSource.Play();
                }
            }
            else if (musicAudioSource != null)
            {
                musicAudioSource.Stop();
            }
        }
        if (GUI.Button(rectExitGame, "结束游戏", gUIStyle))
        {
            Application.Quit();
        }
    }
}

[展开全文]

多选框

普通样式  GUI.Toggle(rect,bool值表示是否选中,文本);

返回值是bool值

用返回值才可以点击选中/取消

 

自定义样式

 

 

单选框

 

[展开全文]

授课教师

游戏开发前端主程

课程特色

视频(31)
下载资料(30)

学员动态

roscorpioot 加入学习
muqianke 加入学习
逐梦鸢行 加入学习
sszs 加入学习