zoukankan      html  css  js  c++  java
  • unity中利用layer的方式来获取指定层级上的对象,例如UI层的某个对象

    1.按下鼠标左键,检测鼠标点击到的UI对象

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;
    
    public class CustomBookMouseController : MonoBehaviour {
    
        public LayerMask m_layerMask = 1;
    
        public float m_dis = 1000;
    
        public Camera m_rayCamera;
        
        
        // Update is called once per frame
        void Update () {
            if (Input.GetMouseButtonDown(0))
            {
                if (EventSystem.current.IsPointerOverGameObject())
                {
                    PointerEventData pointerData = new PointerEventData(EventSystem.current);
                    pointerData.position = Input.mousePosition;
    
                    List<RaycastResult> results = new List<RaycastResult>();
                    EventSystem.current.RaycastAll(pointerData, results);
                    for (int i = 0; i < results.Count; i++)
                    {
                        if (results[i].gameObject.layer==LayerMask.NameToLayer("BookUI"))
                        {
                            Debug.Log(results[i].gameObject.name);
                        }
                        Debug.Log(results[i].gameObject);
                    }
                }
    
            }
        }
    }

    2.物理射线的应用 需要在检测对象上添加碰撞器组件

                var ray = m_rayCamera.ScreenPointToRay(Input.mousePosition);
                RaycastHit hitInfo;
                if (Physics.Raycast(ray, out hitInfo, m_dis, m_layerMask))
                {
                    Debug.Log(hitInfo.collider.gameObject.name);
                }
  • 相关阅读:
    摩根斯坦利面试
    Interview Preparation IV
    Interview Preparation III
    Interview Preparation II
    Interview Preparation I
    ASCII Characters
    Java Serialization
    贝莱德伦敦分部面试
    SVG基本知识
    前端知识整理(四)【HTTP相关】
  • 原文地址:https://www.cnblogs.com/nanyang0310/p/9145057.html
Copyright © 2011-2022 走看看