使用锚预设定位UI元素当我们在UI中定位UI元素时,我们从锚预设中修复了位置,以便将其位置正确放置在画布上。通过代码
我们选择上,中,下,拉伸和蓝色圆点。
如果我在C#代码中创建UI元素,我该怎么做同样的事情?
我做
Texture2D textureWhite = new Texture2D(1, 1);
textureWhite.SetPixel(0, 0, Color.white);
textureWhite.Apply();
我怎么能一起解决的左上角用蓝色的点?
使用锚预设定位UI元素当我们在UI中定位UI元素时,我们从锚预设中修复了位置,以便将其位置正确放置在画布上。通过代码
我们选择上,中,下,拉伸和蓝色圆点。
如果我在C#代码中创建UI元素,我该怎么做同样的事情?
我做
Texture2D textureWhite = new Texture2D(1, 1);
textureWhite.SetPixel(0, 0, Color.white);
textureWhite.Apply();
我怎么能一起解决的左上角用蓝色的点?
锚(最小,最大)值和枢轴点值UI对象的RectTransform
是确定UI蓝色点位于何处的因素。
如果您按住shift键并单击每个预设,您将在下面的图像中圈选的属性发生变化。然后您可以复制每个变量并将其放入代码中。
这些属性从脚本经由RectTransform.anchorMin
,RectTransform.anchorMax
和RectTransform.pivot
控制。
不完全知道什么是Texture2D
代码在你的问题已经做这一点,但下面的函数来设置每个预设:
//------------Top-------------------
void topLeft(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(0, 1);
uitransform.anchorMax = new Vector2(0, 1);
uitransform.pivot = new Vector2(0, 1);
}
void topMiddle(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(0.5f, 1);
uitransform.anchorMax = new Vector2(0.5f, 1);
uitransform.pivot = new Vector2(0.5f, 1);
}
void topRight(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(1, 1);
uitransform.anchorMax = new Vector2(1, 1);
uitransform.pivot = new Vector2(1, 1);
}
//------------Middle-------------------
void middleLeft(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(0, 0.5f);
uitransform.anchorMax = new Vector2(0, 0.5f);
uitransform.pivot = new Vector2(0, 0.5f);
}
void middle(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(0.5f, 0.5f);
uitransform.anchorMax = new Vector2(0.5f, 0.5f);
uitransform.pivot = new Vector2(0.5f, 0.5f);
}
void middleRight(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(1, 0.5f);
uitransform.anchorMax = new Vector2(1, 0.5f);
uitransform.pivot = new Vector2(1, 0.5f);
}
//------------Bottom-------------------
void bottomLeft(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(0, 0);
uitransform.anchorMax = new Vector2(0, 0);
uitransform.pivot = new Vector2(0, 0);
}
void bottomMiddle(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(0.5f, 0);
uitransform.anchorMax = new Vector2(0.5f, 0);
uitransform.pivot = new Vector2(0.5f, 0);
}
void bottomRight(GameObject uiObject)
{
RectTransform uitransform = uiObject.GetComponent<RectTransform>();
uitransform.anchorMin = new Vector2(1, 0);
uitransform.anchorMax = new Vector2(1, 0);
uitransform.pivot = new Vector2(1, 0);
}
你可以用这些来控制锚预设:在这个
http://docs.unity3d.com/ScriptReference/RectTransform-anchorMin.htmlhttp://docs.unity3d.com/ScriptReference/RectTransform-anchorMax.htmlhttp://docs.unity3d.com/ScriptReference/RectTransform-pivot.html
寻找更多的细节:http://answers.unity3d.com/questions/1007886/how-to-set-the-new-unity-ui-rect-transform-anchor.html
谢谢。有用。 – batuman