精华内容
下载资源
问答
  • 此篇博客将通过两种方式实现场景中物体点击事件。 准备工作: 1、给场景添加EventSystem:选择Hierarchy窗口-》Create-》UI-》Event System 2、给摄像机添加Physics Raycaster脚本(系统自带的):选中Main ...

    此篇博客将通过两种方式实现场景中物体的点击事件。

    准备工作:

    1、给场景添加EventSystem:选择Hierarchy窗口-》Create-》UI-》Event System

    2、给摄像机添加Physics Raycaster脚本(系统自带的):选中Main Camera-》Add Component-》Physics Raycaster

    3、给需要实现点击的物体添加Collider(Cube默认有Collider就不需要此步骤,如果是公司模型没有就需要添加)。

    点击事件的准备工作到此结束,接下通过两种方式实现点击事件

    方式一:实现接口IPointerClickHandler

    1、给需要点击的物体添加自己编写的脚本"TestClick.cs"

    脚本代码如下:

    public class TestClick : MonoBehaviour, IPointerClickHandler
    {
        private string TAG = "TestClick_";
    
        public void OnPointerClick(PointerEventData eventData)
        {
            Debug.Log(TAG + "Click Cube ");
    
        }
    }

     方式二:通过物体的名字或者Tag

    1、添加一个单独层挂载编写的脚本“ClickRayCastHitControl.cs”

          

    ClickRayCastHitControl脚本代码如下:

    using UnityEngine;
    
    public class ClickRayCastHitControl : MonoBehaviour
    {
        private string TAG = "ClickRayCastHitControl_";
        Ray ray;
        RaycastHit hit;
        GameObject obj;
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                Debug.Log(TAG+"点击鼠标左键");
                ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                if (Physics.Raycast(ray, out hit))
                {
                    Debug.Log(hit.collider.gameObject.name);
                    obj = hit.collider.gameObject;
                    Debug.Log(TAG+"点中: name = " + obj.name+ "点中: tag = " + obj.tag);
                    //通过名字
                    if (obj.name.Equals("Cube"))
                    {
                        Debug.Log("点中" + obj.name);
                    }
                    //通过标签
                    if (obj.tag == "CubeRed")
                    {
                        Debug.Log("点中" + obj.name);
                    }
                }
            }
        }
    }

    2、给物体添加tag,选中物体Cube点击Inspector中Tag选项,在下拉列表中选择所需要的tag,如果没有则点击“Add Tag..."创建一个新的tag

    创建tag:

    3、保存项目后运行,并在场景中用鼠标随意点击:

     

    展开全文
  • Unity3D物体添加点击事件脚本,Unity3D物体添加点击事件脚本。实测,真实可用
  • unity 3D物体使用EventSystem响应事件

    千次阅读 2018-08-21 10:05:13
    3.创建一个Cube(或者其他什么随便你,但是确保物体上有collion组件,因为没有碰撞器无法检测射线),作为事件触发的3d物体 4.在3D物体上(你创建的那个cube或者什么)挂上EventTrigger,然后指定怎么触发,指定要...

    在ugui中创建一个canvas 之后会自动创建一个EventSystem,用来处理UI上的时间响应。(可以通过UI>EventSystem创建EventSystem)

    EventSystem

    有三个组件:EventSystem、StandaloneInputModule、TouchInputModule,后面两个组件都继承自BaseInputModule。

    EventSystem组件主要负责处理输入、射线投射以及发送事件。一个场景中只能有一个EventSystem组件,并且需要BaseInputModule类型组件的协助才能工作。EventSystem在一开始的时候会把自己所属对象下的BaseInputModule类型组件加到一个内部列表,并且在每个Update周期通过接口UpdateModules接口调用这些基本输入模块的UpdateModule接口,然后BaseInputModule会在UpdateModule接口中将自己的状态修改成’Updated’,之后BaseInputModule的Process接口才会被调用。

    BaseInputModule是一个基类模块,负责发送输入事件(点击、拖拽、选中等)到具体对象。EventSystem下的所有输入模块都必须继承自BaseInputModule组件。StandaloneInputModule和TouchInputModule组件是系统提供的标准输入模块和触摸输入模块,我们可以通过继承BaseInputModule实现自己的输入模块。
    除了以上两个组件,还有一个很重要的组件通过EventSystem对象我们看不到,它是BaseRaycaster组件。BaseRaycaster也是一个基类,前面说的输入模块要检测到鼠标事件必须有射线投射组件才能确定目标对象。系统实现的射线投射类组件有PhysicsRaycaster, Physics2DRaycaster, GraphicRaycaster。这个模块也是可以自己继承BaseRaycaster实现个性化定制。
    总的来说,EventSystem负责管理,BaseInputModule负责输入,BaseRaycaster负责确定目标对象,目标对象负责接收事件并处理,然后一个完整的事件系统就有.

    上边是从别的地方复制的…    
    下边是场景中的3D物体怎么用EventSystem响应事件
    1.首先确保场景中有一个EventSystem,添加方式最开始有提到。
    2.因为3d物体上没有canvas上边的GraphicRaycaster所以要Main Camera上添加Physics Raycaster,就相当于UI上的GraphicRaycaster
    3.创建一个Cube(或者其他什么随便你,但是确保物体上有collion组件,因为没有碰撞器无法检测射线),作为事件触发的3d物体
    4.在3D物体上(你创建的那个cube或者什么)挂上EventTrigger,然后指定怎么触发,指定要触发的方法,如下
    这里写图片描述

    这里写图片描述

    5.在要触发事件的物体上(你创建的Cube或者其他什么),挂上如下脚本
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.EventSystems;

    public class CubeClickTest : MonoBehaviour//, IPointerDownHandler
    {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log(Input.mousePosition);
        }
    }
    public void PointDownHandler()//在cube上挂上EventTrigger并指定该方法
     {
        transform.position += new Vector3(1,1,1);
     }
    
    //public void OnPointerDown(PointerEventData eventData)//实现接口调用该方法
    //{
       // Debug.Log(eventData.button);//这里如果用鼠标左键触发就打印life,右键触发就打印right
       // Debug.Log(eventData);//你可以通过eventData获取更多信息,这里是打印鼠标的位置(跟Input.mousePosition输出结果是一样的)以及delta(0.0,0.0),不知道是啥...
       // Debug.Log(Input.mousePosition);
       //Debug.Log(eventData.pointerPressRaycast.gameObject.name);
       // Debug.Log("press");
    //}
    

    }

    当然也可以不挂EventTrigger,直接实现接口,返回第三步。

     4.引用接口(你想用什么方式触发就实现对应的接口,这里以鼠标按下为例),要引用UnityEngine.EventSystems然后实现接口方法。

    5.同样挂上上边脚本,将脚本中红色部分的注释取消,cube移除EventTrigger组件,然后就可以了。

    转载原地址为:https://www.cnblogs.com/lanrenqilanming/p/7001983.html

    展开全文
  • unity3d实现3D物体上的点击事件

    千次阅读 2017-10-10 10:33:04
    unity3d实现3D物体上的点击事件

    在update中检测

    首先要在摄像机中添加组件Physics Raycaster

    public void Update(){
    if(Input.getMouseButtonUp(0)){
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit rayhit;
    if(Physics.Raycast(ray,out rayhit)){
    debug.log(rayhit.collider.gamaObject.name);
    
    }
    }


     

    展开全文
  • 首先得加上EventSystem 事件系统然后再在相机上加上Physics Racaster组件在相关的脚本上重写需要的事件(注意需要引用using UnityEngine....https://docs.unity3d.com/ScriptReference/EventSystems.IDropHandler.html

    首先得加上EventSystem 事件系统

    这里写图片描述

    然后再在相机上加上Physics Racaster组件

    这里写图片描述

    在相关的脚本上重写需要的事件(注意需要引用using UnityEngine.EventSystems; )

    这里写图片描述
    这类事件有很多
    https://docs.unity3d.com/ScriptReference/EventSystems.IDropHandler.html

    展开全文
  • Unity3D3D物体添加点击事件

    千次阅读 2018-10-18 17:05:09
    //为3D物体添加点击事件 for (int i = 0; i ; i++) { AddObjectClickEvent(cube1[i]); } } public void AddObjectClickEvent(GameObject itemObject) { var box = itemObject.GetComponent(); if (box == ...
  • Unity3D - 场景中3D物体添加鼠标点击事件 鼠标点击3D物体触发,Unity从本质上来说有两种:一种是通过事件(event)触发,一种是通过射线(ray)判断穿过的物体触发。这两种触发的原理是不同的,不论哪种触发都必须...
  • Unity3D 物体移动方法总结 ** 1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position。 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,...
  • Unity3D鼠标点击物体产生事件

    千次阅读 2016-09-19 22:20:00
    如果需要处理鼠标点击物体的情况, 可以当数据接触物体时,鼠标手势改变,然后点击后和NPC产生对话等: using UnityEngine; using System.Collections; public class example : MonoBehaviour { void ...
  • Unity3D物体的使用

    2020-06-22 15:10:42
    使用Unity3D来设计游戏全部文章 见使用Unity3D来设计游戏 天知道我是多么想用可爱的美少女作为素材的,但是太贵了买不起啊(虽然淘宝有盗版的)。 没办法,选个人物,emmmm,免费的基本上都有点歪瓜裂枣,没办法,...
  • 程序版本 :unity 5.5.0f3 3D物体在2D平面中移动旋转
  • Unity 通过UGUI实现3D物体点击事件

    千次阅读 2018-03-24 14:17:06
    1.给主摄像机添加Physics Raycaster脚本;...写脚本,实现IPointerClickHandler接口,将脚本挂载到被点击物体上;using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityE...
  • Unity3D物体添加点击事件脚本

    万次阅读 2018-03-14 18:54:23
    本段主要是为了学习记录,在Unity中怎么给一个BoxCollider添加事件脚本,以点击事件为例,并且,添加物体事件一些必要的前提。 首先是射线检测部分,如下类 AddEeventMonoTest.cs, 其中初始化阶段准备了 必要的一些...
  • Unity3D物体添加点击事件

    千次阅读 2020-07-24 16:04:44
    简单十步曲,按步骤操作可实现对应功能. ...5.点击EventSystem物体上新增组件EventSystem下边的Button —>Add Default… ,会发现在下方新增一个组件Standalone Input Module. 6.关键的一步来了.给即将要赋
  • Unity3D物体添加点击事件

    千次阅读 2020-08-16 12:48:07
    物体挂载C#脚本,将需要触发的方法写进脚本。 例如: public void OnClick() { DbConsole.CreateTable_Card(); } 为物体添加组件:Event Trigger,function选择脚本内的方法,Object选择物体
  • 社区 > 控制renderQueue解决NGUI与Unity3D物体渲染顺序问题 控制renderQueue解决NGUI与Unity3D物体渲染顺序问题 ...
  • Unity3D 鼠标双击事件

    2020-10-21 14:31:47
    Unity3D 鼠标双击事件 Unity3D 鼠标双击事件总结了几种,特来记录一下! 一、计时Time.realtimeSinceStartup,从开始运行到首次点击的时间、跟、开始运行到下一次点击的时间、的时间差。 private float time; ...
  • unity3D物体跟着鼠标移动

    千次阅读 2019-09-19 09:38:28
    原本以为只要将鼠标坐标转为世界坐标,然后将转换后的坐标赋给物体就能实现。经多次尝试发现,鼠标转成世界坐标之后缺一Z轴,所以想出的解决方案是先将要跟随的物体的世界坐标转成屏幕坐标,再把该屏幕坐标的Z轴赋给...
  • Unity3d 物体跟随鼠标移动

    千次阅读 2014-10-24 14:41:26
    思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动。 如果你看到这的话,最好先别往下看,自己按着这个思路试做一下,实在不行再看看我的哈~~~~ ...
  • unity3d界面左上角可以看到红色下划线的五个图标(下面用图标1到5数字表示),分别对应不同功能,这些功能操作物体很常用。下面用cube物体的操作来演示这几个功能。 1.按Q键(或者点击图标1),场景的物体无法...
  • unity3D 点击物体飞出

    2015-03-17 10:54:27
    unity 场景中 点击其中物体 可以飞出到摄像机前面详细观察。
  • Unity 3D物体添加双击触发事件的方法@TOC /************************************************************ FileName: DoubleClickListener.cs Author:菜菜 Version :1.0 Date: 2018-10-29 Description:双击触发...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,044
精华内容 4,017
关键字:

unity3d物体点击事件