有没有办法让布局元素自动缩放而不是自动调整大小?

Is there a way to let Layout Elements auto-rescaling instead of auto-resizing?

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

还有几个 Sprite 个儿童游戏对象,里面有 Layout Element 个。

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

但不幸的是,Sprite不受“大小”的影响,它受“比例”的影响。

而且我在 Grid Layout GroupLayout Element 中都找不到任何允许我将其设置为自动缩放而不是自动调整大小的选项。

我也无法在 Sprite Renderer 中找到任何选项来让它“自动调整”到它的大小。

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

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

但是由于某些原因,所有的sizeDelta赋值给localScale时全部变成了(0,0)。

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

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

有人可以教我怎么修吗?

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

非常感谢您的帮助!

Layout groups are designed to be used with UI Elements so instead of sprite renderer you're expected to use Image that uses rect transform to control its size. For game objects using sprite renderer you're better off using grid 组件或创建自定义组件。

现在,如果您正在制作像三消游戏这样的游戏,您必须决定是否要使用 UI 元素作为 tiles/orbs/fruits 或带有网格的精灵或某种自定义组件.这两者各有利弊。