小さなプラグイン-uiのアンカーポイントを4つの頂点にすばやく設定します

これを見たい場合は、このWebサイトにアクセスしてhttp://www.manew.com/forum.php?mod=viewthread&tid=103675を参照してください。彼が少ししたこと:1:uiを中央のタイプに設定します(また、つまり、アンカーの最大値と最小値は0.5fです。)2:次に、rectTransformのドロップダウンメニューでsetAanchorsをクリックします。私のものは見ないでください、zz


   "構成要件":1:まず第一に、これはugui、2:RectTransformに適用Poivtがある(0.5F、0.5F)

uiを作成するときは、アンカーポイントの適応を使用します。通常、アンカーポイントを画像(またはその他)の4つの頂点に対応させる必要があります(このような状況かどうかはわかりません)。これは、下の画像の状況です。


次に、手動でドラッグすることがよくあります。まず、面倒です。次に、ドラッグが正確でない場合があります。この時点で、私のプラグインは「存在するようになりました」。

今から始めます

まず、最初の作業を行うためのエディタークラスを作成します。

  

さて、混乱はありません、次のステップはポイントです

今回はエディターに戻ってこの方法を使用します


それで全部です


残りの部分については、アンカーポイントを4つの頂点に設定できます。

完了しました

効果を見る


最後に、国際慣行に従ってコードを添付します

public class AnchorsAdapt {
    [MenuItem("Tools/AnchorsAdapt")]
    static void SelectionM()
    {
        GameObject[] gos = Selection.gameObjects;
        for (int i = 0; i < gos.Length; i++)
        {
            if (gos[i].GetComponent<RectTransform>()==null)
                continue;
            Adapt(gos[i]);
          
        }
    }
    static void Adapt(GameObject go)
    {
        //位置信息
        Vector3 partentPos = go.transform.parent.position;
        Vector3 localPos = go.transform.position;
        //------获取rectTransform----
        RectTransform partentRect = go.transform.parent.GetComponent<RectTransform>();
        RectTransform localRect = go.GetComponent<RectTransform>();
        float partentWidth = partentRect.rect.width;
        float partentHeight = partentRect.rect.height;
        float localWidth = localRect.rect.width * 0.5f;
        float localHeight = localRect.rect.height * 0.5f;
        //---------位移差------
        float offX = localPos.x - partentPos.x;
        float offY = localPos.y - partentPos.y;

        float rateW = offX / partentWidth;
        float rateH = offY / partentHeight;
        localRect.anchorMax = localRect.anchorMin = new Vector2(0.5f + rateW, 0.5f + rateH);
        localRect.anchoredPosition = Vector2.zero;

        partentHeight = partentHeight * 0.5f;
        partentWidth = partentWidth * 0.5f;
        float rateX = (localWidth / partentWidth) * 0.5f;
        float rateY = (localHeight / partentHeight) * 0.5f;
        localRect.anchorMax = new Vector2(localRect.anchorMax.x + rateX, localRect.anchorMax.y + rateY);
        localRect.anchorMin = new Vector2(localRect.anchorMin.x - rateX, localRect.anchorMin.y - rateY);
        localRect.offsetMax = localRect.offsetMin = Vector2.zero;
    }
  
}
オイラー、スクリプトをエディターフォルダーに置くことを忘れないでください

おすすめ

転載: blog.csdn.net/K20132014/article/details/53263957