Flapper Bird的学习笔记(三)
因为我有一个超屌的梦想,所以就绝不会做一个孬种的追梦人!
- 完成音效的添加
- 单例模式
- 游戏的状态切换
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的学习笔记(三)的更多相关文章
- Flapper Bird的学习笔记(一)
因为我有一个超屌的梦想,所以就绝不做孬种的追梦人! 本文主要目的是为了实现Flapper Bird的功能. 另外一个目的是为了加强对Unity引擎的理解和掌握. 新人一枚,如若看到是我幸运.若是发现错 ...
- Flapper Bird的学习笔记(二)
因为有一个超屌的梦想,所以就绝不会做一个孬种的追梦人! 本章节主要目的: 实现小鸟的飞行. 实现管道的随机出现. 实现相机跟随. 上次主要是场景的布置,这节全力拿下代码. 1.小鸟飞行(一种制作2D动 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
随机推荐
- sql存储过程比sql语句执行慢很多
参数嗅探的问题 原因:(1)可能是发生了参数嗅探,第一次赋给存储过程的输入参数,会为该存储过程生成一个基于输入参数的执行计划,因此如果第一次输入的参数不具有代表性(例如大部分查询输入的参数都是A值,但 ...
- android studio卡死问题
今天重新安装android studio 的时候 建工程的时候尽然卡住了,卡在 第一次卡在了 Refreshing gradle project 第二次卡 gradle:download http:/ ...
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- JS判断日期是否在同一个星期内,和同一个月内
今天要用到判断日期是否在同一个星期内和是否在同一个月内,在网上找了好一会儿也没找到合适的,然后自己写了一个方法来处理这个问题,思路就不详细介绍了,直接附上代码,自己测试了一下 没有问题,若有问题请在评 ...
- 最全面的常用正则表达式大全 zz
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,包括校验数字.字符.一些特殊的需求等等.给自己留个 ...
- ajax局部刷新
//5秒刷新一次 $(function () { setInterval(Refresh, 5000); }); //ajax局部刷新 function Refresh() { $.ajax({ ty ...
- kafka使用getOffsetsBefore()获取获取offset异常分析
根据时间戳获取kafka的topic的偏移量,结果获取的偏移量量数据组的长度为0,就会出现如下的数组下标越界的异常,实现的原理是使用了kafka的getOffsetsBefore()方法: Excep ...
- iOS UIWebView重定向Cookie
// 1. 取出当前的cookies NSArray<NSHTTPCookie *> *cookies = [NSHTTPCookieStorage sharedHTTPCookieSto ...
- iOS中iconfont(图标字体)的基本使用
前言 近日在做项目时,项目组有提出iconfont的技术,便开始查询相关资料.iconfont技术的主要目的是为减少应用体积而生.首先icon代表图标 font代表字体.此技术便是将图标转化为字体,从 ...
- ubuntu 编译源码坏境配置
git checkout -b newlocal origin/q01v31source build/envsetup.shlunch msm8916_32-usermake -j4 make -j4 ...