canvas教程

Unity3D之UGUI学习EventSystem

字号+ 作者:H5之家 来源:H5之家 2017-07-16 08:02 我要评论( )

CSDN知识库,按照技术领域和知识结构对海量技术资源进行筛选整理,并通过相关机制进行审核收录。保证入库知识的系统性与优质性。并且所含技术知识图谱有清晰的学

坚持 成长 每日一篇

最近学了近半个月的Unity3D,学习做游戏一直是我的理想,但是由于种种原因一直在圈外徘徊,也听过很多同学,朋友说游戏有多苦,所谓一入游戏开发深似海,自己做iOS应用已经有两年有余,但是心一直在游戏上,最近换工作刚好有比较多时间学习,会在CSDN陆续发表一些自己Unity学习笔记。既然决定了就开始吧。

我一直以为做游戏,和应用开发无非就是解决好通信,你的产品就可以运行起来,至于动画,特效那都是后话。Unity的游戏内部通信(不包括网络)我们把他分为游戏物体和游戏物体的通信,游戏物体和人的通信(游戏和人的交互)今天我们就来介绍unity提供的人机其中一种交互方式EventSystem。

对于EventSystem的详细介绍不多说,这里我直接上我对它的使用。

一.EventSystem在UGUI上的使用

1.打开unity新建一个2D项目

unty3d


在新建的项目里面我们创建一个UGUI的button

这里写图片描述


这时我们会在Hierarchy里面看到一个Canvas游戏物体下有一个Button和一个EventSystem
2.选中EventSystem我们会发现里面有三个组件Event System,Standalone Input Module, Touch Input Modunle

这里写图片描述


在一个游戏场景中Event System组件只能有一个,它负责射线投射,处理输入,发送事件。后面两个组件都继承自BaseInputModule
BaseInputModule是一个基类模块,负责发送输入事件(点击、拖拽、选中等)到具体对象。StandaloneInputModule和TouchInputModule组件是系统提供的标准输入模块和触摸输入模块,我们可以通过继承BaseInputModule实现自己的输入模块。
有了Event System BaseInputModule我们还不能实现对人物交互的检测,其实我们还缺少一个射线投射检测。一般射线投射检测是放置与摄像机有关(我的理解是对于非UGUI物体,我们可以放在主Camera上,UGUI物体我们放置在Canvas上,虽然我对于Canvas还不是很了解),
在这里我们可以做一个小实验。
运行游戏

这里写图片描述


这里写图片描述

我们选中Event System游戏物体,然后点击场景中的Button不放开我们会发现属性编辑器的右下方检测到PointerPress:Button表示可以检测到按钮被按下

这时放开鼠标,选中Canvas游戏物体,移除Graphic RayCaster组件

这里写图片描述


移除之后我们再去按住按钮就不会检测到PointerPress:Button。
2.检测到点击
一.新建一个NewBehaviourScript脚本,脚本实现了IPointerDownHandler接口的public void OnPointerDown (PointerEventData eventData)方法用于检测按钮按下。u3d还提供了其他接口用于检测不同的用户交互,详细请百度

using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class NewBehaviourScript : MonoBehaviour,IPointerDownHandler { // Use this for initialization void Start () { } (PointerEventData eventData) { Debug.Log ("buttonClick"); } // Update is called once per frame void Update () { } }

二.将脚本拖动到button游戏物体上,这时运行游戏点击button,我们就会看到控台会输出”buttonClick”,表示我们成功检测到了点击事件。

二EventSystem在非UGUI游戏物体上的使用。 1.新建一个游戏物体New Spirit 如图我们给游戏物体添加一个碰撞器组件和刚刚我们创建的NewBehaviourScript脚本组件

这里写图片描述


2.给主摄像机添加一个Physic 2d Raycaster

这里写图片描述


这个时候我们运行游戏,然后点击游戏物体,控制台也会输出“buttonClick”这就表示我们检测到游戏物体被点击了

注意:非UGUI游戏物体要被检测到点击必须要有碰撞体组件,射线检测我们一般是放在主摄像机上。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 微信开发者平台,微信开发者社区,微信小程序开发者社区

    微信开发者平台,微信开发者社区,微信小程序开发者社区

    2016-12-24 12:00

  • 【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱

    【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱

    2016-04-19 10:00

  • 9秒课堂专注于游戏开发,微信开发,前端开发,后端开发的在线免

    9秒课堂专注于游戏开发,微信开发,前端开发,后端开发的在线免

    2016-01-20 09:01

网友点评