我们现在给游戏加上分数。先在场景中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方法,在最后一章,我们会加上暂停、继续、音效和音效的控制界面。行百里者半九十,加油!