我们在用unity3d开发自己的游戏的时候。自己定义游戏中的鼠标也是常常要用到的。那我就得学学。事实上原理非常easy,先将鼠标给隐藏,然后在鼠标的位置上画出一个自己定义的鼠标贴图,这样看起来就像一个自己定义的鼠标。当然我这里利用的是跨平台方案,Unity的GUI效率不高。假设我们要用特定的某个平台的自己定义鼠标,那就去用特定的接口函数,这样效率会高一点。这里我写的就是一个跨平台方案,一种通用的方法。

举例:

假设是windows平台的话,我们假设要隐藏鼠标就用SetCursor()这种方法,

注意:

1.GUI坐标系的原点是在左上角,而屏幕坐标系採用的是一种OpenGL坐标系原点是在左下角,所以这就存在一个坐标转换的问题!

2.update()和FixedUpdate()的差别:

Update() 和 FixedUpdate()在游戏中都会在更新的时候自己主动循环调用。

可是Update是在每次渲染新的一帧的时候才会调用,也就是说,这个函数的更新频率和设备的性能有关以及被渲染的物体(能够觉得是三角形的数量)。在性能好的机器上可能fps 30,差的可能小些。

这会导致同一个游戏在不同的机器上效果不一致,有的快有的慢。由于Update的运行间隔不一样了。

而FixedUpdate,是在固定的时间间隔运行。不受游戏帧率的影响。

有点想Tick。

所以处理Rigidbody的时候最好用FixedUpdate。

PS:FixedUpdate的时间间隔能够在项目设置中更改。Edit->Project Setting->time  找到Fixed timestep。就能够改动了。

操作:

1.隐藏鼠标是:Screen.showCursor = false;

2.显示自己定义鼠标

  1. public Texture CursorTexture;
  2. void OnGUI()
  3. {
  4. Vector3 mousePos = Input.mousePosition;
  5. //由于GUI坐标系原点是左上角,而屏幕坐标系原点是在左下角,所以要转换
  6. GUI.DrawTexture(new Rect(mousePos.x-CursorTexture.width/2,Screen.height - mousePos.y-CursorTexture.height/2,CursorTexture.width,CursorTexture.height),CursorTexture);
  7. }

效果:

[Unity3d]定义自己的鼠标的更多相关文章

  1. unity提高----------射线使用【unity3d 怎样获得当前鼠标点击的对象】

    unity3d 怎样获得当前鼠标点击的对象 最佳答案   var ray = Camera.main.ScreenPointToRay (Input.mousePosition);var hit : ...

  2. 【转】Unity3D 入门小技巧——鼠标拾取并移动物体

    http://blog.csdn.net/sysujackjiao/article/details/69396274 一.鼠标拾取物体的原理 在Unity3D当中,想要在观察面(Aspect)中拾取物 ...

  3. unity3d游戏物体跟着鼠标方向移动

    效果:当点击鼠标左键时,游戏对象会朝鼠标点击的方向移动,类似魔兽争霸一样. 思路:把鼠标的坐标转化成世界坐标(鼠标默认是屏幕坐标),然后当点击鼠标时,物体将朝着鼠标的世界坐标方向移动. 如果你看到这的 ...

  4. [Unity3D]Unity3D游戏开发之鼠标滚轮实现放大缩小

    今天为大家分享的是在Rpg游戏中十分常见的鼠标滚轮调整摄像机视野效果.首先我们先创建一个游戏场景: 接下来我们编写一段脚本代码: [csharp] view plaincopyprint" ...

  5. 【Unity3D自学记录】鼠标移动三维物体

    创建一个脚本.例如以下: using UnityEngine; using System.Collections; public class OnMouse : MonoBehaviour { IEn ...

  6. unity3d的键盘和鼠标输入

    一.键盘的输入 •GetKey,GetKeyDown,GetKeyUp三个方法分别获取用户键盘按键的输入 1. GetKey:用户长按按键有效: bool down = Input.GetKeyDow ...

  7. (转载)【Unity3D学习】获取鼠标点击所对应的GameObject

    刚开始学习Unity 3D,新手遇到的坑都是泪对自由的抗争.直入主题~ 首先,为GameObject需要添加组件“Box Collider”. 然后,在脚本中的Update方法中添加如下代码. if( ...

  8. Unity3D移动平台动态读取外部文件全解析

    前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑 ...

  9. 在CSS中定义a:link、a:visited、a:hover、a:active顺序

    摘自:http://blog.snsgou.com/post-2.html     以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料,发现 ...

随机推荐

  1. Eclipse设置的断点失效的解决办法

    使用Eclipse的同胞们,如果你哪天惊奇的发现调试时,明明设置了断点,按道理就是要执行设置断点的那条语句的,可是偏偏Eclipse视你设置的断点不见,不要害怕,不要恐慌,这样的问题不应该导致偶们疯狂 ...

  2. Java对Xml进行操作的实例(转)

    这是一个用JAVA W3C DOM 进行XML操作的例子,包含了查询.增加.修改.删除.保存的基本操作.较完整的描述了一个XML的整个操作流程.适合刚入门JAVA XML操作的朋友参考和学习. 假设有 ...

  3. poj1935(树形dp)

    题目链接:http://poj.org/problem?id=1935 题意:带边权的树,给点一个根,问从根出发遍历某些点,所需的最小花费. 分析:树上任意两点的路径是唯一的,直接dfs一遍,可以得出 ...

  4. 祖国版Solowheel!IPS103 独轮思维车 - 三个月体验报告

    http://tieba.baidu.com/f?kz=2308652773&mo_device=1

  5. Extjs4.10Model模型具体解释

    一.创建Model模型 Extjs4.10提供了两种方法来创建Model模型,也就是创建类 方法一: Ext.define('person',{              extend:'Ext.da ...

  6. 数据库连接技术之OLE DB

    之前的博客介绍了ODBC和JDBC.这次简单的介绍一下OLE DB.ODBC的总结不知道是没贴到博客上还是不在这个博客上,我再找找,没有的话我再补充到时候.好了.開始吧. 回想 之前呢介绍过了ODBC ...

  7. 1m网速是什么意思,1m带宽是什么意思

    1M网速下载速度应是多少?我怎么才50多KB?? 建议: 一般来说是90到100算正常.最高能达到120 带究竟该有多快 揭开ADSL真正速度之谜 常常使用ADSL的用户,你知道ADSL的真正速度吗? ...

  8. MVC 学习 区域

    http://www.cnblogs.com/fly_dragon/archive/2011/10/12/2209438.html

  9. (摘录)SQL Server 存储过程

    文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...

  10. 演示基于SDL2.0+FFmpeg的播放器

    SDL是一个跨平台的渲染组件,眼下已经推出到2.0.3版本号,支持Win/Linux/OSX/Android.网上非常多介绍大多是基于SDL1.2版本号的,与2.0版本号有一定的区别,本文演示怎样用S ...