关于数组的条件判断怎么写:



  • 比如说我有一个数组:宽高深分别是6,3,1
    随便捏造的下数据如下,每列的意思分别是:buff名称,倒计时长,倒计时总长
    Buff_1,5,60
    Buff_2,0,0
    Buff_3,49,50
    Buff_4,0,25
    Buff_5,1,30
    Buff_6,5,10
    现在要写一个判断语句,当数组某一行的第二列数值=第三列时,倒计时完毕(把第二列和第三列都改为0)



  • 可以试试每帧执行:循环-数组.width 次,当 数组.at(loopindex,1)=数组.at(loopindex,2) 时,设置数组的(loopindex,1)为0,设置数组的(loopindex,2)为0;
    (话说为啥不用定时器能力😂



  • @欧拉欧拉 谢谢,我试试



  • This post is deleted!


  • @欧拉欧拉 好啦,麻烦大佬看看是不是这样(想问问looplindex是啥,我在表达式列表里没找到):
    微信图片_20200526182003.png

    我还想问下:
    1、如果给一个精灵设置定时器,但是另外一个场景里没有此精灵,有没有办法弄成全局定时器继续倒计时?
    2、我还想让这些buff按照倒计时降序排列(因为要显示buff图标,如果倒计时结束则不显示这个图标,后面的图标顺势前移),有什么方法吗(我现在自己瞎弄了一个,不知道对不对,求指点),谢谢!
    微信图片_20200526185753.png



  • @老阿姨炸碉堡 看上去差不多是这样子,你测试的效果如何?(loopindex是循环次数的编号,例如你的循环次数是7,它会使所包含的事件执行7次,而第一次执行时,loopindex的值在该次执行中是0,第二次执行时,loopindex的值就会变成1,以此逐一叠加,最后一次执行时,loopindex的值就是6了,0到6总计7次,不带参数的loopindex是跟“循环”这个条件结合用的,如果是带参数的loopindex(),则是跟“for循环”这个条件结合使用的);
    其实之所以推荐定时器是因为这种每帧循环的判定用多了比较吃性能,定时器因为是对象的能力,是分别独立绑定在每个实例上的(相同对象的不同实例可以有完全不同的定时器),所以必须要对应的对象实例存在于该场景中,全局定时器你可以额外做一个透明的精灵勾选全局对象,放在最开始场景的屏幕以外,专门用来全局定时。buff的倒计时图标需要排序的话,根据图标的显示方式,做法倒是比较多样,因为如果排序用到的数据如果在图标对象上,可以用系统的排序遍历来循环排序,如果排序用到的数据是像你这样放在数组里的话,你这截图的两条事件可以直接结合在一起写:
    父事件-每隔1秒
    子事件-重复 粮BUFF.width 次,将粮BUFF在(loopindex,1)处的值设置为粮BUFF在(loopindex,1)+1
    子子事件1-当 粮BUFF.at(loopindex,1)大于等于粮BUFF.at(loopindex,2) 时,设置粮BUFF的(loopindex,1)为0,设置粮BUFF的(loopindex,2)为0【这里考虑到你没写删除行的事件,用当前时长大于等于目标时长来对比会比较靠谱】
    子子事件2-当 loopindex=粮BUFF.width-1时,依据Y1和Z0指向的值降序排列所有X

    整体的逻辑就是:每隔1秒,就给所有当前定时的列的值+1表示倒计时过了1秒,加完1秒后就去判定定时是否已到达最大时间,如果是,就通过设置值为0来表示buff倒计时已结束,直到遍历完数组的所有行之后,再重新排序数组,保证不会因中途排序过数组打乱了数组的遍历顺序



  • @欧拉欧拉关于数组的条件判断怎么写: 中说:

    loopindex

    太好了,谢谢大佬解惑,您的方法我试了,暂时没啥问题。说来惭愧,之前要用loopindex的情况都是我设置局部变量/子变量塞在循环里面,或者按XX升/降序排列执行事件,现在我再去看看能否优化下。

    微信图片_20200527103907.png

    微信图片_20200527104235.png