我的场景中有一个fadepanel gameobject
,它必须位于所有其他游戏对象之上。但是,当我在编辑器窗口中单击某个对象时,由于此gameobject
位于所有对象之上,因此是在层次结构中自动选择的对象。
有没有办法让gameobject
保持在画布的顶部,就像现在一样,但是如果我点击我的场景,它会完全无法选择吗?
答案 0 :(得分:4)
您可以HideFlags
使用gameobject
使其无法选择:
public class HideFlagsSetter : MonoBehaviour
{
public Component target;
public HideFlags customHideFlags;
public enum Mode
{
GameObject,
Component
}
public Mode setOn = Mode.GameObject;
[ContextMenu("Set Flags")]
private void SetFlags()
{
if (setOn == Mode.GameObject)
{
target.gameObject.hideFlags = customHideFlags;
}
else if (setOn == Mode.Component)
{
target.hideFlags = customHideFlags;
}
}
}
将customHideFlags设置为HideInHierarchy
会使其从层次结构中消失,因此您将无法选择它。
编辑:由于对象将消失,如果您无法访问该脚本,则无法将其恢复。因此,此脚本应附加到持久对象,并且应在检查器中设置目标对象。
您可以通过单击右上角的齿轮图标并选择“设置标志”来使用“上下文”菜单选项。它是菜单中的最后一个选项。
希望这会有所帮助:)
(由提出问题的人士补充)
我想要一种方法让它在编辑器模式下自动发生。所以我做了相同的步骤,但我改变了脚本以便在编辑器模式下工作。我在类的顶部添加了[ExecuteInEditMode],并添加了一个Awake()方法,该方法执行与SetFlags中相同的代码。似乎工作得很好。