You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity Editor中EditorGUILayout.ScrollViewScope搭配IndentLevelScope横向滚动失效问题

问题原因

  • EditorGUILayout.LabelField 默认会自动适配当前父容器的可用宽度,自动对超出内容做折行处理,内容不会超出ScrollView的可视宽度范围,因此无法触发横向滚动。
  • 你使用的LinkLabel系统样式默认开启了自动折行,进一步加剧了这个问题,而GUILayout.Label默认未开启强制折行,超宽内容会直接撑开滚动视口,因此可以触发横向滚动。

解决方案

你只需要修改LabelField的绘制参数,关闭自动折行、指定固定宽度即可保留缩进效果的同时触发横向滚动,修改后的代码如下:

using (var midScroll = new EditorGUILayout.ScrollViewScope(midSPos, true, true))
{
    using (new EditorGUI.IndentLevelScope(1))
    {
        midSPos = midScroll.scrollPosition;
        // 提前获取样式并关闭自动折行
        var linkStyle = GUI.skin.GetStyle("LinkLabel");
        linkStyle.wordWrap = false;
        // 计算内容实际宽度,也可以直接写固定值比如600
        float labelWidth = linkStyle.CalcSize(new GUIContent("This is a EditorGUILayout.LabelField. This is a EditorGUILayout.LabelField.")).x;
        for (int i = 0; i < 50; i++)
        {
            // 手动指定Label宽度,阻止自动适配折行
            EditorGUILayout.LabelField("This is a EditorGUILayout.LabelField. This is a EditorGUILayout.LabelField.", linkStyle, GUILayout.Width(labelWidth));
        }
    }
}

额外注意项

  • 如果需要保留样式的全局折行特性,不要直接修改全局LinkLabel样式,可以新建一个样式副本修改,避免影响其他控件的显示。
  • 缩进会占用左侧宽度,计算内容总宽度时不需要额外加缩进值,EditorGUI.IndentLevelScope会自动给LabelField添加左侧偏移。

内容的提问来源于stack exchange,提问作者SoMuch SMx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:54:00