unity 鼠标悬停事件操作

笔者在网上发现了,很多种方法 ,当然咱们找最好用的,也简单的 下面废话不多说直接上代码 我在啰嗦几句 第一这个脚本挂在需要相应的游戏体上 第二被挂游戏体必须带有collider, 第三仅仅制作完上面的两步 本应该没有问题,

笔者又发现一个问题 就是只有鼠标在物体的右上方才会很灵敏的相应到 在在左下方反而没什么反应 ,为此笔者在脚本上加上了一句

this.GetComponent<BoxCollider> ().size = new Vector3 (1.5f, 1.5f, 1.5f);

原来物体的size 为(1,1,1) 我的目的是加大物体本身的碰撞体 结果顺利的实现了

下面是完整

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shubiaoxuanting : MonoBehaviour{
    bool ischanger; //上移动 0为未上移 1为上移
    int move_up=0;
    void Start () { ischanger = false; //扩大碰撞体的尺寸 方便检测鼠标悬停
       this.GetComponent<BoxCollider> ().size = new Vector3 (1.5f, 1.5f, 1.5f);
       //给麻将初始状态的位置 this.transform.position = new Vector3
       (this.transform.position.x, 0, this.transform.position.z); }
        //鼠标在物体上面引起的动作 void OnMouseOver(){ ischanger = true;
       this.transform.position = new Vector3 (this.transform.position.x, 0.2f,
      this.transform.position.z); }
     // void OnMouseEnter(){
     // ischanger = true;
     // move_up = 1;
     // Debug.Log ("3333333");
     // // }
     //鼠标不再上面引起的动作
     void OnMouseExit(){
        ischanger = false;
        this.transform.position = new Vector3 (this.transform.position.x, 0, this.transform.position.z);
    }  /鼠标按下

 /鼠标按下
void OnMouseDown(){
 }
}
//鼠标松开
//鼠标松开
void OnMousePut(){}
void OnMousePut(){}
void Update () {
// if (ischanger){
    //Debug.Log ("33333");
    //this.transform.position = new Vector3 (this.transform.position.x, 0.2f, this.transform.position.z)
} else {
// this.transform.position = new Vector3 (this.transform.position.x, 0, this.transform.position.z);
// }}}

补充:Unity UGUI Button鼠标的悬停事件(利用重写unity中的button来实现)

我就废话不多说了,大家还是直接看代码吧~

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class LearnButton : Button
{
    ///
    /// 配合Unity的其他方法使用,就能达到你想要的效果!这里只是抛砖引玉,大家有更好的方法欢迎跟我交流!
    ///
    ///
    ///
    protected override void DoStateTransition(SelectionState state, bool instant)
    {

        base.DoStateTransition(state, instant);
        switch (state)
        {

            case SelectionState.Disabled:
                break;
            case SelectionState.Highlighted:
                Debug.Log("鼠标移到button上!");
                break;
            case SelectionState.Normal:
                Debug.Log("鼠标离开Button!");
                break;
            case SelectionState.Pressed:
                break;
            default:
                break;
        }
    }
}
 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • unity 实现摄像机绕某点旋转一周

    在Update函数中执行: if (turnAround) { playerCamera.RotateAround(transform.localPosition, transform.up, Time.deltaTime * rotateSpeed); degree += Time.deltaTime * rotateSpeed; if (degree >= 360) { turnAround = false; degree = 0; } } 补充:unity 摄像机围绕某个物体进行旋转放大缩

  • Unity3D 计时器的实现代码(三种写法总结)

    1.每帧检查 定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行相应功能代码,将此定时器重置,代码如下: public float timer = 1.0f; // Update is called once per frame void Update() { timer -= Time.deltaTime; if (timer <= 0) { Debug.Log(string.Format("Timer1 is

  • 解决unity rotate旋转物体 限制物体旋转角度的大坑

    今天可是遇到一个很简单的需求,但是却让我蛋疼了半天. 滑动屏幕控制物体旋转,但是旋转的角度要在-60到60之间. 乍一听这简直是小儿科啊. 判断一下角度不就行了.相比这四元数,欧拉角虽然有时会出现万向锁,但是简洁明了啊. 这不,我就中了一个简洁明了的大坑. 图中,如果你以为transform.eulerAngles =(-1,0,90) 那就大错特错了. 因为对于旋转来说.360度是一个循环.-1° 也可以算是就是359° 而且unity就是这样认为的.面板上虽然显示的是-1.但是他运行时是35

  • unity 如何使用LineRenderer 动态划线

    我就废话不多说了,大家还是直接看代码吧~ private LineRenderer line1; //画线 line1 = this.gameObject.AddComponent<LineRenderer>(); //只有设置了材质 setColor才有作用 line1.material = new Material(Shader.Find("Particles/Additive")); line1.SetVertexCount(2);//设置两点 line1.SetCo

  • Unity 通过LineRenderer绘制两点之间的直线操作

    我就废话不多说了,大家还是直接看代码吧~ private LineRenderer line; //画线 line = this.gameObject.AddComponent<LineRenderer>(); //只有设置了材质 setColor才有作用 line.material = new Material(Shader.Find("Particles/Additive")); line.SetVertexCount(2);//设置两点 line.SetColors(

  • Unity3d 使用Gizmos画一个圆圈

    Gizmos是场景视图里的一个可视化调试工具. 在做项目过程中.我们常常会用到它,比如:绘制一条射线等. Unity3D 4.2版本号截至.眼下仅仅提供了绘制射线,线段,网格球体,实体球体,网格立方体,实体立方体,图标.GUI纹理,以及摄像机线框. 假设须要绘制一个圆环还须要自己写代码 using UnityEngine; using System; public class HeGizmosCircle : MonoBehaviour { public Transform m_Transfor

  • unity AudioSource播放完声音后要执行的函数或条件操作

    将脚本挂在要判断声音是否播放完毕的物体上 using System.Collections; using UnityEngine; using UnityEngine.Events; [RequireComponent(typeof(AudioSource))] public class AudioManager : MonoBehaviour { public static AudioManager instence = null; private AudioSource _audio; vo

  • 基于Unity Line Renderer组件的常用属性说明

    Line Renderer(线条渲染器) 这个组件可以在场景中渲染出"线",比如说:做出手枪瞄准敌人时有红外线的射击辅助线,可以用LineRenderer来完成 不过这个组件对新手还是有些不友好的,看到下面的属性就头大,不过掌握了基本用法之后就没什么难度了,下面讲解一下属性(我用的Unity是2018.3.8版) 首先看一下Positions属性这是画线的核心 俩点(或多个点)连一线,一个物体只能带有一个LineRenderer组件,一个LineRenderer组件只能渲染一条连续的线

  • Unity 实现给物体替换材质球

    下面先看一下效果图 using UnityEngine; using System.Collections; public class textMesh : MonoBehaviour { public Material meshRender = null; public Renderer rend; public Texture texture; void Start () { //把名字为bangongshi4 的材质球放到Resources文件夹下 meshRender = Resourc

  • unity 鼠标悬停事件操作

    笔者在网上发现了,很多种方法 ,当然咱们找最好用的,也简单的 下面废话不多说直接上代码 我在啰嗦几句 第一这个脚本挂在需要相应的游戏体上 第二被挂游戏体必须带有collider, 第三仅仅制作完上面的两步 本应该没有问题, 笔者又发现一个问题 就是只有鼠标在物体的右上方才会很灵敏的相应到 在在左下方反而没什么反应 ,为此笔者在脚本上加上了一句 this.GetComponent<BoxCollider> ().size = new Vector3 (1.5f, 1.5f, 1.5f); 原来物

  • vue鼠标悬停事件实例详解

    具体代码如下所述: v-bind:title="message" <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue实例化</title> </head> <script src="https://cdn.jsdelivr.net/npm/vue/dis

  • Python wxpython模块响应鼠标拖动事件操作示例

    本文实例讲述了Python wxpython模块响应鼠标拖动事件操作.分享给大家供大家参考,具体如下: wxpython鼠标拖动事件小案例: #coding:UTF-8 import wx app = wx.App() def dragEVT(event): if event.ButtonDown(): panel1.SetPosition(event.GetPosition()) elif event.Dragging(): panel1.SetPosition(event.GetPositi

  • JavaScript鼠标悬停事件用法解析

    鼠标悬停事件是当鼠标的光标与其名称表示的元素重叠时触发的事件,本篇文章我们就来详细介绍一下JavaScript中鼠标悬停事件的用法. 我们先来看一下什么是onmouseover? 鼠标悬停的活动是"事件",而onmouseover是事件处理程序. 事件处理程序是指定事件发生时要执行的进程所必需的. 所以onmouseover是一个事件处理程序,负责当鼠标的光标悬停在某个元素上时完成的处理. 什么是onmouseleave? 除了onmouseover之外,还有onmouseleave.

  • Python+Selenium键盘鼠标模拟事件操作详解

    目录 元素的基本操作 鼠标键盘模拟事件操作 利用 Keys 模块模拟键盘操作事件 利用 Action 类模拟鼠标操作事件 当我们定位到具体的一个元素的时候就可以对这个元素进行具体的操作,比如之前章节所执行的 click 操作.这是最简单的操作,webdriver 还有其他的操作.比如元素的基本操作(点击.输入.清除),还有一些高级操作如鼠标键盘模拟事件.弹出框处理.多页面切换等… 这些都是需要我们了解的内容,也是在做自动化测试的时候经常遇到的一些基本场景.今天这一章节,我们就先来学习一下元素的基

  • vue鼠标悬停事件监听实现方法

    目录 前言 情景描述 解决方法 总结 前言 开发框架为 vue2.x 情景描述 需求是这样的:页面在鼠标悬停(不动)n秒之后,页面进行相应的事件. 比如在我的需求下,是鼠标悬停15秒之后,页面上三个数据弹窗轮询展示. 解决方法 我的思路中 涉及到了三个变量 data(){ return { polling: null, timeCount: 0, judgeTimer: null, } } polling: 是 轮询的时候的一个计时器timeCount: 是 判断鼠标是否移动的一个控制变量jud

  • Jquery基础之事件操作详解

    事件是用户操作时页面或页面加载时引发的用来完成javascript和HTML之间的交互操作.常见的元素点击事件.鼠标事件.键盘输入事件等,较传Javascript 相比JQuery增加并扩展了基本的事件处理机制,极大的增强了事件处理的能力. 一.DOM加载事件 页面加载完毕后浏览器会通过javascript为Dom元素加载事件,使用Javascript时候使用的是window.onload方法,而Jquery使用的是$(document).ready()方法,下表 展示两个事件的异同. wind

  • js设置鼠标悬停改变背景色实现详解

    看了网上那么多的js鼠标悬停时事件,大多数的,说了那么多话,也没解决什么问题,现在直接贴上代码,以供参考 html: <div id="sign">this is test!</div> css: <style type="text/css"> .out{background-color: gray;} .over{background-color: red;} .down{background-color: yellow; }

  • Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)

    本文实例总结了Javascript DOM事件操作.分享给大家供大家参考,具体如下: 使用JavaScript可以对HTML页面上的各种事件进行监听,如鼠标点击/释放,鼠标悬停/离开,等等. 效果图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &l

  • echarts 使用formatter 修改鼠标悬浮事件信息操作

    formatter 一般用于格式化鼠标悬浮时间的信息,如果你的数据是JSON数组格式,那么不必和我这样一一判断扇形图的 ticket 值,使用 formatter 的 callback 时间即可自行对应 formatter: function (params, ticket, callback) { console.log(params); console.log(ticket); var str = '明细:<br/>'; if(ticket == 'item_操作概况_0'){ for(v

随机推荐