• [Unity3d]定义自己的鼠标


    [Unity3d]自己定义鼠标

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

    效果:

  • 相关阅读:
    python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)
    Postman + newman + jenkins 的API自动化测试应用
    Selenium + WebDriver 各浏览器驱动下载地址
    pythonon ddt数据驱动二(json, yaml 驱动)
    python ddt 实现数据驱动一
    Python + logging 输出到屏幕,将log日志写入文件
    python 多线程小练习
    pycharm + git 的集成使用
    Map的遍历方式
    69道Spring面试题和答案
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4776168.html
Copyright © 2020-2023  润新知