热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

前面学习了怎么样制作游戏运行之后的游戏菜单,这个都是游戏最基本的功能,标配的,学完菜单之后,就心里想

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

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

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

{

Application.Quit();

}

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

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

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

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

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

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

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

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

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

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

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

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

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

{

StarGame g = gameObject.GetComponent();

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单位向量来旋转,这样就在鼠标点击的位置创建星星了。运行一下这个游戏,发现没有星星出来,哈哈......

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

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

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

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

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

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

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

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

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有