如何将画布统一设置为世界单位的特定尺寸?

Dou*_*oug 4 unity-game-engine

假设我有一个 UI Canvas,它设置为“世界空间”并且绝对位于我的立方体上方的世界中。

我的立方体在运行时调整大小。

在不缩放画布的情况下,如何设置画布的大小以匹配立方体的已知世界单位宽度?

我知道您可以使用以下方法在“画布单位”中设置画布:

var rect = canvas.GetComponent<RectTransform>();
rect.sizeDelta = new Vector2(200, 200);
Run Code Online (Sandbox Code Playgroud)

然而,200x200是画布单位,而不是世界单位;我的立方体有 4 个单位宽;sizeDelta应该设置为什么?

我认为这与组件有关CanvasScale,但我无法弄清楚;referenceUnitsPerPixel是 100,这作为比例因子是完全错误的,dynamicPixelsPerUnit就像 1,这也是错误的。

Kar*_*dux 5

你可以简单地这样做:

  • Canvas组件的Render Mode属性设置为World(您已经这样做了)
  • 删除CanvasScaler组件
  • 您的画布现在是一个 3D 对象:使用RectTransform 宽度高度设置其大小

请记住,您的Canvas不会处理非常小的尺寸元素(默认Image是 100x100 ,它将比您的Canvas大得多)。

希望这可以帮助,