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

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

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. Boost学习笔记(二) 时间与日期

    timer库概述 timer库包含三个组件:分别是计时器类timer.progress_timer和进度指示类progress_display timer 主要作用是计时,精确度是毫秒级.下面是一个简 ...

  2. 【leetcode❤python】 7. Reverse Integer

    #-*- coding: UTF-8 -*-#2147483648#在32位操作系统中,由于是二进制,#其能最大存储的数据是1111111111111111111111111111111.#正因为此, ...

  3. Python中MySQLdb模块的安装

    安装 MySQLdb是Python语言访问mysql数据库的一个模块,如果你不确定自己的Python环境中是否已经安装了这个模块,可以打开Python shell,输入import MySQLdb,如 ...

  4. LTE Manual ——Logging(翻译)

    LTE Manual ——Logging(翻译) (本文为个人学习笔记,如有不当的地方,欢迎指正!) 9 Logging   ns-3 日志功能可以用于监测或调试仿真程序的进展.日志输出可以通过 ma ...

  5. system_call中断处理过程

    张雨梅   原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 1.给menuos添加命令 改 ...

  6. jQuery index()

    index() index() 方法返回指定元素相对于其他指定元素的 index 位置. 语法 $(selector1).index(selector2) selector2:可选,指定元素:为空时默 ...

  7. angularJS 学习之路

    AngularJS 通过 ng-directives 扩展了 HTML. ng-app 指令定义一个 AngularJS 应用程序.也就是angularjs作用的入口  作用在什么标签或者整个body ...

  8. 解决在CAPSLOCK开启情况下sendkeys大小写异常的问题

    http://files.cnblogs.com/files/liuzhaoyzz/sendkeys%E5%A4%A7%E5%B0%8F%E5%86%99.rar 首先利用GetKeyState(vb ...

  9. Oracle10G无图形安装及升级

    Oracle10.2.0.1静默安装及升级到10.2.0.4 下载及解压好database和Disk1 环境配置: su - oracle vim ~/.bash_profile 保存. vim /d ...

  10. Ajax聊天

    结构: index.html <!DOCTYPE html> <html> <head> <title>index.html</title> ...