SurvivalShooter学习笔记(九.游戏暂停、结束)
来源:互联网 发布:淘宝店铺推广怎么推啊 编辑:程序博客网 时间:2024/05/29 15:21
这里先补充一个得分管理器:
玩家得分设置成一个静态变量:
public class ScoreManager : MonoBehaviour { public static int score; // 玩家得分 Text text; // UI void Awake () { text = GetComponent <Text> (); //开始时候重置得分 score = 0; } void Update () { // Set the displayed text to be the word "Score" followed by the score value. text.text = "Score: " + score; } }
这个管理器每帧判断玩家当前生命是否为0,为0则游戏结束,播放结算UI淡入的动画
public class GameOverManager : MonoBehaviour { public PlayerHealth playerHealth; // 玩家生命 Animator anim; // GameOver状态机 void Awake () { anim = GetComponent <Animator> (); } void Update () { if(playerHealth.currentHealth <= 0) { // 告诉状态机游戏结束 anim.SetTrigger ("GameOver"); } } }
这里现在是:玩家死亡播放结算动画,重新开始游戏是放在玩家的死亡动画的事件中调用的;
原版本做法:玩家死亡播放结算动画,然后开启计时器,计时到restartDelay重启delay时间后重启游戏;这两种方法都是可行的。
录制成Animation后,设置好状态机:需要先新建一个空的状态且设为默认,然后用Trigger带到游戏结束状态:
Animator组件和GameOverManager脚本都放在画布上:
所以玩家死亡后就播放了录制好的结算淡入动画,记得录制好后取消loop。
2.游戏暂停管理器:(Nice的三元运算符)
public class PauseManager : MonoBehaviour {Canvas canvas;void Start(){canvas = GetComponent<Canvas>();}void Update(){if (Input.GetKeyDown(KeyCode.Escape)){canvas.enabled = !canvas.enabled;Pause();}}public void Pause(){Time.timeScale = Time.timeScale == 0 ? 1 : 0; //暂停就取消暂停,没暂停就暂停}public void Quit(){#if UNITY_EDITOR EditorApplication.isPlaying = false; //编辑器里的退出#else Application.Quit(); //版本的退出#endif}
暂停时打开的游戏设置面板:
1/ 滑动条控制音量 (注册改音量事件 到滑动条值改变的事件中)AddListener(UGUI事件);毁灭物体时移除事件。
void Start () {if(GameObject.Find("EffectsSlider"))GameObject.Find("EffectsSlider").GetComponent<Slider>().onValueChanged.AddListener(SetVolume);}void SetVolume(float volume){GetComponent<AudioSource>().volume = volume;}void OnDestroy(){if(GameObject.Find("EffectsSlider"))GameObject.Find("EffectsSlider").GetComponent<Slider>().onValueChanged.RemoveListener(SetVolume);}2/ 暂停时候背景音效衰弱设置:
使用AudioMixerSnapShot类需要using UnityEngine.Audio
public AudioMixerSnapshot paused; //暂停时的public AudioMixerSnapshot unpaused; //取消暂停恢复的暂停函数Pause()中调用这个函数:
void Lowpass(){if (Time.timeScale == 0){//0.01s后切换到暂停的音效设置paused.TransitionTo(.01f);}else{//0.01s后切换回来unpaused.TransitionTo(.01f);}}关于AudioMixer,后面会具体讲。
0 0
- SurvivalShooter学习笔记(九.游戏暂停、结束)
- SurvivalShooter学习笔记(一.相机跟随)
- SurvivalShooter学习笔记(三.敌人移动)
- SurvivalShooter学习笔记(四.敌人攻击)
- SurvivalShooter学习笔记(五.敌人生命)
- SurvivalShooter学习笔记(六.玩家生命)
- SurvivalShooter学习笔记(七.玩家射击)
- SurvivalShooter学习笔记(八.敌人管理器)
- SurvivalShooter学习笔记(二.玩家移动旋转)
- 噩梦射手(SurvivalShooter)教程(九)
- Unity制作SurvivalShooter游戏
- 安卓学习笔记---实现简易播放器(带有进度条,开始与结束时间,暂停与播放)
- 游戏开发学习笔记(九)商店系统
- 我的Cocos2d-x学习笔记(九)游戏帧循环(游戏主循环)
- 学习笔记(九)
- python学习笔记 暂停一段时间
- 暂停游戏
- 【D3D11游戏编程】学习笔记九:编译Effect的方法
- MyEclisep的破解
- 用户权限设置5张表
- for循环里定义变量要注意
- Linux内核移植 part1:arm gcc 编译与链接参数
- 【NOIP2014模拟8.25】设备塔
- SurvivalShooter学习笔记(九.游戏暂停、结束)
- javascript中如何把类型为object的变量,变成类型为array的变量
- 超强、超详细Redis数据库入门教程
- java script的小基础
- 关于ASP.NET MVC 里Razor语法
- Leetcode-64. Minimum Path Sum
- Activity, Fragment, WebView的状态保存和恢复
- 条款三十三:将非尾端类(non-leaf classes)设计为抽象类(abstract classes)
- maven中tomcat插件设置启动内存