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