内容简介:前面学习了怎么样制作游戏运行之后的游戏菜单,这个都是游戏最基本的功能,标配的,学完菜单之后,就心里想着怎么样切换到游戏循环里了吧?也就是把菜单怎么样隐藏掉,根据用户的选择显示不同的游戏循环,比如选择“开始”菜单就进行游戏主循环,选择“退出”就退出游戏,选择“参数”就进入参数配置的设置界面。下面就来学习这个方面的内容,首先来看一下前一节的内容,“退出”菜单的内容,如下: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自动切换夜间主题
- 动态切换数据源原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Building Websites with Joomla!
H Graf / Packt Publishing / 2006-01-20 / USD 44.99
This book is a fast paced tutorial to creating a website using Joomla!. If you've never used Joomla!, or even any web content management system before, then this book will walk you through each step i......一起来看看 《Building Websites with Joomla!》 这本书的介绍吧!