unity ui中使用onmouseover

unity ui中鼠标移进或者移出的触发方式与2d、3d的不同,2d、3d物体使用的是onmouseover,ui使用的是OnPointerEnter。需要实现以下两个接口。

public class TrackMouse: MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    // Called when the pointer enters our GUI component.
    // Start tracking the mouse
    public void OnPointerEnter( PointerEventData eventData )
    {
        StartCoroutine( "TrackPointer" );
    }

    // Called when the pointer exits our GUI component.
    // Stop tracking the mouse
    public void OnPointerExit( PointerEventData eventData )
    {
        StopCoroutine( "TrackPointer" );
    }

    IEnumerator TrackPointer()
    {
        var ray = GetComponentInParent<GraphicRaycaster>();
        var input = FindObjectOfType<StandaloneInputModule>();

        if( ray != null && input != null )
        {
            while( Application.isPlaying )
            {
                Vector2 localPos; // Mouse position
                RectTransformUtility.ScreenPointToLocalPointInRectangle( transform as RectTransform, Input.mousePosition, ray.eventCamera, out localPos );

                // local pos is the mouse position.

                yield return 0;
            }
        }
        else
            UnityEngine.Debug.LogWarning( "Could not find GraphicRaycaster and/or StandaloneInputModule" );
    }
}

  原文出自unity官方论坛,详情可以查看https://forum.unity.com/threads/problem-with-onmousedown-onmouseover-in-ui.326096/

原文地址:https://www.cnblogs.com/zhoushiya/p/12208548.html

时间: 2024-08-27 06:38:25

unity ui中使用onmouseover的相关文章

全面理解 Unity UI 系统

[狗刨学习网] 随着 Unity 4.6 发布,新 UI 系统终于与大家见面了. RectTransform Unity UI 系统使用 RectTransform 实现基本的布局和层次控制.RectTransform 继承于 Transform,所以 Transform 的所有特征 RectTransform 同样拥有.在 Transform 基础上,RectTransform 增加了 轴心(pivot).锚点(实际上是用 anchorMin.anchorMax 两个点定义的矩形区域).和 尺

Unity 3D中不得不说的yield协程与消息传递

1. 协程 在Unity 3D中,我们刚开始写脚本的时候肯定会遇到类似下面这样的需求:每隔3秒发射一个烟花.怪物死亡后20秒再复活之类的.刚开始的时候喜欢把这些东西都塞到Update里面去,就像下面这样写. 1 float nowTime = 3.0f; 2 bool isDead = true; 3 float deadTime = 20.0f; 4 5 void startFireworks() 6 { 7 // 放烟花 8 } 9 10 void revival() 11 { 12 //

Unity UI大小动态设置(Resize Unity UI RectTransform)

我们在开发过程中发现,要调整Unity UI元素的大小,RectTransform提供了sizeDelta属性可以用来动态修改RectTransform的大小,但同时我们也google到另外一个修改RectTransform大小的方法,方法如下: 1 public static void SetRectTransformSize(RectTransform trans, Vector2 newSize) 2 { 3 Vector2 oldSize = trans.rect.size; 4 Vec

unity UI事件

由于工作需要到持续按键,所以了解了一下unity UI事件,本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_source=tuicool&utm_medium=referral,并对相关问题进行解释. 我们最常用到的就是unity的button组件,其实button组件所响应的事件为unity众多ui事件中的PointerClick事件,unity的ui事件如下图所示: 实现响应事件有以下三种: (一)在相关UI控件上挂脚本,脚

(转)Unity 3D中的无限大地形的生成和调度

随着硬件性能的不断提高,游戏的地形变得越来越大也更加细节化了(增加了更有特点的地形,大片的草地,还添加了树木,水等物体.在过去几年时间里,地形已经逐渐增加到长达数百平方英里,特别是在RPG游戏中. 在本教程中,我将向您展示如何生成需要超级长的时间才能浏览完的3D地形.我们将使用Unity3D引擎和C#语言编写代码.需要一些基本的编程知识--尽管完整的源代码可以免费下载(见下文),但在本文中,我只会解释最重要的部分并说明示例的代码. 教程开始 最流行的观看3D地形的方式就是应用某种形式的高度图.高

[译]如何在Unity编辑器中添加你自己的工具

在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作出的任何动作,这些全部都是用编辑器脚本来实现的. 这篇教程假设你已经熟悉Unity的基本工作流程.如果你知道如何在编辑器中创建物体.预设.场景并且知道如何移动它们,知道如何添加组件,那么你可以开始本教程的学习了. 最终结果预览 让我们看一下我们做出的最终结果是什么样子: 如你所见,我们会创建一个编辑

jquery ui中的dialog,官网上经典的例子

jquery ui中的dialog,官网上经典的例子 jquery ui中dialog和easy ui中的dialog很像,但是最近用到的时候全然没有印象,一段时间不用就忘记了,这篇随笔介绍一下这个控件. 1.实例 官网源代码中给出了一些实例,首先看看实例是什么样子的. a.默认功能 也是最简单的应用,也就是打开一个对话框,代码如下 <!doctype html> <html lang="en"> <head> <meta charset=&q

kendo ui中grid页面参数问题(1)

kendo ui 中grid 算是最长用的控件之一,当使用分页效果时,我们要传递分页参数与自己定义的参数如: 1 var dataSource = new kendo.data.DataSource({ 2 transport: { 3 read : { 4 url : "对应后台路径", 5 contentType : "application/json", 6 type : "POST", 7 dataType : "json&qu

IOS开发之UI中开启动画的方式

UI中开启动画的方式 开启动画是UIImageView中的功能属性  有渐进式动画和序列帧动画 渐进式动画包括头尾式动画和block式动画 序列帧动画即为在极短时间内播放一组连续的图片所产生的动画效果 首先需要创建一个UIImageView对象为imageView1.序列帧动画基本步骤 将所要播放的图片数组赋值给UIImageView对象的animationImages属性,它就是一个数组对象 imageView.animationImages=array 设置动画的执行次数(animation