精确选中,调用实列详解
-
鉴于最近群里不少学员,都在问这个问题,这里特开一贴讲解使用技巧。
问:为什么要精确选中实例?
答:不精确选中的话,你对对象设置的条件,等于全选这个对象所有实例(为什么我一攻击全部都在掉血啊)
问:如何选中XX实例?
答:请学好精确选中
精确选中第一类:同一对象,单选实例
同一对象可以创建多个实例,每个实例都有自己的数据面板,形象。我们对这些实例的一些操作,需要精确选定
案例一:攻击
现在的攻击大多都用碰撞实现,
也就是这样。这里当碰撞时,这个条件本身就是精确选定的一种,所以一般写到这里都没什么问题。但是到了下一步,当血量没了要销毁时,怎么办呢?
大部分的精确选中条件都在这里。
这样就能精确选定没血的实例,去销毁他。
总结。心中要有这样的思路,我要选谁做什么。怎么去选他。
第二类:同类组精确选中一个对象的一个实例
有人会问,同类组也能精确选中?不是大家都做,大家都改吗?同类组当然可以把里面的对象区分出来。
为什么同类组也需要精确选中?比如你要给一个敌人同类组赋值,你可能会想,一个个的写呗,这样也行,但是数量一多,写起来很费力,而且修改查找更是麻烦。
所以使用同类组在享受方便的同时,更是要牢记精确选中
这里有两种使用,一种是系统本身自带的,点击同类组,意思是点击这个同类组对象的实例,选中点中那个。(其他的带有选定性质的条件一样适用)
第二种使用方法就是常用的变量选中。需要注意的是这个变量必须为同类组变量。(前面已经选中了单个实例,所以这个实例中是给单个实例设置变量,不是整个同类组哦)
第三类:数组,辞典,和其他方式定义的选中
精确选中,不光运用于实例对象之间,还运用到数据运算,选择,添加,删除中,而通过数据又可以影响到实例,
实例的精确选中,只能用其他东西判断,用变量表达。而数组数据的精确选就十分直白,就是通过坐标来进行。
遍历循环,比较得到相等的条件,就获得坐标,获得你想修改的地方位置,(反向操作一样可以)具体如何通过数据影响实例,这是个综合题,各种方法轮番使用,这里只是简单说说大部分的精确选中方法,用处。
-
从群里跑来围观大佬!
-
哇厉害!给您加精!
-
求教,我条件两边都是同类组,当同类组里面只有一个对象的时候,事件是生效的,位置也移动过去了,也赋值了。但当我同类组里面有两个对象的时候就歇菜了,貌似条件不成立,所以不能触发后面的动作。因为测试下来动作没有执行。
-
@大型香菇 你这个应该是实例匹配问题,默认情况下,不管是同类组还是对象,都是全选场上的所有实例的,然后通过条件逐步筛选,如果是确实选中单个实例,再去引用另一个对象的单个实例的属性值,则是正常的,是比较常见的,也应该是楼主建议的做法,你这里的话,同类组中只有一个对象可能刚好是场上也只有一个实例,所以你觉得只有一个对象的时候是正常的,跟前面这个说法是对应得上的。而两个对象的时候你应该场上放了两个实例,才出现了问题,这个应该跟同类组有多少个对象没关系,你把同类组里放很多个对象,但是只放其中一个对象的一个实例上去,应该也是正常的,你这里遇到的问题应该是“多个A对象的实例去引用多个B对象的实例属性时逻辑是如何运作的”。这个逻辑讲起来其实还挺抽象的,我这里就直接建议你怎么改吧:
从你的事件来看,应该是想要做“对每一个部队实例,都设置位置到同名的控制区域的位置上”
那么可以像下面这么写就行,其他部队的同类组做法相同,你原先的做法又是正着选一遍又是反着选一遍的,其实并没有正确筛选好实例:
-
此回复已被删除!
-
@忠心耿耿汉弗莱 恩,有点道理。我回复的有点晚了,当时我这个问题是通过设立局部变量+子事件解决的。但事件上面就显得复杂的多了,相对还是你的方案看着简洁一点。谢谢大佬指教
-
@风泣雪 早就说了,选择是唤镜第一大瓶颈,新人不会选择,光是讲选择就可以一大章。
除了要充分理解唤镜的选择机理外,更是考验作者的逻辑能力,可以说,没有天赋的人,直接就在这里被劝退了。