Unity:获取游戏对象的高度并附有内容大小适配器

Unity: get height of GameObject with content size fitter attached

我有一个 GameObject 附加了 Content Size Fitter,我想读出 GameObject 的高度。基于阅读十几个论坛帖子,我尝试了很多东西,但无法让它工作。我认为这段代码应该 几乎 正确,但是,它没有给我正确的数字:

GameObject go;    // The game object whose height i want to read out
...
// Force rebuild before reading out height
LayoutRebuilder.ForceRebuildLayoutImmediate(go.GetComponent<RectTransform>());
// Read out height
float h = go.GetComponent<RectTransform>().rect.height;

不幸的是,这并没有给我正确的高度,因为它与我在检查器中看到的不一致。代码 returns 高度约为 2400,而检查员说它是 1257.8(对应于我在屏幕上看到的)- 请参见下面的屏幕截图。如有任何帮助,我们将不胜感激!

Screenshot

尝试RectTransform.sizeDelta。我在几个项目中用它来设置 RectTransforms 的高度。大概你也可以用它来获得高度。

我只能使用 Text.preferredWidth 和 preferredHeight 来做到这一点,这些似乎会在更改文本时立即更新。当然,这只适用于适合文本的情况。