【问题标题】:Is there a way to let Layout Elements auto-rescaling instead of auto-resizing?有没有办法让布局元素自动重新缩放而不是自动调整大小?
【发布时间】:2021-12-05 09:42:38
【问题描述】:

我有一个空的GameObject,里面有Grid Layout Group

还有几个带有Layout Elements 的Sprite 子游戏对象。

我注意到Grid Layout Group 会根据其设置“调整”它们的大小。

但不幸的是,Sprite 不受“大小”的影响,而是受“尺度”的影响。

我在Grid Layout GroupLayout Element 都找不到任何选项,让我可以将其设置为自动调整大小而不是自动调整大小。

我在Sprite Renderer 中也找不到任何选项来让它“自动适应”它的大小。

我尝试在子对象中添加一个脚本,通过代码重新调整它们:

RectTransform rt = GetComponent<RectTransform>();
rt.localScale = rt.sizeDelta;
rt.sizeDelta = new Vector2(1, 1);

但由于某种原因,所有sizeDeltas在分配给localScale时都变成了(0,0)。

有趣的是,当我运行后在检查器中检查它时,Rect Transform 中的所有尺寸都是它应该的!

(所以结果变为:sizeDelta 不变,localScale 变为 (0,0,0)。)

有人能这么好心教我怎么解决吗?

或者也许我可以将一些选项或其他组件添加到子对象以让它们自动重新缩放?

非常感谢您的帮助!

【问题讨论】:

    标签: c# unity3d autolayout


    【解决方案1】:

    Layout groups 旨在与 UI 元素一起使用,因此您应该使用使用矩形变换来控制其大小的 Image 而不是精灵渲染器。对于使用精灵渲染器的游戏对象,最好使用grid 组件或创建自定义组件。

    现在,如果您要制作像三消游戏这样的游戏,您必须决定是否要将 UI 元素用于瓷砖/球体/水果或带有网格或某种自定义组件的精灵。两者各有利弊。

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多