在 unity3d 中的 `OnGUI()` 期间在矩形上遮罩

Mask on a rect during `OnGUI()` in unity3d

我只能在OnGUI阶段给带GUI.drawTexture(rect, pos)的图像绘制纹理,因为纹理像素在游戏过程中可能会发生变化。(如果除了制作着色器来执行此操作,请告诉我)。

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

}

并且图像还应该是可移动和可伸缩的。而且还应该在禁区展示。

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

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

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

OnGUI() 实际上应该只用于调试,永远不要用于最终产品,因为它的优化非常差(每帧可以调用 10 次以上)。再加上使用 Unity UI,您可以使用 Mask 组件来实现您想要的。

希望对您有所帮助,