Version: 2018.4
public void Raycast (EventSystems.PointerEventData eventData, List<RaycastResult> resultAppendList);

説明

Determines if the cursor is over a Graphics element in the Scene. See: BaseRaycaster.

Use this to determine if the cursor is over a Graphics element in the Scene. It accepts the mouse pointer event data as a parameter. Make sure you have an EventSystem in your hierarchy. If you don’t, go to Create >UI >Event System. Some common uses of this include: setting up your own custom UI system; telling when you hover over Text or Images which aren’t automatically selectable; UI click and drag operations; and many more.

//Attach this script to your Canvas GameObject.
//Also attach a GraphicsRaycaster component to your canvas by clicking the Add Component button in the Inspector window.
//Also make sure you have an EventSystem in your hierarchy.

using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections.Generic;

public class GraphicRaycasterRaycasterExample : MonoBehaviour { GraphicRaycaster m_Raycaster; PointerEventData m_PointerEventData; EventSystem m_EventSystem;

void Start() { //Fetch the Raycaster from the GameObject (the Canvas) m_Raycaster = GetComponent<GraphicRaycaster>(); //Fetch the Event System from the Scene m_EventSystem = GetComponent<EventSystem>(); }

void Update() { //Check if the left Mouse button is clicked if (Input.GetKey(KeyCode.Mouse0)) { //Set up the new Pointer Event m_PointerEventData = new PointerEventData(m_EventSystem); //Set the Pointer Event Position to that of the mouse position m_PointerEventData.position = Input.mousePosition;

//Create a list of Raycast Results List<RaycastResult> results = new List<RaycastResult>();

//Raycast using the Graphics Raycaster and mouse click position m_Raycaster.Raycast(m_PointerEventData, results);

//For every result returned, output the name of the GameObject on the Canvas hit by the Ray foreach (RaycastResult result in results) { Debug.Log("Hit " + result.gameObject.name); } } } }