无法移动画布或更改任何变换值

dsi*_*r19 7 user-interface unity-game-engine unity5

我正在使用Unity 5,我开始制作一个菜单场景.当我制作画布时,Rect Transform组件下的所有值都被锁定,并显示"由Canvas驱动的某些值".我唯一可以改变的是在编辑器中使用Gizmo时的z位置.我无法重置位置或任何东西.为什么会这样? 截图

Dan*_*ert 12

这意味着canvas的canvas组件已render mode设置为Screen space - overlay.这迫使它成为屏幕的大小.将其更改为World Space,它将允许您调整大小并移动它.

  • 如果有问题的画布元素是 UI 布局的一部分,Mike Brockbank 的回答更有意义。 (2认同)

小智 5

更改渲染模式不是理想的解决方案。重叠模式都不是导致这种情况发生的原因。World Space只是一种渲染模式,它会更改整个UI的行为方式,这意味着将进行完全不同的设置,并进行大量工作才能使子UI对象独立移动。

这是Unity网站对World Space的描述:

在此渲染模式下,“画布”将表现为场景中的任何其他对象。可以使用其Rect变换手动设置Canvas的大小,并且UI元素将基于3D放置在场景中其他对象的前面或后面进行渲染。这对于打算成为世界一部分的UI很有用。这也称为“诊断界面”。

Rect变换通常被锁定,因为它是另一个控制其变换的画布对象的子级。解决此问题的方法是通过向其添加“布局元素”组件来覆盖它。从那里,您可以对其进行配置,使其以您喜欢的方式工作,并且可以进行独立于父UI对象的转换。

有关完整的详细信息,请参见Unity支持页面:https : //support.unity3d.com/hc/en-us/articles/115000179163-How-to-overwrite-Width-and-Height-values-that-are-driven-在运行时按布局组