玲珑杯Unity开发心得——开始菜单GUI制作

///////////////2015/08/04//////////////

//////////////by xbw/////////////////////

/////////////环境  unity 4.6//////////

先看一下效果图

不错吧,,,

来代码

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class MainMenuGUI : MonoBehaviour {

    public AudioClip beep;
    public GUISkin menuSkin;
    public Rect menuArea;
    public Rect playButton;
    public Rect instructionsButton;
    public Rect quitButton;
    public Rect playwaysButton;
    public Rect instructions;
    public Rect HighscoresButton;

    public Texture2D img;

    Rect menuAreaNormalized;
    string menuPage = "main";
	// Use this for initialization
	void Start () {

        menuAreaNormalized =
            new Rect(menuArea.x * Screen.width - (menuArea.width * 0.3f), menuArea.y * Screen.height - (menuArea.height * 0.3f), menuArea.width, menuArea.height);
       // menuAreaNormalized =
        //  new Rect(150, 70, Screen.width, Screen.height);
	}
    void OnGUI()
    {
        GUIStyle backGround = new GUIStyle();

        backGround.normal.background = img;

        GUI.Label(new Rect(0, 0, Screen.width, Screen.height), "", backGround);

        GUI.skin = menuSkin;
        GUI.BeginGroup(menuAreaNormalized);
        if (menuPage == "main")
        {
            if (GUI.Button(new Rect(playButton), "测试模式"))
            {
                //StartCoroutine("ButtonAction", "second");
                //Application.LoadLevel("second");
                audio.PlayOneShot(beep);
                menuPage = "test";
            }
            if(GUI.Button(new Rect(HighscoresButton), "酷跑模式"))
            {
               // audio.PlayOneShot(beep);
                StartCoroutine("ButtonAction", "Loading4");
            }
            if (GUI.Button(new Rect(instructionsButton), "介绍说明"))
            {
                audio.PlayOneShot(beep);
                menuPage = "instructions";
            }
            //if (GUI.Button(new Rect(playwaysButton), "playways"))
           // {
             //   audio.PlayOneShot(beep);
             //   menuPage = "playways";
           // }
            if (GUI.Button(new Rect(quitButton), "退出游戏"))
            {
                StartCoroutine("ButtonAction", "quit");
            }

        }
        else if(menuPage=="instructions")
        {
            GUI.Label(new Rect(instructions), "玲珑轮胎测试模式(卡车,跑车,停车入位测试,方向键控制),玲珑酷跑模式(收集四枚玲珑轮胎,空格/触摸,通过碰撞左右移动) ");
            if(GUI.Button(new Rect(quitButton),"Back"))
            {
                audio.PlayOneShot(beep);
                menuPage = "main";
            }
        }
        else if(menuPage == "instructionsa")
        {
            GUI.Label(new Rect(instructions), "未解锁,请选择酷跑模式");
            if (GUI.Button(new Rect(quitButton), "Back"))
            {
                audio.PlayOneShot(beep);
                menuPage = "main";
            }
        }
        else if(menuPage == "instructionsb")
        {
            GUI.Label(new Rect(instructions), "未解锁,请选择酷跑模式");
            if (GUI.Button(new Rect(quitButton), "Back"))
            {
                audio.PlayOneShot(beep);
                menuPage = "main";
            }
        }
        else if(menuPage == "instructionsc")
        {
            GUI.Label(new Rect(instructions), "未解锁,请选择酷跑模式");
            if (GUI.Button(new Rect(quitButton), "Back"))
            {
                audio.PlayOneShot(beep);
                menuPage = "main";
            }
        }
        else if(menuPage=="test")
        {
            //GUI.Label(new Rect(instructions), "方向键控制移动");

            if (GUI.Button(new Rect(playButton), "卡车"))
            {
                audio.PlayOneShot(beep);
                //menuPage = "main";
                //StartCoroutine("ButtonAction", "Loading");
                menuPage = "instructionsa";
            }
            if (GUI.Button(new Rect(HighscoresButton), "跑车"))
            {
                audio.PlayOneShot(beep);
                //menuPage = "main";
                //StartCoroutine("ButtonAction", "Loading2");
                menuPage = "instructionsb";

            }
            if (GUI.Button(new Rect(instructionsButton), "挑战模式"))
            {
                audio.PlayOneShot(beep);
                //menuPage = "main";
                //StartCoroutine("ButtonAction", "Loading3");
                menuPage = "instructionsc";

            }
            if (GUI.Button(new Rect(quitButton), "Back"))
            {
                audio.PlayOneShot(beep);
                menuPage = "main";
            }
        }
        GUI.EndGroup();
    }
    IEnumerator ButtonAction(string levelName)
    {
        audio.PlayOneShot(beep);
        yield return new WaitForSeconds(0.35f);

        if(levelName!="quit")
        {
            Application.LoadLevel(levelName);
        }
        else
        {
            Application.Quit();
            Debug.Log("Have Quit");
        }
    }
	// Update is called once per frame
	void Update () {

	}
}

整理了一下素材

链接:http://pan.baidu.com/s/1gdxYZnl 密码:3tu2

一些参数菜单的位置大小自行调整即可



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 06:16:19

玲珑杯Unity开发心得——开始菜单GUI制作的相关文章

玲珑杯Unity开发心得——游戏中暂停及积分显示GUI

//////////////////2015/08/04////////////// /////////////////by xbw//////////////////// ////////////////环境  unity 4.6///////// 先看一下效果图, 来两段代码 using UnityEngine; using System.Collections; public class jifencontrol: MonoBehaviour { //This script handles

玲珑杯Unity开发心得——欢迎界面淡出并且转场景

 ///////////2015/08/04/////////// ///////////by xbw///////////////// ///////////环境 unity4.6/////// 直接贴代码了,挂在给主摄像机就好了,其中有个class类直接放在文件夹就好: DisplayTextureFullScreen.. var graphic = TextureGUI(); //(28,23); var GUIColor:Color; function OnGUI() { GUI.c

玲珑杯Unity开发心得——进度条界面(异步加载游戏场景)

/////////////2015/08/04////////////// ////////////by xbw//////////////////// ///////////环境 unity 4.6////////// 先上效果图 还可以吧,先贴一下代码, using UnityEngine; using System.Collections; public class Loading4 : MonoBehaviour { public Texture2D load_write; //进度条底

Unity 开发心得(1)

C#与JS用于unity开发的区别: C#中定义函数必须声明函数类型(void等),但是JS中可以未知函数类型直接定义(function) 注意 C#脚本在Rect前有个new JS脚本没有. 例:在unity中创建GUI控件 在unity中使用脚本都需要绑定游戏对象.例如GUI需要绑定在camera对象中才能在Game界面中显示出来.具体的操作是,选中游戏对象(例如camera),点击右边Inspector中的"Add Component"并选择需要绑定的脚本. C#脚本: void

玲珑杯Uinty开发心得——安卓平台发布

///////////2015/08/04/////////// ///////////by xbw///////////////// ///////////环境 unity4.6/////// 有些日子没写了,想的是把这个玲珑杯的工程昨晚再整理呢,今天终于结束了,先想到哪写哪吧:: 先说说最终的安卓版环境配置,这个关于配置网上有很多介绍了,我在这里说一下细节吧, 配置好了在switch platform时总会出现一些错误,可能是js脚本的问题,等等,总会有一些报错,但是查找资料后发现了一个好东

Unity开发实战探讨-资源的加载释放最佳策略简要心得

Unity开发实战探讨-资源的加载释放最佳策略简要心得 看过我另外一篇关于Unity资源释放随笔<Unity开发实战探讨-资源的加载释放最佳策略>如果觉得略微复杂,那么下面是一些比较简要的心得体会: 概括 常用资源加载的方法有三种:静态,Resources内部资源,AssetBundle外部资源 资源释放的方式 有二种:立刻释放和统一释放. 静态 静态就是资源直接放场景,静态资源无法立刻释放,但场景关闭由引擎统一释放,开发者无法干预,所以最为无脑. 但静态过于死板,除了整个场景生命周期中必须使

Leap Motion 之Unity 开发指南(一. 基本概念与制作手预制件)

LeapMotion 之Unity开发指南(一.基本概念和手的预制件) [序言] 最近用Leap Motion + 国产的3Glass眼镜构建了房地产.数字矿山的一些应用,感觉这是很经济的一个VR架构方案,比用Oculus和HTC的硬件要省钱得多,并且效果也不错. 在行业VR应用中,其实重在培训教育.生产安全的仿真演练上,更多地通过一些UI互动.基础性的手势(比如开关设备.拾起灭火装备等)来进行交互,这些并不一定需要非常昂贵的激光定位设备.复杂的硬件套件才可实现,而手势识别在未来也是一个趋势.

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

AEAI Portlet开发心得

1 背景概述 Portlet是AEAI Portal组件API,是基于Java的Web组件,由Portlet容器管理,并由容器处理请求,生产动态内容.AEAI Portal中已经预置了许多Portlet组件,可以直接配置使用.由于不同业务需求也可以将Portlet进行定制开发.本文是本人在中建投项目中由于业务需要动态显示风险统计信息,即对某一风险进行评估时引用不同的风险点对其的影响(可能性与影响程度的乘积)进行分析,并在页面以个数的形式显示不同区间所包含风险点的影响.故而对Portlet的定制开