2016-09-27 2837 views
0

我使用以下代碼來獲取文本中的文本的直行符。但代碼不會返回遊戲中顯示的行,它會返回我在檢查器中輸入的內容。在Unity3D中獲取UI文本的行

myText = GetComponent<Text>(); 
string[] lines = myText.text.Split('\n'); 
try{print(lines[0]);}catch{} 
try{print(lines[1]);}catch{} 

//real output : 
//New Text 
//What I expect: 
//New 
//Text 

有一個畫面: Screen Shot

我怎樣才能像在遊戲窗口行?

這是我的第一篇文章,所以請原諒任何錯誤

回答

1

的文字是顯示爲因爲Text組件設置爲Wrap的的Text.horizontalOverflow財產的兩行,但這不意味着它已被更改爲兩行,如「新\ n文本」。它仍然是「新文本」。

enter image description here

如果設置horizontalOverflowWrapText將達到水平邊界時自動換行。所以你的情況下輸出成爲兩行。

您需要將其設置爲Overflow,以便文本可以超出水平邊界。那麼文本將不會受到GameObject文本邊框的影響。

+0

我不是在尋找發生這種情況的原因。我想獲得訪問遊戲窗口中顯示的行。實際上,我想在運行時生成文本並將其放入文本並更改線條的順序。例如,我想將第一行文本移動到最後一行。 –

+0

只需將'horizo​​ntalOverflow'設置爲'Overflow'並做你想做的事。您可以通過'myText.text =「在運行時生成文本」'。 – zwcloud

0

是相同的文字,問題是,文本對象的RectTransform的寬度太小,增加寬度或減小文本大小。