[Unity3d]自定义鼠标

简介:

我们在用unity3d开发自己的游戏的时候,自定义游戏中的鼠标也是经常要用到的,那我就得学学,其实原理很简单,先将鼠标给隐藏,然后在鼠标的位置上画出一个自定义的鼠标贴图,这样看起来就像一个自定义的鼠标。当然我这里利用的是跨平台方案,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.显示自定义鼠标

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

效果:
















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366210,如需转载请自行联系原作者

相关文章
|
开发框架 图形学
Unity Hub 自定义一个创建新项目模板(Template)
Unity Hub 自定义一个创建新项目模板(Template)
385 1
Unity Hub 自定义一个创建新项目模板(Template)
|
开发工具 图形学
|
图形学
Unity 基础 之 自定义编辑器布局
Unity 是一个强大的开发引擎,一起来认识一下编辑器布局吧。看看如何才能调整出你想要的布局吧,调整后果然舒适哦~
393 0
|
图形学
Unity 3D还原Scene场景、市面多数游戏视角高度自定义、第三人称视角分离功能:平移、拖动、看向中心等
Unity视角的高度自定义 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心...
1531 0
|
图形学
Unity 小技巧之 自定义List.Distinct去重
配合lambda表达式 TypeList = TempShoppingMallItemList.Distinct(new ListComparer((p1, p2) => p1.
1232 0
|
图形学
unity3d自定义Toggle组件,解决设置isOn自动调用方法
当我们在使用unity自带的Toggle组件的时候,我们是通过Toggle组件上的isOn属性得知是开启我们的功能面板还是关闭,这时候通常我们会给toggle绑定一个方法,当我们点击toggle的时候,调用方法,同时播放点击音效,可是有些时候,需要我们...
3164 0
|
4月前
|
C# 图形学
【Unity 3D】元宇宙案例之虚拟地球信息射线实战(附源码、演示视频和步骤 超详细)
【Unity 3D】元宇宙案例之虚拟地球信息射线实战(附源码、演示视频和步骤 超详细)
48 0