游戏制作之路(35)从开始菜单切换到游戏循环

前面学习了怎么样制作游戏运行之后的游戏菜单,这个都是游戏最基本的功能,标配的,学完菜单之后,就心里想着怎么样切换到游戏循环里了吧?也就是把菜单怎么样隐藏掉,根据用户的选择显示不同的游戏循环,比如选择“开始”菜单就进行游戏主循环,选择“退出”就退出游戏,选择“参数”就进入参数配置的设置界面。

 

下面就来学习这个方面的内容,首先来看一下前一节的内容,“退出”菜单的内容,如下:

        if (GUI.Button(btnExitRect, "退出", skin.button))

        {

            Application.Quit();

        }

退出按钮点击之后,GUI.Button()函数就会变为true,就进入if语句的复合语句里执行,也就是执行Application.Quit(),这个函数的意思就是这样:

退出应用程序。在编辑器或网页播放器内退出无效。重要:在大多数情况下,iOS应用终止应由用户决定。

通过这个按钮,就可以退出应用程序了。

 

接着下来添加开始菜单的响应代码,在这个例子里主要添加点击之后在屏幕上创建一个星星,但上面的例子没有实现这个功能,因此先要添加一个脚本文件作为游戏的主循环脚本,如下图:

通过这里A、B、C三步的操作,就可以创建一个新的脚本,把脚本命名为:StarGame,如下图:

看到上图这样,就已经创建游戏主循环的脚本成功了,不过你有没有仔细看一下,主摄像机下面的两个脚本都是打勾的,如下图:

一个组件被勾选中,就说明这个组件可以使用,如果把勾去掉,就是这个组件不能使用, 相当组件的enabled属性为false状态。在这个例子里,我们想先显示游戏进入菜单,因此只能勾选中StartMenu,把StarGame前面的勾去掉,如下图:

这时候,当程序运行起来时,就不会调用StarGame脚本运行了。只有当在开始菜单里点击之后才把这个脚本运行,同时把菜单的组件隐藏掉,这样就达到切换不同游戏界面的目标。所以在StartMenu.cs里添加下面的代码:

if (GUI.Button(btnStartRect, "开始", skin.button))

{

    StarGame g = gameObject.GetComponent<StarGame>();

    g.enabled = true;

    this.enabled = false;

}

当你用户点击开始按钮时,就会进入这个函数执行,第一行语句定义了一个StarGame类的对象g,而这个对象g是从StarGame类创建出来的,这里通过GetComponent函数获取主摄像机里相关的组件。紧接着设置游戏对象g的属性enabled 为true,就是执行这个对象的代码,同时把当前菜单类组件enabled 设置为false,就是禁用当前菜单类代码运行,从而到达切换的目的。

 

接着下来的过程就比较简单了,就是添加游戏主循环的逻辑,在这里主要实现点击一下就出现一颗星星,所以添加如下代码到StarGame.cs里:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StarGame : MonoBehaviour
{
    public GameObject starPrefab;    

    // Use this for initialization
    void Start()
    {
                
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //
            Vector3 pos = Input.mousePosition;
            pos.x /= Screen.width;
            pos.y /= Screen.height;

            //
            GameObject g = (GameObject)Instantiate(starPrefab, pos, Quaternion.identity);            
        }
    }

    void OnGUI()
    {

    }
}

在这段代码里,定义了一个全局的预制件starPrefab对象,它是游戏对象,可以从编辑器上拖动设置,就是把前面创建的星星的预制件拖动过去。接着就在Update()函数加入鼠标操作的响应代码,Input.GetMouseButtonDown(0)是获取鼠标的左键点击,就进入if语句里运行,因此获取鼠标当前坐标位置到pos 里,然后调整之后,调用函数Instantiate来创建星星显示出来。这里使用四元数Quaternion.identity单位向量来旋转,这样就在鼠标点击的位置创建星星了。运行一下这个游戏,发现没有星星出来,哈哈......

 

好吧,前面创建的预制件有点问题,我们再来修改它,把预制件改成这样,如下图:

一定记得按上图修改,有的组件就删除,同有组件就添加进去,比如component -> rendering -> GUI Texture顺序添加显示图片。

按下面的图片拖动预制件到脚本代码的变量里,如下图:

按A、B、C的顺序搞好之后,这次大功告成,可以点击运行按钮了,然后在界面点击几下,就可以放置星星了,如下图:

到这里实现从游戏菜单切换到游戏主循环的过程。

https://blog.csdn.net/caimouse/article/details/51749579

可结合迅闪,网维大师等任意的三层更新软件使用的菜单。免费漂亮的游戏菜单。 2010年,网吧无盘游戏菜单到底用哪个好?这里我们只讨论无盘客户机的游戏菜单,不考虑无盘服务器上的游戏三层更新软件,一般的三层更新软件都带有了客户机的游戏菜单,但这些菜单一般是有广告,或者收费的形式存在的,他们的菜单体积庞大,并没有针对无盘的特殊环境进行特殊的优化,所以不仅体积大,广告多,而且资源占用严重,因为他们把许多有盘上才用得着的功能全放在无盘上去用了。下面就推荐一款无盘上客户机专用的游戏菜单2010版: 你是否正在使用无盘系统并寻找一款专门用在无盘上的游戏菜单你是否正在寻找一款单机游戏菜单?你是否需要自己一个印有个人姓名或者公司名称和链接的OEM游戏菜单?你是否在寻找一个简单可依赖的游戏菜单?你是否正在寻找一个漂亮的游戏菜单?你是否需要一个家庭版的游戏菜单来管理等等繁乱的桌面?你是否正在使用虚拟磁盘系统不需要繁琐的更新游戏功能?如果你符合上面一条,那么请你往下看,这里推荐一款适合你的游戏菜单 特点: ======================= 1、漂亮,美观 2、简单、实用、快速 3、免费 4、多款皮肤,并可自行制作皮肤。 5、无网络验证,可永久免费使用 6、专门为设计。无盘 7、游戏管理方便,全傻瓜式的拖拽操作即可完成游戏添加 8、自动导入游戏方便。可一键导入分类下所有游戏。 9、无局域网游戏更新功能,但可结合更新插件更新 10、支持点击率统计和排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值