首页 > 其他分享 >Unity+Pico 响应射线事件

Unity+Pico 响应射线事件

时间:2023-01-10 15:01:07浏览次数:45  
标签:gameObject void 射线 Unity Pico XRSimple GetComponent 编写 public

1、添加组件

为了让场景内的物体能够响应射线的操作,需要在该物体上添加“XR Simple Interactable”组件,并对射线的交互事件编写脚本看,最常用的是“Hover”和“Select”事件。

2、编写脚本

在编写脚本时,需要引入UnityEngine.XR.Interaction.Toolkit命名空间,另外,从步骤1中的截图可以看到,不同事件的参数类型是不一样的,所以在编写回调函数的时候,需要严格按照响应事件的类型来进行编写。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;

public class TestRaycastEvent : MonoBehaviour
{
    /// <summary>
    /// 悬停进入
    /// </summary>
    /// <param name="args"></param>
    public void OnHoverEntered(HoverEnterEventArgs args)
    {
        gameObject.GetComponent<MeshRenderer>().material.color = Color.red;
    }

    /// <summary>
    /// 悬停退出
    /// </summary>
    /// <param name="args"></param>
    public void OnHoverExited(HoverExitEventArgs args)
    {
        gameObject.GetComponent<MeshRenderer>().material.color = Color.gray;
    }

    /// <summary>
    /// 选择进入
    /// </summary>
    /// <param name="args"></param>
    public void OnSelectEntered(SelectEnterEventArgs args)
    {
        gameObject.GetComponent<MeshRenderer>().material.color = Color.blue;
    }

    /// <summary>
    /// 选择退出
    /// </summary>
    /// <param name="args"></param>
    public void OnSelectExited(SelectExitEventArgs args)
    {
        gameObject.GetComponent<MeshRenderer>().material.color = Color.gray;
    }
}

3、注册回调函数

方式一:将编写的脚本添加到物体上,然后分别为“Hover Entered”、“Hover Exited”、“Select Entered”、“Select Exited”添加事件回调函数。

方式二:在脚本中找到“XR Simple Interactable”组件,为其添加事件回调函数。

private XRSimpleInteractable XRSimple;

void Start()
{
    XRSimple = gameObject.GetComponent<XRSimpleInteractable>();
    XRSimple.hoverEntered.AddListener(OnHoverEntered);
    XRSimple.hoverExited.AddListener(OnHoverExited);
    XRSimple.selectEntered.AddListener(OnSelectEntered);
    XRSimple.selectExited.AddListener(OnSelectExited);
}

 

标签:gameObject,void,射线,Unity,Pico,XRSimple,GetComponent,编写,public
From: https://www.cnblogs.com/zerotoinfinity/p/17040306.html

相关文章

  • UnityShader入门精要学习 第二章解惑
    困惑什么是OpenGL、DirectX如果开发者直接访问GPU是一件非常麻烦的事情,我们可能需要和各种寄存器、显存打交道。而图像编程接口再这些硬件的基础上实现了一层抽象。Ope......
  • Unity UI显示3D模型,控件与屏幕分辨率不同,导致在屏幕上鼠标点选模型,无法选中模型的问题
    ​UI界面显示3d模型,需要添加模型相机,通过中间RenderTexture来连接相机与界面的承载容器【RawImage】,根据项目在显示时,会对界面做适当调整,但是RawImage的宽和高会产生运行时......
  • Unity优化 - 总览
    基于Unity移动端游戏性能优化简谱-UWA整理而得,不定期更新。细节部分可移步UWA相关博文查阅优化总览Q&A图片放大看不清?A.图片右键->新标签页打开图片->放大B.右键......
  • 【Unity TIL】7. 手动刷新资源
    背景最近的项目,Unity版本是2020.3,电脑是mac,不清楚是哪个的原因,unity经常崩溃。代码敲着敲着就崩溃,关闭了运行时编译代码还是崩,后来就直接关了AutoRefrash,崩溃的问题......
  • [UnityAI]行为树的中断机制
    参考链接:https://www.cnblogs.com/01zxs/p/9863715.htmlhttps://blog.csdn.net/AcmHonor/article/details/123234763https://blog.csdn.net/u012632851/article/details......
  • Unity 2D入门基础教程
    http://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started,作者:ChristopherLaPollo,由Xiaoke翻译,如果用以前版本的Unity做2D游戏,虽然能做,但是......
  • 【Unity TIL】6. 如何判断两条线段是否相交
    AABB碰撞检测,也就是轴对齐碰撞检测,用平行于x,y轴的矩形表示物体。如何判断两个矩形是否相撞,可以通过分别判断x,y轴上的线段是否相交。假设线段分别为(s1,e1),(s2,e2),判......
  • Unity初始界面设计与人物移动代码
    初始界面设计的比较简洁,只有三个按键,开始游戏,设置,退出,一张背景。本来想整一个玩家自定义按键,但是觉得太麻烦且没必要。做到现在的感受就是,遇到不会的地方,网上的教程五花......
  • Unity URP管线如何实现屏幕后处理
    URP管线可扩展的自己的RendererFeature,这里写了一个屏幕后处理的demo,首先shader如下:1Shader"MyURP/Kerry/PostProcess/URPFeature_PostProcessDemo"2{3Pro......
  • Unity URP Shader之如何获取屏幕坐标
    获取屏幕坐标,可使用Unity提供的内置函数float4ComputeScreenPos(float4positionCS);来获取,该方法定义如下:float4ComputeScreenPos(float4positionCS){float......