我有一些文本我想在遊戲底部的某種日誌中顯示。將文本修改爲特定尺寸
我要確保文本在特定一刀切的方式,並且如果超過該大小,我會修剪它自己(「喇嘛喇嘛BL ...」)
我知道我可以通過使用SpriteFont.MeasureString獲取文本的大小 - 所以我知道一個特定的字符串是否會超出限制。
最明顯的解決方案涉及這種
StringBuilder display = new StringBuilder();
foreach (char c in string)
{
if mySpriteFont.MeasureString((display.Append(c)) > SOMEAMOUNT
{
display.append("...");
return display.toString();
}
}
但是我怕一個循環,這樣的事情是做的非常昂貴的。其他解決方案?
根據您的字符串,首先檢查整個字符串可能會更快。如果沒有問題,請將其退回,否則請開始修剪。 – HABO
對我來說,也只是發生,如果我倒退它也會節省一些循環(提供過長的字符串是例外,而不是常態)。但是有更好的方法嗎? – Haedrian
另一個想法是二元分割:首先將字符串切成兩半,而不是逐個字符。如果合適,加一個四分之一的背部,如果不能再將它切成兩半等等。效率取決於琴絃的長度和窗口的大小。 – Rotem