0


Unity- 游戏结束以及重启游戏

文章目录

游戏结束以及重启游戏

思路:利用Canvas创建好覆盖全屏的结束页面,默认关闭。游戏结束时,玩家控制的对象发起委托,ui管理收下委托,显示游戏结束页面,停止游戏。游戏重新开始就是点击设置好的按钮,启动ui管理里的重新开始场景

建个游戏结束页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DjRdJ0eB-1680148541697)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230330105300652.png)]

编写委托类 游戏主角 以及 ui管理类的脚本

  • 委托类usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingSystem;publicclassEventHander:MonoBehaviour{//通知游戏结束publicstaticeventAction GetGameOverEvent;publicstaticvoid CallGetGameOverEvent (){ GetGameOverEvent ?.Invoke();}}
  • 游戏主角脚本//青蛙是否死亡privatebool isdead;//游戏结束if(isdead){ EventHander.CallGetGameOverEvent();}在游戏结束的一些判断里把isdead改成true即可。
  • ui管理脚本usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;publicclassUiManager:MonoBehaviour{//游戏结束页面的操作publicGameObject gameOverPanel;//脚本刚被调用时使用privatevoidOnEnable(){//恢复游戏速度游戏正常进行 Time.timeScale =1;//注册接收得分的委托 EventHander.GetPointEvent += OnGetPointEvent;//游戏结束的通知 EventHander.GetGameOverEvent += OnGetGameOvervent;}//脚本不再被使用privatevoidOnDisable(){ EventHander.GetPointEvent -= OnGetPointEvent; EventHander.GetGameOverEvent -= OnGetGameOvervent;}///<summary>///处理游戏结束的委托///</summary>privatevoidOnGetGameOvervent(){//显示游戏结束页面 gameOverPanel.SetActive(true);//如果游戏结束页面被显示if(gameOverPanel.activeInHierarchy){//游戏速度放慢为0,游戏停止 Time.timeScale =0;}}}这样游戏结束就完成了!开始测试之前别忘了先关闭游戏结束页面。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hvBjq1v9-1680148541698)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230330113143486.png)]

DLC:如何完全停止角色的操作

​ 在角色脚本里:

//输入输出工具组件privatePlayerInput playerInput;privatevoidAwake(){//获取输入输出组件
      playerInput =GetComponent<PlayerInput>();}privatevoidUpdate(){if(isdead){DisbleInput();return;}}/// <summary>/// 关闭输入组件/// </summary>privatevoidDisbleInput(){// 关闭输入组件
      playerInput.enabled =false;}

重启游戏

usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;usingUnityEngine.SceneManagement;publicclassUiManager:MonoBehaviour{///<summary>///重启游戏///</summary>publicvoidRestartGame(){//重新加载之前活跃过的场景
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);}}

然后把这个函数放到按钮里去。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ighRkr0y-1680148541699)(C:/Users/86188/AppData/Roaming/Typora/typora-user-images/image-20230330114442971.png)]

完成!!

标签: unity 游戏 ui

本文转载自: https://blog.csdn.net/abaidaye/article/details/129854949
版权归原作者 RomanBesson 所有, 如有侵权,请联系我们删除。

“Unity- 游戏结束以及重启游戏”的评论:

还没有评论