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

Posted

技术标签:

【中文标题】无法移动画布或更改任何变换值【英文标题】:Unable to Move the Canvas or Change Any of the Transform Values 【发布时间】:2016-05-07 22:18:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

如果有问题的画布元素是 UI 布局的一部分,Mike Brockbank 的回答会更有意义。 这是正确答案,完美运行。请将此标记为正确!【参考方案2】:

改变渲染模式并不是一个理想的解决方案;覆盖模式也不是发生这种情况的原因。 World Space 只是一种渲染模式,它改变了整个 UI 的行为方式,这意味着完全不同的设置和更多的工作只是为了让子 UI 对象独立移动。

以下是 Unity 网站对 World Space 用途的描述:

在这种渲染模式下,Canvas 的行为将与画布中的任何其他对象一样 场景。可以使用其 Rect 手动设置 Canvas 的大小 变换,UI 元素将呈现在其他元素的前面或后面 基于 3D 放置的场景中的对象。这对 UI 很有用 这意味着成为世界的一部分。这也被称为 “剧情界面”。

矩形变换通常会被锁定,因为它是另一个控制其变换的 Canvas 对象的子对象。解决此问题的方法是通过向其添加“布局元素”组件来覆盖它。从那里你可以配置它以你喜欢的方式工作,它可以有独立于父 UI 对象的变换。

有关详细信息,请参阅此 Unity 支持页面:https://support.unity3d.com/hc/en-us/articles/115000179163-How-to-overwrite-Width-and-Height-values-that-are-driven-by-a-Layout-Group-in-runtime-

【讨论】:

【参考方案3】:

画布取决于窗口面板中的游戏选项卡。 通过使用关闭选项卡或调整面板或文档游戏面板调整面板。 它将帮助您制作默认的 800 X 600 画布。

【讨论】:

以上是关于无法移动画布或更改任何变换值的主要内容,如果未能解决你的问题,请参考以下文章

如何在画布的任何位置创建一个可以在画布上的任何位置移动的正方形

无法将 FabricJS svg 或组对象移动到画布左上角

使用Jquery或Javascript触发mousemove事件

无法在 javascript 中强制刷新画布

如何在不丢失或复制任何记录的情况下移动或更改管道

如何使用 clearRect 不在画布上绘制移动对象