光标纹理抗锯齿和问题

时间:2017-05-30 04:50:58

标签: c# unity3d unity5

您好我正在尝试使用Unity的光标API在从播放器的广告资源中拖动项目时更改光标。光标确实发生了变化,但由于抗锯齿(推测),图像模糊。图像是一个简单的16x16精灵,在游戏世界中显示时没有消除锯齿,但是当显示为光标时。有没有办法关闭光标的抗锯齿?

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

我设置光标的方式如下:

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

其中itemImg是处理拖动的UI图像(库存槽)

感谢任何帮助或建议。如果它会出现这些问题,我应该抛弃Cursor API吗?谢谢。

3 个答案:

答案 0 :(得分:1)

使用Cursor API时遇到了问题。虽然在调用之前还有一些事情需要尝试,但光标图像看起来根本不起作用" 一个错误。

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

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 :(得分:1)

  • 使用32x32子画面而不是16x16。
  • 将“纹理”类型更改为“光标”
  • 选择点过滤器
  • 将“压缩率”设置为“无”

在Unity 2018.3上完美运行

答案 2 :(得分:0)

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

  • 将光标精灵缩放到32x32。
  • 将“最大大小”设置为“ 32”
  • 将纹理类型更改为“光标”
  • 将过滤器模式设置为“点(无过滤器)”