在Canvas画板里添加Text文本组件,修改名字为GameOver,修改名字是为了让我们以后更改时更容易找到对应的组件,请名字时尽量和代码一样需要见名知义。并且通过锚点修改他的位置,在位置里修改他需要显示的大小。
并且在Text文本组件中修改里面的属性,来显示文本的大小、颜色、对齐方式。
再在Canvas画板里面创建一个Image组件,设置图片的锚点为全屏并且修改图片的颜色。
然后通过代码就可以实现游戏结束时显示GameOver画面,但是我们一般想让他慢慢的出来并且有动画效果,显示出来大小也会变化,那样的话看起来比较高级。所以我们需要使用Animator动画来进行设置。我们首先点击满屏的Canvas画板,在菜单栏中找到组件里面有个其他,其他里面有一个动画,点击动画创建GameOver动画,在里面添加属性找到需要设置动画的组件。
在设置动画之前,我们需要将上面创建的Image组件中的颜色里的透明度a设为0,顺便把Image组件名设置为FullScene,把GameOver文本组件里面的color颜色属性中的透明度a设为0 ,再通过上图设置动画的显示效果,达到动态显示更美观的效果。
因为不是视频不能显示动态效果,自己设置修改时即可显示。
最后在GameOver文本组件中添加shadow组件和Outline,使文本有阴影和线影使文本更清楚更有立体感。
一定要把刚刚创建的动画挂载到制作动画的UI组件上,在制作动画的UI上找到Animator动画组件添加刚刚制作的动画,并且在对应的动画控制器上修改,创建一个空的状态机,取名为Empty。设置为图层默认状态,再创建一个参数trigger触发器,连接到GameOver动画上。
并且设置好对应的状态。
双击GameOver动画图层,会显示下面这个效果,默认是勾选loop循环播放,我们需要取消勾选只显示一次。这样的画我们就完成了对应的操作接下来只需要编译脚本实现效果就可以。
创建GameOver脚本,挂载到对应的文本组件上,编辑代码实现显示效果。
代码实现:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class GameOverManager : MonoBehaviour { // Start is called before the first frame update //找到玩家血量组件 public PlayerHP PlayerHP; //状态机 Animator anim; //重新加载时间 public float restartTimer = 5f; //计时器 float timer; void Start() { anim = GetComponent<Animator>(); } // Update is called once per frame void Update() { //玩家死亡 if (PlayerHP.currentHP <= 0) { //播放游戏结束动画 anim.SetTrigger("GameOver"); //计时 timer += Time.deltaTime; if (timer >= restartTimer) { //计时大于重新加载的时间,计时器为0 timer = 0; //分数清0 ScoreManager.score = 0; //重新调用场景 SceneManager.LoadScene(0); } } } }
此代码会一直调用SceneManager.LoadScene(0)加载第一个场景,一直循环玩游戏,当GameOver页面显示5秒则重新调用加载场景脚本,如果不需要则需要注释SceneManager.LoadScene(0)即可,也可以自己完善和补充内容,可以设置菜单按钮进行控制游戏重新开始或者退出,也可以在游戏中设置不同的敌人有不同的攻击力和攻击范围,并且可以设置多个关卡,打怪升级添加战斗力,打怪随机掉落物品等等,具体内容自己都可以去实现,使项目达到更加完美的效果。
图片显示:
上面代码顺序不一样,可能会导致运行出错,如需要得进行完整性使用,才能保证项目正常运行。如出错请认真检查并且通过调整看看是否能达到效果。如有更好的方法,请在下方留言!谢谢你的观看!!!
----------------------------------------------------------END-----------------------------------------------------------------