设置GUI纹理以适合UI面板

时间:2015-03-03 07:40:41

标签: c# unity3d

我有一个带有GUI纹理的面板是由代码创建的:

GUITexture background=gameObject.AddComponent<GUITexture>();

如何使这个GUITexture在画布内适合面板无论屏幕宽度或高度是什么,我都在尝试使用此代码,但它不起作用:

GUITexture background=gameObject.AddComponent<GUITexture>();
Image img = gameObject.GetComponent<Image>();
Vector3 posStart=Camera.Main.WorldtoScreenPoit(img.RectTransform.anchorMin.x,img.RectTransform.anchorMin.y,0);
Vector3 posEnd=Camera.Main.WorldtoScreenPoit(img.RectTransform.anchorMax.x,img.RectTransform.anchorMax.y,0);

int widthX = (int)(posEnd.x - posStart.x);
int widthY = (int)(posEnd.y - posStart.y);

GUITexture.PixelInset= new Rect(posStart.x,posStart.y,widthX,widthY);

如果由于我没有复制并通过代码而导致语法错误,我很抱歉 我正在使用的代码应该根据UI面板RectTransform缩放gui图层,但这就是视图的样子

enter image description here

画布设置为适合屏幕分辨率(宽度和高度),但正如您所看到的,GUITexture不适合UI面板,我做错了什么

PS:GUITexture被用作WebcamTexture,为了多个设备之间的响应,我在面板上使用GUITexture,我正在使用飞机,但我不知道如何根据屏幕调整大小宽度和高度

1 个答案:

答案 0 :(得分:1)

您需要做的是基本上在代码中模拟当您通过按住ALT和SHIFT使对象居中时编辑器应用的参数。

这应该通过以下方式实现:

  • X,Y位置设为0.5;
  • X,Y Scale设为1.0;
  • Pixel Inset值设置为0。