我的场景中有一个渐变面板游戏对象,该对象必须位于所有其他游戏对象之上.但是,当我在编辑器窗口中单击某个对象时,由于此游戏对象位于最上方,因此是在层次结构中自动选择的对象.
有没有一种方法可以将游戏对象保持在画布上,就像现在一样,但是当我单击场景时使其完全无法选择吗?
解决方法:
您可以在gameobject上使用HideFlags使其变为不可选择状态:
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中相同的代码.似乎工作正常.
原文地址:https://codeday.me/bug/20191025/1928184.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。