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

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

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. 【Treap】bzoj1588-HNOI2002营业额统计

    一.题目 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司 ...

  2. linux驱动中printk的使用注意事项

    今天在按键驱动中增加printk(KERN_INFO "gpio_keys_gpio_isr()\n");在驱动加载阶段可以输出调试信息,但驱动加载起来后的信息,在串口端看不到输出 ...

  3. jquery ajax异步请求

    得先知道后台接口给ajax访问(接口URl和传入接口的参数及参数类型),知道访问之后返回的数据类型,有哪些数据.   选择异步请求的方式,常用的有三种,如$.ajax().$.post().$.get ...

  4. 怎样设置域名带www和不带www都可以访问

    1,域名解析添加两条A记录 2,IIS域名绑定添加两个主机头

  5. python走起之第十四话

    HTML 标题 HTML 标题(Heading)是通过<h1> - <h6> 标签来定义的. 实例 <h1>这是一个标题</h1> <h2> ...

  6. 在ionic/cordova中使用极光推送插件(jpush)

    Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容:

  7. RealSense开发-Session和SenseManager的几种创建方法

    从Intel RealSense 的SDK文档对其架构(如图1所示)的始描述可知,Session是SDK应用的主控模块,必须在所有模块操作之前创建,并且在所有模块注销后最后注销.SenseManage ...

  8. XMLHttpRequest.status状态码

    XMLHttpRequest.status状态码1xx-信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应. 100-继续. 101-切换协议. 2xx-成 ...

  9. 在VIM中进行快速的查找和替换

    VIM是被誉为非常高效的文本编辑软件.但是掌握并高效的使用是件有难度的事情.在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法.下面是我在阅读VIM用户手册时整理的一些资料: 行内搜索. f ...

  10. IaaS/PaaS/SaaS

    如果你是一个网站站长,想要建立一个网站.不采用云服务,你所需要的投入大概是:买服务器,安装服务器软件,编写网站程序.现在你追随潮流,采用流行的云计算,如果你采用IaaS服务,那么意味着你就不用自己买服 ...