很棒一个算法逻辑,记录一下笔记,与大家分享。
主要是对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);文章来源:https://www.toymoban.com/news/detail-428029.html
//关闭当前方法调用路口,不进入提示方法
CreateEnemy.EnemyHave = 0;//重置当前界面已存在敌人
MaxEnemy = 5*Num;//下一关的敌人增加五个
}
}
}文章来源地址https://www.toymoban.com/news/detail-428029.html
到了这里,关于Untiy在update生命周期里UI的文字提示连续两次,进行慢慢进入慢慢消失操作,整体为流程控制逻辑加上DOTween的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!