因为我有一个超屌的梦想,所以就绝不会做一个孬种的追梦人!

  • 完成音效的添加
  • 单例模式
  • 游戏的状态切换

1. 单例模式

首先呢,说一下单例模式。何为单例?单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。显然单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

创建一个单例模式的步骤:私有化构造函数;私有化实例;公共方法调用。

public static GameMaanager _intance;

  

void Awake()
{
_intance = this; }

 2. 完成音效的添加

音效组件只有添加到正确的对象上才能发挥作用。首先导入音乐素材,在相对应的位置上添加AudioSource组件。

-die 用于判定小鸟死亡,需要加载到小鸟身上;-hit 用于小鸟与管道撞击产生的声音;-point 是小鸟通过管道获得分数的声音;-wing 是小鸟挥动翅膀的声音;- swooshing 是小鸟出现的声音。根据音效的不同,把声音加载到不同的对象Audio Source组件上。(Audio Source组件的相关内容可以在unity圣典中查阅)然后在相应的代码区间添加控制声音播放的代码。

 GetComponent<AudioSource>().Play();

 3. 游戏的状态切换

游戏的状态一共三种:游戏菜单状态、 游戏中的状态、游戏结束状态。我们可以定义 三种状态的静态变量,然后通过条件限制实现不同状态的切换。

public static int GAMESTATE_MENU = 0;//游戏菜单状态
public static int GAMESTATE_PLAYING = 1;//游戏中状态 ...
public static int GAMESTATE_END = 2;//游戏结束状态

  

if (GameMaanager._intance.GameState ==GameMaanager.GAMESTATE_PLAYING)
{ if (Input.GetKeyDown(KeyCode.Space))
{
GetComponent<AudioSource>().Play();
Vector3 vel = this.GetComponent<Rigidbody>().velocity;
this.GetComponent<Rigidbody>().velocity = new Vector3(vel.x, 5, vel.z);
} if (Input.GetMouseButton(0))
{
GetComponent<AudioSource>().Play();
Vector3 vel = this.GetComponent<Rigidbody>().velocity;
this.GetComponent<Rigidbody>().velocity = new Vector3(vel.x, 5, vel.z);
} }

  到这里算是音效代码已经全部实现,还有相关GUI组件没有实现,且听下回分解。(在文中有些功能组件的实现没有详细解释,我会通过专门的文章进行讲解。如果没有给你带来帮助,我只能说抱歉。若果能帮到你,我会很开心。)

Flapper Bird的学习笔记(三)的更多相关文章

  1. Flapper Bird的学习笔记(一)

    因为我有一个超屌的梦想,所以就绝不做孬种的追梦人! 本文主要目的是为了实现Flapper Bird的功能. 另外一个目的是为了加强对Unity引擎的理解和掌握. 新人一枚,如若看到是我幸运.若是发现错 ...

  2. Flapper Bird的学习笔记(二)

    因为有一个超屌的梦想,所以就绝不会做一个孬种的追梦人! 本章节主要目的: 实现小鸟的飞行. 实现管道的随机出现. 实现相机跟随. 上次主要是场景的布置,这节全力拿下代码. 1.小鸟飞行(一种制作2D动 ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  5. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  9. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

随机推荐

  1. HQL查询——HQL查询的基本用法

    HQL查询--HQL查询的基本用法 1.HQL语法类似于SQL语法,但是需要注意的是,HQL是一种完全面向对象的查询语言.SQL语言操作的对象是数据表.列等数据库对象,而HQL语言的操作对象是类.实例 ...

  2. ECNAScript6简介

    ECMAScript6.0(以下简称ES6)是JavaScript语言的下一代标砖,已经在2015年6月正式发布了,它的目标,是使得JavaScript语言可以用来编写负责的大型应用程序 ,成为企业级 ...

  3. Activty四种启动模式

    Activty启动提供了四种启动模式.launchMode: standard:每次启动新的活动窗口(new操作) singleTop:如果在栈顶是目标活动,则直接打开.否则开启新的活动窗口(new) ...

  4. 使用注解方式生成Hibernate映射文件

    @Entity:表示是一个hibernate的实体类 @Table:表示实体类和表的对应关系 @Id:表示是数据库中的主键 @Column:在数据表中描述的对应的列的信息 属性名是根据get方法,数据 ...

  5. php : 配置

    一. php: undefined function mysql_connect()  mac 上操作 一.有可能是因为版本不同而引起的 PHP5中使用mysql_connect()函数进行连接.但P ...

  6. Eclipse打JAR包,插件Fat Jar的安装与使用

    Eclipse可以安装一个叫Fat Jar的插件,用这个插件打包非常方便,Fat Jar的功能非常强大首先要下载Fat Jar,下载地址:https://sourceforge.net/project ...

  7. 解决JS加载速度慢

    在网页中的js文件引用会很多,js引用通常为 <script src="xxxx.js"></script> 通过如下方法可以增加js加载速度 <sc ...

  8. Docker部署Hadoop集群

    Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...

  9. A flash of Joy

    import re from datetime import timedelta from tornado import httpclient, gen, ioloop, queues peoples ...

  10. linux上使用shell脚本查看内存使用率

    如上的内存利用率 = [-/+buffers/cache:used]/[Mem:total ] =  6293404 / 16333656 对于free命令而言,有如下公式: total = used ...