存在实例变量判断



  • 我想通过判断武器栏中稀有度是否都为0,来确定要不要继续进行


    undefined

    代码思路是全选实例,当存在稀有度都为0的情况停止进行

    undefined


    undefined


    但我明明存在有稀有度不为0的情况,进行就停止了(是否为0装备情况为1)



  • @maker发 “实例变量引用”本身不会有选中实例的效果,所以不会全部实例都判断的,加上比较两值这个条件也不会选中实例,所以也是一次性判断的,也就是说,你这里的 武器栏.稀有度 实际上只取了第一个实例的值来判断,并不能达到你要的效果;
    另外实例默认就是全选中的状态的,全选实例这个条件的常规用法是前面的条件已经筛选了其他实例,然后你想要重置实例选中情况为全部实例选中再重新按另外的条件筛选时,才会去用它(例如对象A有两个实例a和b,它们的实例变量分别是1和0,假设有个条件是选中对象A实例变量为1的实例,然后子事件却要选中对象A实例变量为0的实例时,就可以在子事件的条件位置加一个全选对象A实例的条件,因为父事件的条件会选中实例a,子事件只能在这个父事件选中的实例的基础上继续筛选,不加全选实例的条件的话,子事件是无法选中实例b的,因为实例a和实例b的实例变量情况是互斥的,没法存在一个实例满足同一个实例变量既等于1又同时等于0。)
    那么回到你的问题,如果你想要判断所有实例的实例变量都等于某值该怎么办呢?有几种思路:
    第一种:反过来想,“选不中稀有度为0的武器栏时”
    这个换成事件的写法就是:第一个事件,条件为【武器栏对象自身的比较实例变量条件,当实例变量——稀有度的值不等于0时】,第二个事件,条件为【否则】,那么否则的情况就是“所有武器栏实例稀有度都为0的情况”,这是因为对于第一个事件的条件,只要有一个实例满足稀有度不等于0,那就必定不满足“所有的武器栏实例变量都为0”这个情况,所以只要用否则来互斥就行了。假设你看到这里明白了这个思路,你可能会好奇为啥要写成两条事件,既然是互斥,那第一个事件的条件直接取反不就行了?很抱歉这个是不行的,对象自带的条件,取反的效果并不是最终结果取反,而是对条件中的比较符取反,也就是说,这里用取反会变成“选中武器栏稀有度=0的实例”,那样的话,只要有一个实例满足,条件就会满足,所以行不通,这个方法的话,只能用否则。
    (这里要用武器栏对象自带的比较实例变量条件,因为几乎所有允许存在实例的对象,自带的条件都是带有实例筛选效果的,只有带实例筛选效果的条件才有逐个实例判断的效果,但系统组件里有实例筛选效果的条件只有“选中实例”这一类的条件,“比较两值”条件是没这个效果的,所以不适合)
    第二种:“满足条件的武器栏实例数量”和“场上所有的武器栏实例数量”是否相等,相等就说明全部实例都满足所设定的条件了
    这个换成事件的写法就是:只需要一个事件,事件里用两个条件,第一个条件是【武器栏对象自身的比较实例变量条件,当实例变量——稀有度的值不等于0时】,第二个条件是【系统组件的比较两值条件,当 武器栏.pickedcount = 武器栏.count 时】,pickedcount和count是对象中比较特殊的表达式,因为它不是单个实例的属性,pickedcount是返回满足条件的实例的个数,count是返回所有实例的个数,用在这里就达成了“满足条件的武器栏实例数量”和“场上所有的武器栏实例数量”是否相等的判断



  • 这个换成事件的写法就是:只需要一个事件,事件里用两个条件,第一个条件是【武器栏对象自身的比较实例变量条件,当实例变量——稀有度的值不等于0时】,第二个条件是【系统组件的比较两值条件,当 武器栏.pickedcount = 武器栏.count 时】

    这里打错了一个地方,第一个条件是【武器栏对象自身的比较实例变量条件,当实例变量——稀有度的值等于0时】才对,因为是复制下来的,所以忘记把“不”字去掉了



  • @maker发 啊对,还有一种做法忘了说,相当于第一种做法的衍生做法,思路上也是反过来想,让条件达成“选不中稀有度为0的武器栏时”的效果,
    这个换成事件的写法就是:只需要一个事件,但条件用的是【系统组件的“按条件选中”条件,选中武器栏对象,武器栏.稀有度 不等于 0时】,并且取反这个条件,系统组件条件的取反和对象自带的条件的取反不太一样,上面说过,对象自带的条件的取反是取反条件中的比较符,但系统组件里的条件的取反,是取反条件的最终结果,也就是说,上面这个条件,按条件选得中稀有度不等于0的实例时,本该为条件满足的效果,但是取反让这个“满足”的结果变成了“不满足”,所以条件反而不成立,那么反过来,只要选不中稀有度不等于0的实例,这个条件就是不满足的,但是取反的效果会让它从“不满足”变为“满足”



  • 非常感谢,收益匪浅,为了让后面遇到相同困难的人看懂我补一下我的代码照片


    undefined



  • @maker发 👍 感谢两位的分享


登录后回复