内容简介:前面学习了怎么样制作游戏运行之后的游戏菜单,这个都是游戏最基本的功能,标配的,学完菜单之后,就心里想着怎么样切换到游戏循环里了吧?也就是把菜单怎么样隐藏掉,根据用户的选择显示不同的游戏循环,比如选择“开始”菜单就进行游戏主循环,选择“退出”就退出游戏,选择“参数”就进入参数配置的设置界面。下面就来学习这个方面的内容,首先来看一下前一节的内容,“退出”菜单的内容,如下:if (GUI.Button(btnExitRect, "退出", skin.button))
前面学习了怎么样制作游戏运行之后的游戏菜单,这个都是游戏最基本的功能,标配的,学完菜单之后,就心里想着怎么样切换到游戏循环里了吧?也就是把菜单怎么样隐藏掉,根据用户的选择显示不同的游戏循环,比如选择“开始”菜单就进行游戏主循环,选择“退出”就退出游戏,选择“参数”就进入参数配置的设置界面。
下面就来学习这个方面的内容,首先来看一下前一节的内容,“退出”菜单的内容,如下:
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的顺序搞好之后,这次大功告成,可以点击运行按钮了,然后在界面点击几下,就可以放置星星了,如下图:
到这里实现从游戏菜单切换到游戏主循环的过程。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Egret场景切换管理类切换和单例使用方法
- Spring项目中使用两种方法动态切换数据源,多数据源切换
- Pear Admin Ant 1.1.0.Release 正式发布,新增布局切换、主题切换、工作空间
- MySQL -- 主从切换
- Android自动切换夜间主题
- 动态切换数据源原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。