美文网首页Unity3d进阶Unity乱七八糟技巧
unity EventSystems 事件响应的一个坑

unity EventSystems 事件响应的一个坑

作者: Angeladaddy | 来源:发表于2018-07-09 11:23 被阅读2次

最近在实现一个场景物体拖拽功能,发现了一个很有意思的坑:

image.png
如图,我使用一些unity自带事件IPointerEnterHandler,IPointerExitHandler, IBeginDragHandler, IDragHandler, IEndDragHandler等初步实现了拖拽系统(drag-drop),drag物体被鼠标拖拽后,只能在drop物体上释放。这样drop物体就必须是一个dummy物体。
其实都是射线检测,完成度99%,一切都没问题,就在一个地方卡壳了:图中的蓝色方块,我想在初始位置也设置一个drop,但是如果在初始时,给这个drop加上collider的话,这个collider就会阻挡射线,从而导致无法拖动蓝色块,但如果不加collider,蓝色块可以拖动,但是无法在次物体上drop,因为它没有collider,射线探测不到。构成了一个死循环。
搞了N久,无意中发现,运行游戏后,手动在编辑器中打开、关闭一次drop的collider,一切就完美解决了,于是用以下代码解决了这个问题:
  private void Start()
        {
            //if start droper, disable collider otherwise it will overlap drag object's collider
            if (initDroper)
            {
                GetComponent<Collider>().enabled = false;
                GetComponent<Collider>().enabled = true;
            }
        }

这样就行!好开心!

相关文章

网友评论

    本文标题:unity EventSystems 事件响应的一个坑

    本文链接:https://www.haomeiwen.com/subject/gepzuftx.html