C# 在C中更改鼠标光标图标#

C# 在C中更改鼠标光标图标#,c#,c++,unity3d,mouse-cursor,C#,C++,Unity3d,Mouse Cursor,我正在为Windows PC构建一个游戏,当用户在可点击的UI元素上时,我需要更改光标图标。我找到了这个命令Cursor.SetCursor(texture2d,vector2),但它有一些延迟 当鼠标停留在UI元素上时,它会发生变化,但会有一些延迟,这真的很烦人(这就是其他用户所说的) 经过一些阅读,我了解到Unity基本上只是在软件级别更改光标图标。i、 e.隐藏光标并显示我的图像,并使其跟随光标位置 我的问题是:如何在硬件级别更改图标,同样,仅在windows版本中 当我搜索“在 C> >

我正在为Windows PC构建一个游戏,当用户在可点击的UI元素上时,我需要更改光标图标。我找到了这个命令
Cursor.SetCursor(texture2d,vector2)
,但它有一些延迟

当鼠标停留在UI元素上时,它会发生变化,但会有一些延迟,这真的很烦人(这就是其他用户所说的)

经过一些阅读,我了解到Unity基本上只是在软件级别更改光标图标。i、 e.隐藏光标并显示我的图像,并使其跟随光标位置

我的问题是:如何在硬件级别更改图标,同样,仅在windows版本中

当我搜索“在<强> C><强> >中更改鼠标光标时,我发现了WINDOWS.FANS选项(它不在Unity中工作)和C++代码,但它不是满的(只有方法名),而且我不知道如何在C…………/P> < P>中运行,在所有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应用商店等应用程序上唯一受支持的硬件光标

请记住将纹理设置为在其配置中键入“cursor”


最后,请记住这一点。这可能会在选择渲染类型时强制Unity的手

正如我在问题中所写的,Unity不识别Windows.Forms名称空间,因此我无法使用它的setCursor工作正常,甚至还有一个可选参数可以强制使用hardware@Jichael如果它工作正常,我不会问这个问题。我的游戏的用户说它有太多的延迟,那么你的实现可能是错误的。我还告诉过你它有一个强制硬件模式,你试过了吗?它和软件光标不一样吗?它只是一个在光标位置渲染的图像是的,是一个在光标位置渲染的图像,隐藏了硬件光标。这是另一种方法,它干净、简单、100%可定制且工作良好,没有延迟。我的纹理定义为游标,它是32X32px,编辑器中的一切都很好,但构建后我得到了一个奇怪的游标纹理