unity实现鼠标经过时ui及物体的变色操作

 更新时间:2021年04月12日 09:28:00   作者:qq_41168330  
这篇文章主要介绍了unity实现鼠标经过时ui及物体的变色操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1、实现UI的变色

设置Highlighted Color为鼠标经过时变的颜色(Normal为常态,Pressed为按下时的颜色,Disabled为禁止的颜色)

2、通过代码实现物体的颜色改变

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cube_change : MonoBehaviour 
{    private Color CubeColor;
    private Texture CubeTexture;
    public GameObject objCube;
 // Use this for initialization
 void Start () 
       {             objCube = GameObject.Find("Cube");
             objCube.GetComponent<Renderer>().material.color = Color.blue;
 }
       public void OnMouseEnter()
       {
            objCube.GetComponent<Renderer>().material.color = Color.red;
       }
      public void OnMouseExit()
      {
            objCube.GetComponent<Renderer>().material.color = Color.blue;
       }
       // Update is called once per frame
      void Update ()
      { 
 }

//+++++++++++++++++++++++++++

unity5.0之后renderer就不能使用material,需要使用GetComponent来获取

GameObject objcub = GameObject.CreatePrimitive(PrimitiveType.Cube);  
objcub.AddComponent<Rigidbody>();  
objcub.name = "Cube";  
//设置color 使用这个来获取material  
objcub.GetComponent<Renderer>().material.color = Color.blue;  

补充:Unity 实现鼠标滑过UI时触发动画

在有些需求中会遇到,当鼠标滑过某个UI物体上方时,为了提醒用户该物体是可以交互时,我们需要添加一个动效和提示音。这样可以提高产品的体验感。

解决方案

1、给需要有动画的物体制作相应的Animation动画。(相同动效可以使用同一动画复用)

2、给需要有动画的物体添加脚本。脚本如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class OnBtnEnter : MonoBehaviour, IPointerEnterHandler,IPointerExitHandler
{
    //鼠标进入按钮触发音效和动画
    public void OnPointerEnter(PointerEventData eventData)
    {
      //  AudioManager.audioManager.PlayEnterAudio();//这里可以将播放触发提示音放在这里,没有可以提示音可以将该行注释掉
        if (gameObject.GetComponent<Animation>()!=null) {
            if ( gameObject.GetComponent<Animation>() .isPlaying) {
                return;
            }
            gameObject.GetComponent<Animation>().wrapMode = WrapMode.Loop;
            gameObject.GetComponent<Animation>().Play();
        }
    }
//鼠标离开时关闭动画
    public void OnPointerExit(PointerEventData eventData)
    {
        if ( gameObject.GetComponent<Animation>() != null )
        {
            if ( gameObject.GetComponent<Animation>().isPlaying )
            {
                gameObject.GetComponent<Animation>().wrapMode = WrapMode.Once;
                return;               
            }
            gameObject.GetComponent<Animation>().Stop();
        }
    }
}

补充:unity人物接近时触发事件或动画demo

定义物体GameObject o;

效果:当人物接近物体时,物体触发动画,比如位移

1.创建o的动画km和gm

2.创建空物体 Empty,大小稍微比o大一点,拖入o,用来接受触发判定,防止物体移动过后触发器跟着移动,勾选 is trigger

2.人物控制器

using System.Collections;
using System.Collections.Generic;
using UnityEngine; 
public class DoorController : MonoBehaviour
{
private Animation ani;
 
void Start() {
//获取子组件下的第一个组件,再获取子组件animation,
//如果是获取自身组件,直接GetComponent<XXX>()
ani = transform.GetChild(0).GetComponent<Animation>();
}
 
private void OnTriggerEnter(Collider other){
//当物体接触到时则播放animation中的km动画
ani.Play("km");
}
 
private void OnTriggerExit(Collider other){
//当物体接触到时则播放animation中的gm动画
ani.Play("gm");
}
 
void Update()
{
 
}
}

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

相关文章

  • Unity实现简单场景分层移动

    Unity实现简单场景分层移动

    这篇文章主要为大家详细介绍了Unity实现简单场景分层移动,分为前景、场景、背景等,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C#构造函数详解

    C#构造函数详解

    本文详细讲解了C#中的构造函数,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • winform使用委托和事件来完成两个窗体之间通信的实例

    winform使用委托和事件来完成两个窗体之间通信的实例

    这篇文章介绍了winform使用委托和事件来完成两个窗体之间通信的实例,有需要的朋友可以参考一下
    2013-09-09
  • C#数组排序的两种常用方法

    C#数组排序的两种常用方法

    这篇文章主要介绍了C#数组排序的两种常用方法,实例分析了C#操作数组的相关技巧,需要的朋友可以参考下
    2015-05-05
  • WPF中不规则窗体与WindowsFormsHost控件兼容问题的解决方法

    WPF中不规则窗体与WindowsFormsHost控件兼容问题的解决方法

    这篇文章主要介绍了WPF中不规则窗体与WindowsFormsHost控件兼容问题的解决方法,对比以往的解决方案,给出了一个具有普遍性的技巧,具有一定的借鉴价值,需要的朋友可以参考下
    2014-11-11
  • 浅谈C#单例模式的实现和性能对比

    浅谈C#单例模式的实现和性能对比

    这篇文章主要介绍了浅谈C#单例模式的实现和性能对比的相关资料,详细的介绍了6种实现方式,需要的朋友可以参考下
    2017-09-09
  • Dynamic和Var的区别及dynamic使用详解

    Dynamic和Var的区别及dynamic使用详解

    C#中的很多关键词用法比较容易混淆,var和dynamic就是其中一组,他们都可以申明动态类型的变量,但是本质上他们还是有不少区别的,下面通过本文给大家介绍Dynamic和Var的区别及如何正确使用dynamic,需要的朋友参考下
    2016-01-01
  • 算法证明每一位都相同十进制数不是完全平方数

    算法证明每一位都相同十进制数不是完全平方数

    这篇文章主要为大家介绍了算法证明每一位都相同十进制数不是完全平方数的过程论述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • C#获取指定年份第一个星期一具体日期的方法

    C#获取指定年份第一个星期一具体日期的方法

    这篇文章主要介绍了C#获取指定年份第一个星期一具体日期的方法,涉及C#日期与字符串操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C# Form自定义光标的简单实现

    C# Form自定义光标的简单实现

    这篇文章主要介绍了C# Form自定义光标的简单实现,有需要的朋友可以参考一下
    2014-01-01

最新评论