如何将自动换行添加到 EditorGUILayout.TextArea?

Posted

技术标签:

【中文标题】如何将自动换行添加到 EditorGUILayout.TextArea?【英文标题】:How can I add word wrap to EditorGUILayout.TextArea? 【发布时间】:2020-12-25 01:47:03 【问题描述】:

如何将自动换行添加到编辑器文本区域?我正在尝试模仿 [TextArea] 属性(自动换行,需要时自动增加高度)

我知道 GUILayout.TextArea() 有效,但我希望使用 EditorGUILayout,因为根据文档,它正确响应复制/粘贴、全选等。

我的代码:

obj.talkableFlavorText = EditorGUILayout.TextArea(obj.talkableFlavorText, GUILayout.MinHeight(textAreaHeight));

【问题讨论】:

你只有一个很长的“单词”。它应该在哪里包裹?您是否尝试过使用更常规的文本? 它分配的 GUIStyle 有一个属性 word-wrap - 你测试过吗? 也许这是一个不好的例子,即使是正常的单词它仍然不会换行,它只是继续正确。我现在尝试了 GUI.skin.textArea.wordWrap = true 但我仍然得到相同的结果。 【参考方案1】:

使用 GUIStyle 并将 wordWrap 属性设置为 true

基于Unity Editor Window Example的完整示例

using UnityEngine;
using UnityEditor;

public class MyWindow : EditorWindow

    string myString = "Hello World";

    // Add menu named "My Window" to the Window menu
    [MenuItem("Window/My Window")]
    static void Init()
    
        // Get existing open window or if none, make a new one:
        MyWindow window = (MyWindow)EditorWindow.GetWindow(typeof(MyWindow));
        window.Show();
    

    void OnGUI()
    
        GUIStyle style = new GUIStyle(EditorStyles.textArea);
        style.wordWrap = true;
        myString = EditorGUILayout.TextArea(myString, style);
    

结果:

【讨论】:

以上是关于如何将自动换行添加到 EditorGUILayout.TextArea?的主要内容,如果未能解决你的问题,请参考以下文章

在 RaphaelJS 中自动将文本换行到一个宽度?

Internet Explorer 11 自动换行不起作用

sql查询结果如何自动换行

Bash:将字符串添加到文件末尾而不换行

数据库中的文字导入到excel中如何实现自动换行?

JavaFX TextArea如何使用自动换行符设置文本