Unity中鼠标的交互事件
事件响应函数
Unity中函数基本是大写开头的,以下仅介绍部分API,其余可以在unity官网查找。
Awake :初始化,一开始(脚本实例化时)执行。
Start : 在Awake之后执行,第一次Update之前执行,用于准备工作。
Update :每一帧执行,它一般而言并不是稳定的,因为每次绘制耗时都不同。也就是我们常说的游戏的FPS。
FixedUpdate :固定时间执行,在做一些动画效果计算时需要精确的时间间隔,比如要考虑时间的物理仿真计算,如果在opengl中这个还需要自己手动写一个特定时间间隔执行的控制器,嵌入到update中,在u3d中就方便多了。
LateUpdate:所有Update之后调用。那为什么不直接写在Update之后呢,因为场景中有很多脚本,它们都要执行一边update,这个LateUpdate就是等它们都执行完了才去做。经常写异步语言的人都知道,在异步语言中做同步控制是很重要的,也就是保证多个事件执行的拓扑顺序,这个LateUpdate就有种同步控制的意思。
Reset:点击reset按钮时调用。
关于LateUpdate,Unity官网给了一个相机的例子,也就是要在所有物体都Update之后才移动相机,保证画面上物体都已显示。
- using UnityEngine;
- using System.Collections;
- public class ExampleClass : MonoBehaviour
- {
- void LateUpdate()
- {
- transform.Translate(0, Time.deltaTime, 0);
- }
- }
OnMouseOver :鼠标位于物体之上时调用。
OnMouseEnter:鼠标进入物体时调用。
OnMouseExit:鼠标离开物体时调用。
OnMouseUp:鼠标抬起时调用.
OnMouseDown :鼠标在物体上按下时调用。
OnMouseDrag:鼠标拖动物体时调用。
Unity官网给出的关于OnMouseOver和OnMouseEnter的例子:
- using UnityEngine;
- using System.Collections;
- public class ExampleClass : MonoBehaviour {
- public Renderer rend;
- void Start() {
- rend = GetComponent<Renderer>();
- }
- void OnMouseEnter() {
- rend.material.color = Color.red;
- }
- void OnMouseOver() {
- rend.material.color -= new Color(0.1F, 0, 0) * Time.deltaTime;
- }
- void OnMouseExit() {
- rend.material.color = Color.white;
- }
- }
将鼠标放在物体上,物体会变成红色,然后随着鼠标停留在物体上,红色慢慢变慢,离开后变成白色。
OnApplicationFocus:应用程序失去焦点时调用。经常写GUI的人应该很清楚焦点是个什么东西,在桌面平台上就是当你点击了某个窗口,窗口处在顶层且呈现激活态时。对于一些游戏,可以利用这个函数在玩家不再聚焦于游戏窗口时,暂停一些功能。
OnApplicationPause:应用程序暂停时调用。这个可以联想一下安卓开发,也有类似的几个API,当你离开游戏进入别的界面时,游戏虽然没有关闭,但是已经不是当前栈顶的项目了,如果你重新回到游戏界面,但是你的应用程序没有做状态保存(存档)操作的话,那么界面将会到初始化的状态。
OnApplicationQuit:应用程序退出时调用,这个应该不用多说了。
Unity官网样例:当程序暂停或失去焦点时,显示游戏暂停。
- using UnityEngine;
- public class AppPaused : MonoBehaviour
- {
- bool isPaused = false;
- void OnGUI()
- {
- if (isPaused)
- GUI.Label(new Rect(100, 100, 50, 30), "Game paused");
- }
- void OnApplicationFocus(bool hasFocus)
- {
- isPaused = !hasFocus;
- }
- void OnApplicationPause(bool pauseStatus)
- {
- isPaused = pauseStatus;
- }
- }
OnGUI : 绘制游戏界面时调用,也是比较常用的了,GUI这部分也有很多可以研究的,前面的例子正好就使用了GUI来画一个标签。
OnCollistionEnter:两个碰撞体/刚体开始重叠时调用。
OnCollisionExit :两个碰撞体/刚体不再重叠时调用。
OnCollisionStay:两个碰撞体/刚体保持重叠状态时调用(每帧)。
OnParticleCollision:粒子碰到碰撞体时调用。
OnTriggerEnter:碰撞体进入触发区域时调用。
OnTriggerExit:碰撞体离开触发区域时调用。
OnTriggerStay:碰撞体停留在触发区域时调用(每帧)。
(同时有2D版本的,直接在后面加上2D作为函数名即可)
Unity官网样例:碰撞后绘制接触点和法线,相对速度达到一定值播放声音。
- using UnityEngine;
- using System.Collections;
- public class ExampleClass : MonoBehaviour
- {
- AudioSource audio;
- void Start()
- {
- audio = GetComponent<AudioSource>();
- }
- void OnCollisionEnter(Collision collision)
- {
- foreach (ContactPoint contact in collision.contacts)
- {
- Debug.DrawRay(contact.point, contact.normal, Color.white);
- }
- if (collision.relativeVelocity.magnitude > 2)
- audio.Play();
- }
- }
OnBecomeInvisible:物体不被摄像机显示时调用。
OnBecomeVisible:物体被摄像机显示时调用。
OnPreRender:作用于摄像机,范围内开始渲染时调用。
OnPostRender:作用于摄像机,范围内渲染完成后调用。
OnPreCull:作用于摄像机,剔除场景后调用。
以下是部分网络模块:
OnConnectedToServer:连接到服务器时调用。
OnDisconnectedFromServer:从服务器断开时调用。
OnFailedToConnect / OnFailedToConnectToMasterServer:连接失败时调用。
OnPlayerConnected:玩家成功连接服务器调用。
OnPlayerDisConnected:玩家掉线时调用。
Unity官网的例子,也就是打印一下连线的玩家:
- using UnityEngine;
- using System.Collections;
- public class ExampleClass : MonoBehaviour {
- private int playerCount = 0;
- void OnPlayerConnected(NetworkPlayer player) {
- Debug.Log("Player " + playerCount + " connected from " + player.ipAddress + ":" + player.port);
- }
- }
Unity中鼠标的交互事件相关推荐
- tkinter中鼠标与键盘事件
tkinter中鼠标与键盘事件(十五) 本文转自Tynam Yang的博客园 import tkinterwuya = tkinter.Tk() wuya.title("wuya" ...
- 【Unity】【Wwise】在Unity中获取某个Wwise事件的持续时间
[Unity][Wwise]在Unity中获取某个Wwise事件的持续时间 解决方案 注意事项 边边角角 小吐槽 有一次接到这么一个需求:要在界面上显示出一段人物语音的长度,并且在播放的时候进行倒计时 ...
- Qt中鼠标的双击事件和单击事件的实现方式
背景 同一个部件既要响应鼠标单击事件又要响应双击事件,而且两者响应的动作没有交集,跟不存在包含关系(如果双击事件动作包含单击事件的动作,那么只需要将双击事件特有的部分放到mouseDoubleClic ...
- 解决chrome浏览器中鼠标滚轮滚动事件失效的问题
今天遇到了一个html5页面由于开启了图片遮罩层在chrome浏览器中,鼠标滚轮上下滚动时,页面不动的问题,后查询相关资料后解决,具体方法是加入如下代码: <script type=" ...
- Vue中鼠标移入移出事件-解析
鼠标在li上移动也会触发移出事件 两组鼠标事件 mouseover 和 mouseout mouseenter 和 mouseleave mouseover 和 mouseout 什么时候使用说明 根 ...
- vue中鼠标移入移出事件种类以及区别
1.@mouseover与@mouseout 鼠标经过时自身触发事件,其子元素同时也触发该事件. 父亲有的东西,儿子也有 ,支持冒泡. 适用于鼠标移入移出时子元素也会执行事件的场景,或者单一标签. 2 ...
- JavaScript中鼠标移入移出事件有哪些?区别是什么?
1.onmouseover与onmouseout 鼠标经过时自身触发事件,其子元素同时也触发该事件. 父亲有的东西,儿子也有 ,支持冒泡. 2.onmouseenter与onmouseleave 鼠标 ...
- Unity中鼠标的锁定与解锁
void Update(){// 当按下 A 键时,鼠标锁定并消失if (Input.GetKeyDown(KeyCode.A)){Cursor.lockState = CursorLockMode. ...
- Legolas工业自动化平台入门(三)交互事件响应动作
在上一篇Legolas工业自动化平台入门(二)数据响应动作 一文中,我们介绍了"动作"相关内容,了解到"动作"分为多种,各种动作的添加方式相同,但是应用方式各自 ...
最新文章
- mongodb自带监控 mongostat数值说明
- 米家摄像头固件_小米摄像头被谷歌紧急封禁!别人的设备,能看到你家现场
- 数据结构-栈的顺序结构两种方式
- 风控策略和模型的区别_风控模型之产品赢利分析与策略优化
- mysql explain实践
- SAP Spartacus加载delivery国家列表的处理逻辑
- 三丰三坐标编程基本步骤_三丰三坐标CRYSTA APEX S776
- mesh渲染到ui_在Unity中使用UGUI修改Mesh绘制几何图形
- sql server 2005技术大全_3年2.16~3.2万吨!上机数控子公司与新疆大全签订多晶硅采购长单...
- 如何解析一个字符串并返回一个嵌套数组?
- 第一次冲刺-站立会议03
- Python实现粒子群(PSO)带惩罚函数多目标优化
- 视频接口:DP接口和HDMI接口介绍,看完你就懂了
- png在ai转为路径_ai怎么把png转换为路径
- BZOJ3420: Poi2013 Triumphal arch
- 网络接口 FE GE 10GE SFP
- sina vistor system
- android webview实现拍照
- and5.1PowerManagerService深入分析(三)updatePowerStateLocked函数
- 大数据面试题以及答案整理(面试必备)