// ItemSlotUI中鼠标事件的监听 #region Listener: ItemSlotUI // 监听ItemSlotUI的OnPointerEnter事件 private void ItemSlotUI_OnEnter(Transform itemSlot) { Item item = itemSlot.GetComponent <ItemSlot>().item; if (item != null) { // 直接对RectTransform赋值会产生一个问题:tooltipPanel会发生闪烁,原因在于tolltipPanel显示时将会挡住射线检测->监听到PointerExit->tooltipPanel消失->检测到射线->监听到PointerEnter->tooltipPanel显示->一直循环下去。 // 解决方法:让tooltipPanel随鼠标移动,同时将tooltipPanel的pivot向左上方偏移一段距离(移出tooltipPanel的整体范围,即pivot处于tooltipPanel之外),让tooltipPanel永久处于鼠标尾部右下方,防止鼠标碰到tooltipPanel。 // 注意:Scene面板上方Toggle Tool Handle Position设置为Pivot时才可拖动tooltipPanel的pivot。 //tooltipPanel.gameObject.GetComponent<RectTransform>().anchoredPosition = itemSlot.gameObject.GetComponent<RectTransform>().anchoredPosition; string desc = GetItemDescription(item); tooltipPanel.UpdateContent(desc); isShowing = true; } }