光标纹理抗锯齿和问题

问题描述 投票:0回答:3

例如,您正在尝试使用Unity的光标API来更改光标,例如,从播放器的清单中拖动一个项目。光标确实发生了变化,但是图像由于抗锯齿而模糊(大概)。该图像是一个简单的16x16子画面,在游戏世界中显示时不会抗锯齿,但在显示为光标时会显示。有什么办法可以关闭光标的抗锯齿功能吗?

而且,当我在编辑器之外运行游戏时,光标图像似乎根本不起作用-它仅显示一些小破折号或一些静态字符。

我设置光标的方式如下:

texture = itemImg.sprite.texture;
Cursor.SetCursor(texture, Vector2.zero, CursorMode.Auto);

itemImg是处理拖动的UI图像(库存位置)

感谢您的任何帮助或建议。如果出现这些问题,我是否应该放弃Cursor API?谢谢。

c# unity3d unity5
3个回答
1
投票

使用Cursor API时遇到了问题。尽管在调用“光标图像似乎根本不起作用” bug之前可以尝试一些事情。

  • 确保将光标纹理类型设置为光标
  • 过滤器模式设置为点(无过滤器)
  • 最后,将压缩设置为高质量

enter image description here

请注意您的代码:

texture = itemImg.sprite.texture;

显示您正在使用的Texture未设置为光标作为纹理类型。定义要使用的Texture,然后按照上述步骤为纹理进行正确的设置。不要将UI Image用作鼠标光标的源。

public Texture2D texture;
Cursor.SetCursor(texture, Vector2.zero, CursorMode.Auto);

如果这些不能解决您的问题,请使用CursorMode.ForceSoftware而不是CursorMode.Auto

最后,假设您在Cursor API上仍然有问题,只需将SpriteRenderer位置设置为鼠标位置,就放弃它,并简单地制作一个假光标。

yourSprite.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);

现在,您可以控制鼠标指针的质量。


1
投票
  • 使用32x32精灵而不是16x16。
  • 将纹理类型更改为光标
  • 选择点过滤器
  • 将压缩设置为无

在Unity 2018.3上完美运行


0
投票

我在Unity 2019.3中通过以下方式解决了此问题:

  • 将光标精灵缩放到32x32。
  • 将最大大小设置为'32'
  • 将纹理类型更改为“光标”
  • 将过滤器模式设置为'点(无过滤器)'
© www.soinside.com 2019 - 2024. All rights reserved.