Spy*_*ros 3 c# unity-game-engine
我的场景中有一个淡入淡出面板gameobject,它必须位于所有其他游戏对象之上。但是,当我单击编辑器窗口中的某个对象时,由于该对象gameobject位于所有对象之上,因此是在层次结构中自动选择的对象。
有没有办法将 保持gameobject在画布顶部,就像现在一样,但当我单击场景时使其完全不可选择?
您可以使用HideFlagsongameobject使其不可选择:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
将 customHideFlags 设置为HideInHierarchy会使其从层次结构中消失,因此您将无法选择它。
编辑:由于该对象将会消失,如果您无法访问脚本,则无法将其恢复。所以这个脚本应该附加到一个持久对象,并且目标对象应该在检查器中设置。
您可以通过单击右上角的齿轮图标并选择“设置标志”来使用上下文菜单选项。它是菜单中的最后一个选项。
希望这可以帮助 :)
(由提问者添加)
我想要一种在编辑器模式下自动发生这种情况的方法。因此,我执行了相同的步骤,但我对脚本进行了一些更改以在编辑器模式下工作。我在类的顶部添加了 [ExecuteInEditMode],还添加了一个 Awake() 方法,该方法执行与 SetFlags 中相同的代码。似乎工作得很好。
| 归档时间: |
|
| 查看次数: |
2249 次 |
| 最近记录: |