在 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 组件来实现您想要的。
希望对您有所帮助,
我只能在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 组件来实现您想要的。
希望对您有所帮助,