2016-12-30 1 views
0

플레이어가 새로운 위치에 입장 할 때마다 일종의 배너를 표시하고 싶습니다. 이것은 화면의 가장 왼쪽 경계에 있어야합니다. 내 문제는 현재 솔루션이 여러 해상도에서 일관성없이 작동한다는 것입니다. 고해상도에서는 배너가 필요한 것보다 오른쪽으로 배치됩니다.Unity3D - 화면 경계에 메시지 표시

enter image description here

또한 제대로 텍스트를이 표시 될 때마다 위치를 코드 조각을 사용합니다.

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 시스템을 잘못 이해하고 있습니까?

답변

0

아무 것도 코딩하지 않아도됩니다.

화면의 왼쪽 하단에 (0,0) 피벗을 사용하여 배너를 놓았지만 괜찮 았지만 왜 x : -320에 위치합니까?

배너를 -320에 놓은 이유는 무엇입니까? 네이티브 해상도에서는 예상대로 작동하지만 다른 해상도에서는 캔버스 리사이저를 활성화 한 경우에 구석에 위치하지 않기 때문에 이동됩니다. 모든.

+0

문제는 배너의 끝입니다. 나는 텍스트의 크기에 따라 위치를 변경해야한다고 생각했다. –

+0

네, 배너의 일부를 화면에서 떼어 놓은 느낌이 뭔가요? 내용 크기 조정 도구를 텍스트에 추가 한 다음 이미지 배경을 자식으로 배치 한 다음 텍스트 크기에 맞출 수 있습니다. 보유하고있는 이미지와 달성하려는 이미지를 첨부하여 쉽게 도와 드리겠습니다. – Vancete

관련 문제