您当前的位置: 首页 >  unity

云小川

暂无认证

  • 3浏览

    0关注

    78博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

unity 3D物体添加 点击事件

云小川 发布时间:2022-07-22 10:47:37 ,浏览量:3

 void Awake()
        {
            Instance = this;

            AddEventTrigger(YangFangTu, OnYangFangTu);
            AddEventTrigger(HongGanXiang, OnHongGanXiang);
        }

        /// 
        /// 添加 物体点击 事件
        /// 
        /// 
        /// 
        public void AddEventTrigger(GameObject obj, UnityAction action_)
        {
            if (obj.transform.GetComponent()==null)
            {
                obj.AddComponent();
            }
            EventTrigger trigger = obj.transform.GetComponent();
            EventTrigger.Entry entry = new EventTrigger.Entry();
            entry.eventID = EventTriggerType.PointerClick;
            entry.callback.AddListener(action_);
            trigger.triggers.Clear();
            trigger.triggers.Add(entry);
        }

方法一:物体 挂在 EventTrigger  选择 PointerClick  注册响应方法

相机 必须挂在 PhysicsRaycaster

场景中必须有:EventSystem(一般创建UI自动添加的)

物体 必须有 Collider

void Awake()
        {
            Instance = this;

            EventTrigger trigger = YangFangTu.transform.GetComponent();
            EventTrigger.Entry entry = new EventTrigger.Entry();
            entry.eventID = EventTriggerType.PointerClick;
            entry.callback.AddListener(OnYangFangTu);
            trigger.triggers.Clear();
            trigger.triggers.Add(entry);

        }

        public void OnYangFangTu(BaseEventData data = null)
        {
            
        }

简单粗暴版(相机 必须挂在 PhysicsRaycaster)

using HighlightPlus;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;


public class ObjClickEvent : MonoBehaviour
{
    public GameObject[] cube1; //3D物体集合

    private void Start()
    {
        //为3D物体添加点击事件
        for (int i = 0; i < cube1.Length; i++)
        {
            AddObjectClickEvent(cube1[i]);
        }
    }
    public void OnClick()
    {
        Debug.Log("OnClick");
        transform.GetComponent().highlighted = false;
    }

    public void AddObjectClickEvent(GameObject itemObject)
    {
        var box = itemObject.GetComponent();
        if (box == null)
        {
            box = itemObject.AddComponent();
        }
        var item = itemObject.GetComponent();
        if (item == null)
        {
            item = itemObject.AddComponent();
        }

        EventTrigger trigger = itemObject.GetComponent();
        if (trigger == null)
        {
            trigger = itemObject.AddComponent();
        }
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = EventTriggerType.PointerClick;
        entry.callback.AddListener(item.OnClickItem);
        trigger.triggers.Clear();
        trigger.triggers.Add(entry);
    }
}
 public void OnClickItem(UnityEngine.EventSystems.BaseEventData data = null)
    {
        //点击对应事件
       // Debug.Log("点击物体:"+ Name_);
        if (bo)
        {
            this.transform.GetComponent().highlighted = false;
            UIChaJuZhiLing.Instance.OnZhiLing(Name_);
        }
    }

关注
打赏
1663746399
查看更多评论
立即登录/注册

微信扫码登录

0.1953s