2017-08-03 49 views
-1

我使用Unity創建遊戲並加載第一個場景時,我得到由Font.CacheFontForText引起的6000 + ms秒,我認爲這是因爲我所有的文本(因爲據我所知是最好的方法來自動縮放不同屏幕尺寸的文本),我搜索了這個問題,但是從我的理解我必須預先將我的場景中的所有文本集中起來,他們很多。我能否避免這樣做並以另一種方式解決這個問題?我在編輯器和Android上運行了剖析器,而尖峯只出現在Android上?爲什麼它在編輯器中正常工作?由Font.CacheFontForText導致的6000+ ms的大秒殺

回答

0

BestFit逐個嘗試所有字體大小,以找到最適合Text RectTransform的字體大小。這樣,如果在場景中有多個帶有BestFit的文本,它會非常慢。它也爲每種尺寸分配一個drawcall,所以使用BestFit通常是一種不好的做法。嘗試爲不同的分辨率設置不同的字體大小,並只在Start()函數上設置字體大小。例如:

public int[] widths; 
public int[] textSizes; 
public Text[] texts; 
private int widthIndex; 

void Start() 
{ 
    for(int i = widths.Length - 1; i >= 0; i++) { 
     if(Screen.width > widths[i]) { 
      widthIndex = i; 
      break; 
     } 
    } 

    for(int i = 0; i < texts.Length; i++) { 
     texts[i].textSize = textSizes[widthIndex]; 
    } 
} 
+0

謝謝!但是我必須對每個文本大小不同的文本執行此操作,對嗎?例如,對於需要變小的文本(屏幕大小較小的文本大小)和較大的文本一次(針對相同屏幕大小的較大文本大小),希望能夠很好地解釋自己! – rickyxd

+0

這只是一個例子。如果您有很多文本,則不要使用最佳匹配。您需要找到適合您項目的最佳方式。 –

相關問題