2017-10-15 131 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