C# 在unity3d中的“OnGUI()”期间在矩形上遮罩

C# 在unity3d中的“OnGUI()”期间在矩形上遮罩,c#,unity3d,rect,C#,Unity3d,Rect,在OnGUI阶段,我只能使用GUI.drawTexture(rect,pos)为图像绘制纹理,因为纹理像素可能会在游戏过程中更改。(如果有其他方法,而不是制作着色器,请让我知道) 图像也应该是可移动和可伸缩的。而且应该在限制区域内展示 如下所示: 经过烦人的计算,我现在可以做移动和拉伸了,但矩形将始终浮在屏幕上方,如果我把限制数学放在一起,事情将是一团糟。所以我想知道在OnGUI()阶段,绿线区域是否有一种Mask可用 为什么不使用组件(它还使用可以在运行时处理的纹理) 记住,你需要在计算结束时

OnGUI
阶段,我只能使用
GUI.drawTexture(rect,pos)
为图像绘制纹理,因为纹理像素可能会在游戏过程中更改。(如果有其他方法,而不是制作着色器,请让我知道)

图像也应该是可移动和可伸缩的。而且应该在限制区域内展示

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

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

记住,你需要在计算结束时调用。另外,请注意,使用的每个RawImage表示单独的抽签调用

OnGUI()
实际上应该只用于调试,而不用于最终产品,因为它的优化效果非常差(每帧可以调用10次以上)。另外,使用UnityUI,您可以使用组件来实现所需的功能

希望这有帮助,

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

记住,你需要在计算结束时调用。另外,请注意,使用的每个RawImage表示单独的抽签调用

OnGUI()
实际上应该只用于调试,而不用于最终产品,因为它的优化效果非常差(每帧可以调用10次以上)。另外,使用UnityUI,您可以使用组件来实现所需的功能

希望这有帮助

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

}