在 C# 中更改鼠标光标图标
Change mouse cursor icon in C#
我正在为 Windows PC 构建一个游戏,当用户在可点击的 UI 元素上时,我需要更改光标图标。我发现这个命令Cursor.SetCursor(texture2d, vector2)
但它有一些滞后。
当鼠标悬停在UI元素上时,它会发生变化,但它有一些延迟,这真的很烦人(无论如何,这是其他用户对此的评价(。
经过一些阅读,我了解到Unity基本上只是在软件级别更改光标图标,即隐藏光标并显示我的图像,并使其遵循光标位置。
我的问题是:如何在硬件级别更改图标,再次仅在Windows版本中更改图标。
当我搜索"在 C# 中更改鼠标光标"时,我找到了 windows.forms 选项(在 Unity 中不起作用(和一个 c++ 代码,但它不是完整的(只有方法的名称(,我不知道如何在 C#中运行它......
SetCursor不能在所有Windows应用程序上运行良好,但是正确的方法。
Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);
另一种方法是制作一个小假的隐藏鼠标光标并为您的需求情况制作 GUI 光标。您可以为要自定义的每个事件添加更多条件。
var OnMouseEnterCursor:Texture2D;
var cursorSizeX: int = 32; // your cursor width
var cursorSizeY: int = 32; // your cursor height
var MouseEnterCond = false;
function OnMouseEnter()
{
MouseEnterCond = true;
Screen.showCursor = false;
}
function OnMouseExit()
{
MouseEnterCond = false;
Screen.showCursor = true;
}
function OnGUI()
{
if(MouseEnterCond )
{
GUI.DrawTexture (Rect(Input.mousePosition.x-cursorSizeX/2 + cursorSizeX/2, (Screen.height-Input.mousePosition.y)-cursorSizeY/2 + cursorSizeY/2, cursorSizeX, cursorSizeY),OnMouseEnterCursor);
}
}
如果有一种方法可以在 Unity 中强制执行硬件光标,那么世界还没有找到它。
Unity 自己的文档对此进行了很好的解释: 通过您自己找到的功能,硬件光标在支持的平台上是首选的(请记住将光标模式设置为自动(,但它会自动且不受控制地回退到软件上以获得不受支持的平台和分辨率。
需要注意的重要一点是,在项目设置/播放器设置菜单中有一个称为"默认光标"的特殊字段(仅外围提及(。 这是Windows应用商店应用程序上唯一支持的硬件光标。
并记得将纹理设置为在其配置中键入"光标"。
最后,请记住,窗口仅支持 32x32 像素的大小。这可能会强制 Unity 在选择渲染类型时动手。
播放器设置中的默认光标设置在编辑器中有效,但未显示在构建中。还将纹理大小限制为 32x32。我通过在脚本中使用Cursor.SetCursor
方法来更改光标来解决此问题。
[SerializeField] Texture2D cursor;
void Start() {
Cursor.SetCursor(cursor, Vector3.zero, CursorMode.ForceSoftware);
}
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 在 C# 中更改鼠标光标图标
- 如何获得鼠标光标连接时按下左键单击和在C++中释放左键单击时?
- 由于选项卡顺序的原因,鼠标光标总是得到错误的hwnd-MFC应用程序
- 如何在C++中模拟鼠标光标的移动
- 如何确定鼠标光标所在的控制台字符
- 如何在QML中设置鼠标光标位置
- 确定鼠标光标所在的主机上的字符
- 用鼠标光标移动圆圈
- 获取有关 X11 中离鼠标光标最近的显示器的信息
- 防止触摸输入移动的鼠标光标在窗口上
- 如何更改鼠标光标的大小?
- 如何在Qwidget上获取当前的鼠标光标位置
- 在 VC++ MFC 中创建另一个鼠标光标
- 如何使用mouseevent在windows登录屏幕中移动鼠标光标
- 如何在 VTK 中的鼠标光标附近显示标签
- 在鼠标光标平面上绘制或创建自定义动画系统光标
- 如何将鼠标/光标添加到非触摸手机的QML应用程序中
- 绘制移动图标,它一直是最顶端的鼠标光标和工作的全屏应用程序
- 如何从用户代码中移动鼠标光标