一、先介绍一下Inspector面板里的东西

Button里一共有两个脚本。

Image(Script)

  • 这个跟Image里是一样的

Button(Script)

  • Interactable(交互):Button是否可以点击的开关,关闭进入Disabled状态

  • Transition(变化):设置Button按下,弹起,不可用的显示状态

1.None(空):不管怎么样都只使用Image(Script)里设置的图片的

2.Color Tint(着色):在Image(Script)里设置的图片基础上进行着色

  • Target Graphic(目标图形):可选择任意Graphic对象进行着色
  • Normal Color(正常状态颜色)
  • Highlighted Color(突出状态颜色):鼠标悬停或者选择状态的颜色
  • Pressed Color(按下状态颜色)
  • Disabled Color(不可用状态颜色)
  • Color Multiplier(增加颜色):这个不知道有什么用,emmmm 保持默认就好了
  • Fade Duration(消失时间):其实就是着色时间与褪色时间

3.Sprite Swap(图片切换):选项跟Color Tint中的相似,区别在于设置的是图片

4.Animation(执行动画)

  • Navigation(导航):选中该按钮后可以用方向键比如WASD以及上下左右按键选择其他按钮,前提是导航目标按钮也开启了导航功能,可通过回车或者空格点击按钮响应点击事件

1.None(关闭)

2.Horizontal(水平导航):左右能导航到按钮

3.Automatic(自动导航):上下左右按键都能导航到按钮

4.Vertical(垂直导航):上下能导航到按钮

5.Explicit(指定导航):指定上下左右按键能导航到那个按钮上

  • Visualize(可视化):把按键能够导航到的路径可视化,高亮的黄色箭头为当前按钮可导航到的目标(目前只看到该可视化,可能还有其他?)

二、Button点击事件

点击事件很简单,直接在Button里能找到一个On Click()的地方,选择Editor And Runtime。

然后选择组件

然后选择执行该控件的脚本函数,像显示隐藏就直接GameObject>>SetActive(bool)

如果该函数需要传参,在下面会需要填写参数,比如我选择的是GameObject>>SetActive(bool),则需传送bool值,空为false,√为true。之后点击该按钮就能隐藏BackImage这个控件了。控制其他得也同理。

三、Button按下、抬起、长按事件

按下事件对于游戏开发来说很重要,之前工作开发项目是MMORPG游戏,像攻击类的按键,都是通过按下来触发
与其说是Button长按,不如说是所有能接受事件的所有控件的长按都可以这么实现。
点击Button,然后看到该Button的Inspector然后点击AddComponent >> Event >> Event Trigger。或者可以直接上面搜索框搜索。

之后能看到Event Trigger组件,然后点击里面的Add New Event Type >> PointerDown,再添加PointerUp,现在估计有人知道我为什么把按下,抬起,长按放在一起了,长按是通过PointerDow(按下)、PointerUp(抬起)实现的

创建一个脚本,代码贴在下面

using UnityEngine;
public class ChangAn : MonoBehaviour
{public float Ping;private bool IsStart = false;private float LastTime = 0;void Update () {if (IsStart && Ping > 0 && LastTime > 0 && Time.time - LastTime > Ping){Debug.Log("长按触发");IsStart = false;LastTime = 0;}}public void LongPress(bool bStart){IsStart = bStart;if(IsStart){LastTime = Time.time;Debug.Log("长按开始");}else if(LastTime != 0){LastTime = 0;Debug.Log("长按取消");}    }
}

然后把写好的脚本文件拖到你想设置长按功能的控件里,然后设置好,Down传True,Up传false,Ping传3,长按3秒触发长按

Unity3D的C# API文档中还有有很多其他得函数,目前我知道的觉得能使用到的函数就整理出来了下面几个,进入按钮离开按钮在PC的某些游戏会用到,鼠标悬停在按钮上的话出现一些小提示,离开这些小提示又会消失,通过这连个函数能够实现

using UnityEngine;
using UnityEngine.EventSystems;public class OnImage : EventTrigger
{public override void OnPointerDown(PointerEventData eventData){base.OnPointerDown(eventData);Debug.Log("按下" + this.gameObject.name);}public override void OnPointerUp(PointerEventData eventData){base.OnPointerUp(eventData);Debug.Log("抬起" + this.gameObject.name);}public override void OnPointerExit(PointerEventData eventData){base.OnPointerExit(eventData);Debug.Log("离开" + this.gameObject.name);}public override void OnPointerEnter(PointerEventData eventData){base.OnPointerEnter(eventData);Debug.Log("进入" + this.gameObject.name);}
}

这段时间通过学习,更新一下用来实现Button相关、点击、按下、抬起、长按事件,原理还是差不多,只是调用的方法变了
代码如下

using UnityEngine;
using UnityEngine.EventSystems;public class OnImage : MonoBehaviour,IPointerDownHandler,IPointerUpHandler,IPointerExitHandler,IPointerEnterHandler
{public float Ping;private bool IsStart = false;private float LastTime = 0;void Update(){if (IsStart && Time.time - LastTime > Ping){IsStart = false;Debug.Log("长按");}}public void OnPointerDown(PointerEventData eventData){LongPress(true);Debug.Log("按下");}public void OnPointerUp(PointerEventData eventData){if(IsStart){LongPress(false);Debug.Log("抬起");}      }public void OnPointerExit(PointerEventData eventData){Debug.Log("离开");}public void OnPointerEnter(PointerEventData eventData){Debug.Log("进入");}public void LongPress(bool bStart){IsStart = bStart;LastTime = Time.time;}
}

Unity3D---UGUI---Button相关、点击、按下、抬起、长按事件相关推荐

  1. Unity3D UGUI — Button(按钮)

    (一)作用 通过点击按钮,执行某些事件.动作.切换状态等. (二)属性介绍 属性 功能 Interactable 是否启用按钮 Color 按钮的颜色 Transition 按钮状态过渡的类型 (1) ...

  2. Unity3D UGUI不规则图片点击事件处理

    UGUI的点击区域一般的方形的,在有图片内容以外的空白区域也是能受到点击事件的,有时候我们往往是只需要图片内容的点击事件.下面,我们来操作: 1 修改图片的格式,一定勾上可读写的选项 2 在代码里面修 ...

  3. Unity LeanTouch 点击按下抬起事件以及LeanInfoText组件的使用

    以事件的方式来控制手指的更种行为. 新建一个空物体,在这个空物体上添加各种手指行为事件,点击LeanFingerTap,按下LeanFingerDown,抬起LeanFingerUp,滑动LeanFi ...

  4. Unity UGUI Button不响应鼠标点击的一种不常见原因

    问题描述: 不但UGUI button点不动,连NGUI的button也点不动,检查过网上常提到的EventSystem.SortOrder.遮挡.旋转轴等等,都没有问题. 解决方案: 某脚本中存在如 ...

  5. Unity3d UGUI基础控件使用(一)

    转载自:Unity3d UGUI基础控件使用(一) 一:UGUI介绍 UGUI是Unity4.6之后,经过多重测试,推出全新的UI系统,更灵活,快捷,易用的可视化游戏UI开发工具. 由于之前传统的UI ...

  6. Unity UGUI Button 中文详解-Chinar

    Chinar blog :www.chinar.xin Unity UGUI 完整系列教程 (Chinar中文图解) Unity UGUI Button 组件 本文提供全流程,中文翻译. Chinar ...

  7. Unity3d Ugui图片上制作点光 、棱形光效果shader,并具有裁切

    Unity3d Ugui图片上制作点光 .棱形光效果 实现的效果可以参考如下图所示 通过shader来实现上述的效果,为了大家的适应性,推荐在unity官方的默认ui shader上更改,我用的是20 ...

  8. 进一步考察与UI相关的安全漏洞-下

    提取私人信息 在介绍这个漏洞之前,让我们先了解一下占位符.众所周知,当我们与自动填充建议的用户界面互动时,如果将鼠标悬停在每个建议的条目上,都会发生一些有趣的事情.一个占位符值将被放置在我们试图填写的 ...

  9. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

最新文章

  1. 什么是生存分析(survival analysis)?
  2. visual assist破解
  3. mysql事务和锁InnoDB
  4. 【Gans入门】Pytorch实现Gans代码详解【70+代码】
  5. 八成Java开发者解答不了的问题
  6. java大会主题曲_网易未来大会主题曲发布,从创作到演唱都由AI包办
  7. Bootstrap3 弹出提示插件的选项
  8. jsp form提交到后台中文乱码_2019.6.12 servlet 3.0 和 JSP
  9. AJAX with JSP and Servlet(代码)
  10. linux系统安装红蜘蛛,在linux Deepin深度系统安装多媒体电子教室Veyon
  11. Taskctl安装以及简单使用
  12. 工业软件下载大全202108
  13. 文秘计算机考核,行政文秘绩效考核
  14. 怎么用c语言解三元二次方程组,三元二次方程组解法
  15. HTML在线转换JS
  16. 计算机专业教学总结,计算机教研组教学工作总结
  17. 凡事都要追求公平?还真不一定!
  18. 【keepass】密码管理软件-推荐插件和相关工具合集-keepass工作流分析(自动填充、美化界面、快速添加记录、安全增强、软件和数据库维护类)
  19. 阿里云DNS服务器免费版和付费版列表
  20. 【ZYNQ】T9+控制板硬件概览与修复 (持续更新中)

热门文章

  1. 苹果出现故障如何解决
  2. 在win7下格式化ubuntu分区,开机出现grub rescue解决办法
  3. C语言词库检测算法,c语言活学活用之自编词典.doc
  4. 电信云mysql地址_天翼云 RDS数据库操作
  5. 【PDF2PNG】PHP将PDF转换成PNG ?
  6. 微信小程序 多图片上传 支持预览 删除 设置数量上限
  7. java sql update 语句_java – SQL如何使用一个SQL语句更新表行
  8. 网易云音乐API接口
  9. C盘突然爆满--清理C盘
  10. 直通车中的地域怎么优化