我们现在给游戏加上分数。先在场景中renderMode为Overlay的MainCanvas下加上一个Text的UI,取名为ScoreText,设置其属性


在上面挂载一个ScoreManager的脚本,内容如下,注意要在Start()方法里给score赋上初始值0,因为虽然你不赋值它也为0,但是我们后面会加上一个游戏结束后重新开始的功能,这里不赋值就会出现游戏重新开始的时候,分数为上一局结束的分数,而不是0。

很显然,我们会在其他的地方改变socre的值,就在EnemyHealth.cs中,我们添加如下代码:


我们设定一个public变量scoreValue,在怪物下沉的方法中(我们前面说过它只执行一次)对SocreManger的score进行改变。最后对3个怪物的prefab下对初始值进行修改,毕竟小的怪物应该奖励小一点的分数嘛。

怪物的灯光
我们给怪物加上发光的效果,以XomBear为例,添加一个PointLight如下,给灯光添加上怪物相近的颜色,然后另两个都做同样的操作。


再将prefab进行apply,将改动应用起来,再运行,击杀怪物也有对应的得分了,嗯,我们的游戏越来越像样了。

结束动画
我们用动画的形式给游戏一个结束的界面,我们先制作一个写有GameOver的Text,放在mainCavas下,按如下设置,注意红框中的内容。

再生成一个黑屏ScreenFader用于遮挡界面


以上这两个控件的Color都是全透明,到时我们通过动画来控制它的透明度。
先选中我们的MainCanvas,然后点击Window/Animation,然后点击其中的Create,创建一个GameOverClip,存放在Animation文件夹下


然后在Animation界面点击Add Property,制作成如下:

接下来制作动画的内容,



其中的正方形小方块可以通过AddKey 和 DeleteKey 来生成和去掉

制作完后点击停止按钮停止制作。

接下来我们处理Animation文件夹下的MainCanvas

在GameOverClip的Motion中加入我们刚才制作的GameOverClip

新建一个Trigger类型参数GameOver加入到NewState 与 GameOverClip 的连线中的Condition

我们生成一个GameOverManager.cs,挂载在MainCanvas下

拖入Player到指定位置。运行一下吧。

确实有GameOver的动画,但是有2个问题,第一时主角挂掉后屏幕还在不停的闪烁红屏,第二个是挂掉还没黑屏时,主角还可以进行射击和移动。
我们先加入主角的死亡动画

将Model文件夹的Clip填入

新加入一个Trigger类型的parameters ,取名die,作为Any State 到 Death 的Condition。打开PlayerHealth.cs

现在主角死亡后会播放死亡动画啦,我们在Death()中再添加上不能移动和射击的代码,当然我们先要获取它


然后我们要让主角死了后不闪红屏,即死了后怪物不再对主角造成伤害,在EnemyAttack.cs中加入如下内容

再次运行,如我所愿,但是发现有个报错

这样的错误我们遇到过,应该是在AnimationEvent的中没有添加这个RestartLevel方法,在最后一章,我们会加上暂停、继续、音效和音效的控制界面。行百里者半九十,加油!
网友评论