2017-10-15 130 views
3

使用锚预设定位UI元素当我们在UI中定位UI元素时,我们从锚预设中修复了位置,以便将其位置正确放置在画布上。通过代码

enter image description here

我们选择上,中,下,拉伸和蓝色圆点。

如果我在C#代码中创建UI元素,我该怎么做同样的事情?

我做

Texture2D textureWhite = new Texture2D(1, 1); 
textureWhite.SetPixel(0, 0, Color.white); 
textureWhite.Apply(); 

我怎么能一起解决的左上角用蓝色的点?

回答

5

锚(最小,最大)值和枢轴点值UI对象的RectTransform是确定UI蓝色点位于何处的因素。

如果您按住shift键并单击每个预设,您将在下面的图像中圈选的属性发生变化。然后您可以复制每个变量并将其放入代码中。

enter image description here

这些属性从脚本经由RectTransform.anchorMinRectTransform.anchorMaxRectTransform.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); 
} 
+0

谢谢。有用。 – batuman