これを見たい場合は、この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;
}
}
オイラー、スクリプトをエディターフォルダーに置くことを忘れないでください
に