关于通过比较位置选中的多个精灵实例啊?



  • 通过“比较位置”选中了不止一个精灵实例,然后要如何才能获得每一个实例的值?
    比如有一组精灵实例,每个实例的动画帧不同,然后通过:
    [数字精灵] 如果X坐标=鼠标X Y坐标=鼠标Y
    获得鼠标点击位置有3个实例,这3个实例分别是动画帧1、3、5。
    我在上面这句之后用
    [系统] 选中数字精灵的第N个实例,但好像返回的是错误的实例。



  • @ZZommy 系统内的选中第N个实例的含义是通过IID,其含义在官方手册中有写↓

    IID
    IID是选中实例在该对象在场景中的创建顺序编号。 预览游戏时,在调试界面下选中该实例即可看到IID。
    与UID不同的是,IID并不是独一无二的。 对象A和对象B可以同时拥有IID为1的实例。 并且,当某一个实例被销毁后,其他实例的IID也会根据当前顺序进行变化。


    反应在预览界面中,第N个实例就是左侧实例列表中的第N个
    undefined


    回到问题本身,首先有一个地方,就是精灵的x、y坐标只是一个点,而你可能想要实现的效果是“鼠标的坐标上覆盖了精灵”,因此这个比较精灵位置的写法本身会存在问题(这么写的话只有鼠标精准地位于这一个点上才会触发);
    然后我稍微验证了一下思路,如果要分别获取每个实例的变量,那么同一时间只能选中一个实例,否则将不会返回任何值;
    因此,实际逻辑可以是:先逐个实例选中,再判断是否有覆盖鼠标,然后返回对应的变量。

    事件写法的话,这里的排序遍历循环也可以换成遍历循环,只不过加一个排序的话更容易获得好看的结果(也可能会方便数据处理)
    undefined

    实际效果如下:(不知道动图能不能看到)



    undefined



  • 非常感谢!很清晰详细的解答👍
    我马上来试试


登录后回复