很棒一个算法逻辑,记录一下笔记,与大家分享。

主要是对Unity开发时一个文字提示同时在页面慢慢出现慢慢消失两次,显示不同的文字提示。

具体功能类似于CF的挑战模式,在打完这一关进入下一关的这个时间段会出现一个文字提示表示这一关结束,然后消失,又出现一个下一关开始,然后消失。

先看效果:

这是刚刚进入游戏时,并提示后缓缓消失。

这是第一波敌人消灭后出现的提示,并且在三秒后缓慢消失。缓慢出现下一个提示

下一个提示:显示结束后缓缓消失,进入下一关场景。

下面直接上代码

用来控制流程的参数:

bool IsBegin = false;
bool connext = true;
bool IsNext = true;//两个布尔值用来控制提示流程顺序
int Num = 1;//关数

首先是进入游戏后对第一关的提示显示,通过一个bool使其在update中只执行一次。(放onStart也行)

if(Num == 1&& !IsBegin)
        {
            text.text = "游戏开始:第一波敌人来袭";
            canvasGroup.DOFade(0, 5);//第一个参数为透明度Alpha的值,第二个是执行动作的时间
            IsBegin = true;
            MaxEnemy = 5 * Num;
        }

接下来让我们写一个调用函数的入口(在update中)函数名MyNextTip。

看到这个if语句是不是特别的懵逼,这里解释一下,这个if语句是可以理解为一个入口,通过使用一个变量为0的条件在Update生命周期函数中进入当前方法。当变量不为0了就表示关闭入口

而这个入口里方法的就是我们使一个提示文本在游戏界面中进行两次高逻辑的流程调用。

话不多说,上截图

有两张截图,截图下方做了思路解释。

上面这一张,里面有一个计时器time类似与deley的作用,布尔值IsNext是作为true时,进入到第一张图的if里,为false时进入第二张图的if里

在最里面的if里的connext的作用也是如此,当为true时执行if为真,为false时执行else里的代码,通过   !connext   进行控制,而在执行了else里的代码后,IsNext改变,进入到下图的if。

这个if大部分和上面一样,里面的connext进行了刷新所以能重复使用,不同的是进行了我们想要的显示后,就将前面所讲的update的调用入口给关闭,直到下一次达成条件的出现。

那么我们会发现,整体的代码虽然暴露在update生命周期函数中,但是通过的入口的控制,我们能在我们想要的时候进入,渐渐出现一个文字提示后渐渐消失,然后又出现下一个文字提示又消失(不需要进行两次文字提示的可以直接用一个if就可以了,不需要IsNext控制两个)

此处的关闭入口代码是改变了其他页面的值,但是在我的项目里是影响到了我控制入口的变量。

最后对DOTween的DOFade的使用参考我的另一篇文章:(8条消息) Unity开发使用DOTween插件实现ui组件慢慢消失和慢慢出现_晚周过涧寻晨风的博客-CSDN博客

切记不要弄混。

MyNextTip逻辑代码:

void MyNextTip()
    {
        time += Time.deltaTime;//计时器
        if (time > 2 && IsNext)//此刻为结束当前关卡提示,间隔二秒出现
        {
            if (connext)//调用提示显示
            {
                string txt = "第" + Num + "波敌人已消灭";
                text.text = txt;//刷新提示num为关卡

canvasGroup.DOFade(1, 3);//调用显示
                connext = !connext;//使执行程序跳转到下方else
                time = 0;//重置时间
            }
            else//关闭显示提示
            {
                canvasGroup.DOFade(0, 3);//调用消失
                connext = !connext;//重置进入顺序
                time = 0;//重置时间
                Num++;//关卡加一
                IsNext = !IsNext;//调用下一关提醒,使执行程序跳转到下一个if
            }
        }
        if (time > 3 && !IsNext)//开始新的一关的提示
        {
            if (connext)//调用提示显示
            {
                string txt = "第" + Num + "波敌人出现";
                text.text = txt;//刷新提示

canvasGroup.DOFade(1, 3);//调用显示
                connext = !connext;//使执行程序跳转到下方else
                time = 0;
            }
            else//调用提示关闭
            {
                canvasGroup.DOFade(0, 3);//调用消失
                connext = !connext;//重置进入顺序
                time = 0;
                IsNext = !IsNext;//重置进入顺序
                //print(CreateEnemy.EnemyHave);

//关闭当前方法调用路口,不进入提示方法
                CreateEnemy.EnemyHave = 0;//重置当前界面已存在敌人
                MaxEnemy = 5*Num;//下一关的敌人增加五个
            }
        }
    }

Untiy在update生命周期里UI的文字提示连续两次,进行慢慢进入慢慢消失操作,整体为流程控制逻辑加上DOTween的使用相关推荐

  1. oracle最大实例数,【ORA-16196】一个实例在其生命周期里最多只能装载和打开一个数据库...

    如果使用"alter database open;"命令打开一个曾经被"alter database close;"命令关闭的数据库时,您将会收到如下的报错信息 ...

  2. 连载《一个程序猿的生命周期》-《发展篇》- 23.两年多的时间,从孤家寡人到10多人的团体,经历了什么...

              上篇文章<城市奋斗者的阿Q精神>,不管真正的奋斗者还是伪奋斗者都需要阿Q精神,有的人是遇事之后被动的心里安慰,有的人是看破尘事的无所畏惧到内心强大.我可能属于后者,从写 ...

  3. 删除elemnt UI ——el-popper文字提示的小三角

    直接一句话 .el-tooltip__popper .is-light[x-placement^=(小三角的方向如:left,top,top)] .popper_arrow{ display:none ...

  4. Activity生命周期的学习和验证

    1.引子 Activity就像是英文词汇本的Abandon,开篇就能碰到,关于Activity生命周期的博客教程非常多,侧面说明Activity非常重要,其中的Activity的生命周期又是重中之重, ...

  5. 一文带你吃透Vue生命周期(结合案例通俗易懂)

    文章目录 本篇学习目标 1. vue生命周期 1.0_人的-生命周期 1.1_钩子函数 1.2_初始化阶段 1.3_挂载阶段 1.4_更新阶段 1.5_销毁阶段 2. axios 2.0_axios基 ...

  6. Vue.js 源码分析(九) 基础篇 生命周期详解

    先来看看官网的介绍: 主要有八个生命周期,分别是: beforeCreate.created.beforeMount.mounted.beforeupdate.updated   .beforeDes ...

  7. Android中Fragment生命周期和基本用法

    1.基本概念 1. Fragment是什么? Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fra ...

  8. Activity及其生命周期小结

    Activity及其生命周期方法 △概述 Activity,是安卓里与用户交互的组件,通俗点说平时用手机的时候看到的一个个界面就是"Activity"所组成的(当然也有可能会是Fr ...

  9. 如何基于用户生命周期分析,寻找新的增长点

    点击查看分析服务是如何基于用户全生命周期的分析管理,帮助各类应用寻找新的增长点 运营增长困境如何破局 我们知道,便捷生活.电商.游戏.娱乐影音.新闻阅读等垂类应用,几乎所有应用都面临着很大的用户增长的 ...

最新文章

  1. YML(2)yml 语法
  2. 百度Apollo飘了!在京开启全无人RoboTaxi体验,车型还能选,原因竟是嫌40万人次体验不够...
  3. 【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
  4. openresty开发系列25--openresty中使用json模块
  5. SAP Spartacus需要补充url validation单元测试的地方
  6. centOS docker容器的安装
  7. 使用SSH公钥登录服务器
  8. word xml 上下标
  9. 判断是否为奇数时:除以2余数等于1.(充分而不必要)
  10. k8s DNS服务配置
  11. 视频编辑,如何截取视频片段
  12. 老板怎么舍得你离开?-让我来教你如何拍马屁
  13. python convert函数_Python pandas.DataFrame.tz_convert函数方法的使用
  14. 【蓝桥杯每日一练】查找整数
  15. 图像超分辨率重建学习记录(一)
  16. 小地图的制作,游戏中的导航仪,minimap制作(继续我们的仙剑demo)
  17. 开发知识竞赛答题活动小程序过程中使用到的实用工具库介绍
  18. 2019考研上岸经验
  19. ITPUT 博客列表
  20. 量化交易——传统技术分析能量潮指标OBV的原理及实现

热门文章

  1. 物联网的DNA,LoRa价值前景
  2. 计算机无法识别新挂硬盘,电脑更新后系统不识别移动硬盘的原因分析及解决办法 系统无法识别移动硬盘教程(两种方...
  3. 老工程师12个入门级忠告,新手老鸟都值得一看!
  4. ASM:《X86汇编语言-从实模式到保护模式》第13章:保护模式下内核的加载,程序的动态加载和执行...
  5. [BZOJ2154]Crash的数字表格 莫比乌斯反演
  6. css响应式布局汇总(一)——居中布局
  7. 如何使用电气功能截面积查询呢?
  8. 最全的OLT设备介绍
  9. fft 估计载波频率程序_一种基于扫描精确估计载波频率的方法与流程
  10. 【SDO】Service Data Objects(SDO) 简介