• 【U3D小游戏】愤怒的小鸟(七)游戏暂停


    前言

    自己做一下小时候玩的风靡一时的愤怒的小鸟这个游戏,相信有很多人都在某一段时间沉迷过这个游戏吧~~~~

    让游戏可以暂停,开始,重新开始等

    1. 找素材

    Image里面找到图集切割就行了

    2. 做UI

    现在游戏页面做个暂停按钮

    在这里插入图片描述

    做成这个样子就差不多了,当然如果觉得不美观,可以自己设置

    在这里插入图片描述

    3. 做动画

    点击暂停按钮后,让我们上面的UI出现,可以自己添加效果,淡入淡出什么的。

    首先是阿尔法值从无到有,选中最上层的游戏物体,Ctrl+6打开动画面板

    新建动画,然后添加元素,然后这样

    在这里插入图片描述

    倒数第二个是x坐标,可以自行调整。

    效果:

    在这里插入图片描述

    返回游戏的动画和这个相反,想必都会了

    4. 敲重新开始和返回主菜单逻辑

    顺便把输赢界面的按钮事件写上咯

    输赢界面的按钮只有两个,一个是重新开始,一个是返回主页面,都比较简单

    GameManager

    //先引入一个命名空间
    using UnityEngine.SceneManagement;
    //写按钮事件
    public class GameManager : MonoBehaviour
    {
        public void Home()
        {
            //加载主菜单场景
            SceneManager.LoadScene(0);
        }
        public void Retry()
        {
            //加载当前场景,既重开游戏
            SceneManager.LoadScene(2);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    然后注册事件,重复操作只展示一个

    在这里插入图片描述

    5. 暂停开始逻辑

    前置设置:动画状态机

    先找到这玩意

    在这里插入图片描述

    然后添加一个布尔值

    在这里插入图片描述

    然后添加一个空动画,设置成默认,然后当布尔值为true的时候,播放暂停动画

    在这里插入图片描述

    false的时候,播放start动画,播放完回到空动画

    然后捏,我们直接在pause上挂一个脚本,命名看你自己就好

    /**
     * ==========================================
     * FileName:#FileName#
     * Author:#Name#
     * CreatTime:#CreateTime#
     * NowPath:#path#
     * ==========================================
     */
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class PausePanel : MonoBehaviour
    {
        private Animator anim;
    
        public GameObject pause;
    
        private void Awake()
        {
            anim = GetComponent<Animator>();
        }
        /// 
        /// 返回游戏
        /// 
        public void StartGame()
        {
            //返回游戏按钮点击后,游戏恢复,再播放动画
            Time.timeScale = 1;
            anim.SetBool("isPause", false);
            pause.SetActive(true);
        }
        public void PauseButton()
        {
            //暂停按钮点击后发生的事
            pause.SetActive(false);
            anim.SetBool("isPause", true);
        }
        /// 
        /// 暂停游戏
        /// 
        public void PasueGame()
        {
            //动画播放完游戏暂停
            Time.timeScale = 0;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    然后绑定事件,游戏暂停的函数绑定在动画播放完后

    在这里插入图片描述

    6. 看看效果

    在这里插入图片描述

    游戏暂停有点慢,是因为动画播放耗时有点长

  • 相关阅读:
    基于PHP的医药博客管理系统
    ADBMS1818芯片资料介绍(1)
    工厂方法模式-原理解析-逐步构建-java实战
    ChatGPT模型api的python调用
    python输出3位数的水仙花数
    Dubbo源码(八) - 负载均衡
    【Linux】探究函数是怎么完成链接和跳转的
    代码随想录day41|343. 整数拆分96. 不同的二叉搜索树
    【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和
    网络程序设计——VC的多线程编程(线程与进程)
  • 原文地址:https://blog.csdn.net/m0_52883898/article/details/127291828