unity EventTrigger在gameobjcet上点击失效问题

我有上述元素,由于有点久了忘了他怎么制造出来了的,这个元素比较特别,是一个Sprite,并非UI元素。使用EventTrigger绑定事件监听鼠标无任何反应,百思不得其解。代码怎么看都没问题(使用了StrangeIoc框架)如下:

using GameLogic.signal;
using strange.extensions.mediation.impl;
using UnityEngine;
using UnityEngine.EventSystems;

namespace GameLogic.view
{
    public class UI_GameObjSelect : View
    {
        [Inject]
        public GameObjClickSignal GameObjClick { get; set; }
        internal void init()
        {
            //调用
            AddEventTrigger(this.transform, EventTriggerType.PointerDown, DropFun);
        }

        /// <summary>
        /// event事件绑定的方法
        /// </summary>
        /// <param name="insObject">事件物体</param>
        /// <param name="eventType">事件类型</param>
        /// <param name="myFunction">事件需要的回调方法</param>
        public void AddEventTrigger(Transform insObject, EventTriggerType eventType, UnityEngine.Events.UnityAction<BaseEventData> myFunction)//泛型委托
        {
            EventTrigger trigger = insObject.GetComponent<EventTrigger>();
            if (trigger == null)
            {
                trigger = insObject.transform.gameObject.AddComponent<EventTrigger>();
            }
            EventTrigger.Entry entry = new EventTrigger.Entry();
            entry.eventID = eventType;
            entry.callback.AddListener(myFunction);
            trigger.triggers.Add(entry);
        }
        //回调函数
        public void DropFun(BaseEventData data)
        {
            PointerEventData thisEvent = (PointerEventData)data;
            string strClickType = "";
            if (thisEvent.button == PointerEventData.InputButton.Left)
            {
                strClickType = "Left";
            }
            else if (thisEvent.button == PointerEventData.InputButton.Right)
            {
                strClickType = "Right";
            }

            //发送消息
             GameObjClick.Dispatch(strClickType, this.transform.name);
        }
    }        
}

最终,给gameobjcet元素增加了一个UI的属性

我硬给它塞了一个Image属性,把Material设置了一个透明效果。并且把元素都放置到Canvas内,问题就解决了。

原理我没去深究,但是从结果来看,需要注意以下两点

1.EventTrigger的gameobjcet对象是否为一个UI元素

2.这个对象是否在相机内,在相机外有可能不能被点击到

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值