【发布时间】:2021-05-17 02:06:35
【问题描述】:
我有一个带有 RectTransform 的 GameObject,我想通过脚本删除它。 换句话说,我想使用脚本在检查器中将 RectTransform 替换为常规 Transform。
在检查器中,您只需单击 RectTransform 下拉菜单,然后从那里选择 Remove Component,即可将 RectTransform 替换为 Transform。当然,这只有在没有直接依赖 RectTransform 的组件时才有效。
如果我使用如下脚本尝试这种方法:Destroy(GetComponent<RectTransform>()),我会收到一条错误消息:
不能销毁 RectTransform 组件 '我的游戏对象'。如果你想破坏游戏 对象,请改为在游戏对象上调用“Destroy”。破坏 不允许使用 RectTransform 组件。
当然,这是意料之中的,因为您无法从游戏对象中移除变换。然而,在我试图取回旧的 Transform 组件的情况下,这种行为是不受欢迎的。
所以我的问题是:有没有办法通过脚本将当前的 RectTransform 替换为简单的 Transform 组件,这是如何完成的?
【问题讨论】:
-
我不知道有什么办法可以创建一个新的游戏对象,然后通过脚本传递组件、值和引用。出于好奇,您为什么要尝试将游戏对象从 GUI 对象恢复为 3D 对象?我对它的使用方式很感兴趣:)
-
@AlexM。我正在制作一个可以与 SpriteRenderer 和 Image 一起用于 UI 和非 UI 目的的资产,我有一个带有在 Image 和 SpriteRenderer 之间切换的按钮的组件。基本上,当我切换到 Image 然后再切换回 SpriteRenderer 时,RectTransform 仍然存在。