Unity学习笔记(三)----Space Shooter

来源:互联网 发布:西安seo任兴华 编辑:程序博客网 时间:2024/05/21 17:33

停了好几天没写,颓废,总结一下前几天的学习。



1.Audio和Text部分

           Audio部分只有射击时的音效添加在PlayerController脚本里,在按下"Fire1"时,向音频组件中的AudioClip拖入了用到的音频剪辑,获取绑定在Player上的音频组件并进行播放。

       代码如下: 

     

 

      Text部分通过添加UI中的text进行处理,主要的代码在GameController里面添加。

      首先是分数ScoreText的处理,在GameController添加了两个函数。一个是公有的AddScore()函数,用来在障碍物被毁灭的时候添加分数。一个是UpdateScore()用来更新ScoreText里面显示的分数,在AddScore()中增加完分数后还要调用UpdateScore()显示新的分数。AddScore()这个函数主要用在DestroyByContact()中,在障碍物被破坏时调用。

      其次是GameOverText的处理,先在GameController里定义了一个GameOver函数,用于显示文本,和表示游戏结束。这个在Player被破坏时被调用。

      最后是ReStartText的处理,先要定义两个布尔型变量,一个gameover,一个restart,在调用GameOver函数后,gameover就被置为true,然后在最后一波障碍物生成完后,使RestartText里面显示Press "R" to Restart,并令restart为true。在下一帧检测restart的值,若为true,检测R键是否被按下,被按下则重新载入场景。

      利用 SceneManager.LoadScene(SceneManager.GetActiveScene().name)可实现重新载入当前场景。


至此SpaceShooter这个游戏就算完成了。官网还有扩展内容,不过没找到翻译,是全英文的,听着好痛苦。



2.关于协同Coroutine函数

      下面是我的理解,首先协同函数不是多线程,是在主线程内的每帧Update进行假的并行,主要可以用来做以下几件事:1.定时器,固定时间后运行、定期执行等等。非协程的做法有直接使用Update()或者Invoke();2.将复杂的操作分帧;3.保证一段代码只同时被一个协程进入;4.串联几个持续性的逻辑。

       具体的用法在实际操作中如果用到会记录下来,到时候再具体分析。



以上。




0 0
原创粉丝点击