游戏管理器(2)

2.11 游戏管理器(2)

Instance是一个静态的句柄,在Awake函数中指向自身实例,这样我们就可以在其它类中使用GameManager. Instance的形式直接取得GameManager实例。注意,GameManager只能有一个实例。

m_score和m_hiscore属性分别表示当前得分和最高得分纪录,m_hiscore是一个静态属性,它会一直存在,并不会因为读取关卡而重新初始化。

在Start函数中获得主角实例的方式与在SuperEnemy类中的方式近似,只是这一次获得的是主角的Player角本组件。

在Update函数中,我们循环播放背景音乐,注意播放方式与前面播放射击音效的区别。另外,如果按Esc键,将设Time.timeScale的值为0,这时游戏会暂停。

OnGUI是一个特殊的函数,专门用来画UI界面。其中Rect函数用来表示UI的出现位置和大小,Label函数用来书写文字,Button函数用来显示按钮。

当Time.timeScale为0时,屏幕将显示2个按钮,一个用于继续游戏,另一个退出游戏。

Application.Quit用来退出当前程序。

Application.LoadLevel用来读取下一个关卡,这里是重新读取当前关卡。在读取下一个关卡的时候,当前关卡的游戏体都会被销毁,如果希望可以保存一些游戏数据,可以将其设置为静态的属性。

2)创建空游戏体作为游戏管理器,为其指定Audio Source组件,然后指定GameManager.cs作为其角本组件。

3)在资源文件中找到music.mp3,把它与游戏管理器的m_musicClip属性相关联。

4)选择music.mp3,在Inspector窗口取消选中3D Sound,使其成为一个2D声音,它的音量将不会受3D空间距离影响。默认在场景摄像机上有一个Audio Listener组件,3D声音的音量取决于声音源与摄像机的距离。

5)打开Enemy.cs,为它添加一个分数属性,不同敌人的分数可以在Inspector窗口中作不用的设置。
 

 

 
 
  1. public int m_point 10

6)在Enemy的OnTriggerEnter函数中添加GameManager.Instance.AddScore(m_point)语句,当敌人被消灭时我们会获得一定分数:

(此处有删节)

运行游戏,最后的效果如图2-37所示。

 

 

 

如果UI上的中文显示为乱码,使用Visual Studio打开GameManager.cs角本,在菜单栏选择【Save】→【Advanced Save Options】,然后将其保存为UTF8格式即可,如图2-38所示。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值