【问题标题】:Mask on a rect during `OnGUI()` in unity3dunity3d 中“OnGUI()”期间的矩形遮罩
【发布时间】:2017-04-28 22:01:43
【问题描述】:

我只能在OnGUI阶段使用GUI.drawTexture(rect, pos)为图像绘制纹理,因为纹理像素可能会在游戏过程中发生变化。(如果除了制作着色器之外还有其他方法可以做到这一点,请让我知道)。

private void OnGUI()
{
    GUI.DrawTexture(imageRect, image, ScaleMode.ScaleToFit);
                   // ^ imageRect is the red area in the demonstration.

}

并且图像还应该是可移动和可拉伸的。而且它也应该显示在限制区域内。

如下所示: 经过烦人的计算,我现在可以进行移动和拉伸,但矩形总是浮在屏幕上方,如果我把限制数学放在一起,事情就会一团糟。所以我想知道在OnGUI() 阶段是否有一种Mask 可用于绿线区域?

【问题讨论】:

    标签: c# unity3d rect


    【解决方案1】:

    为什么不使用RawImage 组件(它还使用可以在运行时处理的纹理)?

    请记住,您需要在计算结束时调用YOUR_TEXTURE.Apply();。另请注意,使用的每个 RawImage 都意味着一个单独的绘图调用。

    OnGUI() 真的应该只用于调试而不是最终产品,因为它的优化非常差(每帧可以调用超过 10 次)。再加上使用 Unity UI,您可以使用 Mask 组件来实现您正在寻找的东西。

    希望对你有帮助,

    【讨论】:

      猜你喜欢
      • 2012-07-08
      • 1970-01-01
      • 2020-01-30
      • 2015-07-22
      • 2014-11-17
      • 2020-08-07
      • 2020-09-15
      • 1970-01-01
      • 2012-12-30
      相关资源
      最近更新 更多