0
プレーヤーが新しい場所に入るたびに一種のバナーを表示したい。これは画面の左端にあるはずです。私の問題は、私の現在のソリューションが解像度を超えて一貫して動作しないことです。より高い解像度では、バナーは必要以上に右に配置されます。Unity3D - 画面の境界にメッセージを表示する
私はまた、適切にテキストにそれが表示されるたびに配置するコードの一部を使用します。
public class AreaName : MonoBehaviour
{
private static AreaName instance;
void Start()
{
if (instance)
Destroy(this);
else
instance = this;
BannerBase = transform.FindChild("BannerBase").GetComponent<Image>();
NameDisplay = BannerBase.transform.FindChild("BannerText").GetComponent<Text>();
}
private Image BannerBase;
private Text NameDisplay;
public static void Display (string areatitle)
{
int width = TextWidth(instance.NameDisplay, areatitle);
instance.BannerBase.rectTransform.position = new Vector3(-305 + width, instance.BannerBase.transform.position.y, 0);
instance.NameDisplay.text = areatitle;
print(width);
}
private static int TextWidth (Text obj, string text)
{
int totalLength = 0;
Font myFont = obj.font; //chatText is my Text component
CharacterInfo characterInfo = new CharacterInfo();
char[] arr = text.ToCharArray();
foreach (char c in arr)
{
myFont.GetCharacterInfo(c, out characterInfo, obj.fontSize);
totalLength += characterInfo.advance;
}
return totalLength;
}
}
私が監視している単純なエラーはありますか?それともUnity UIシステムが間違っているのか理解していますか?
問題はバナーが終了していることです。私は、テキストのサイズに合わせて位置を変えなければならないと思った。 –
はい、画面からバナーの一部を取り除いた感覚は何ですか? テキストにコンテンツサイズフィッタを追加してから、画像の背景を子として配置してテキストサイズに合わせることができます。 あなたが持っているものと達成しようとしているもののイメージを添付してください。 – Vancete