拓展编辑器(十五)_禁用选中对象

  在Scene视图和Hierarchy视图中,都可以选择游戏对象。Scene视图中因为东西很多,而且很可能大量重叠,很容易选错对象。在开发编辑器的时候,当操作某个对象时,如果不希望Scene视图中误操作别的对象,我们可以禁用选中对象的功能,代码如下:

using UnityEngine;
using UnityEditor;

public class 禁用选中对象 
{
    [InitializeOnLoadMethod]
    static void InitializeOnLoadMethod()
    {
        SceneView.onSceneGUIDelegate = delegate (SceneView sceneView)
          {
              Event e = Event.current;
              if (e != null)
              {
                  int controlID = GUIUtility.GetControlID(FocusType.Passive);
                  if (e.type == EventType.Layout)
                  {
                      HandleUtility.AddDefaultControl(controlID);
                  }
              }
          };
    }
    
} 

  在上述代码中,FocusType.Passive表示禁止接受控制焦点,获取它的controlID后,即可禁止将点击事件穿透下去。此时我们想要选中物体只能通过Hierarchy面板。

  此外,还有一个办法可以禁止选中功能,即以层为单位设置某个层无法选中。如图所示,右边有个"小锁头"的就无法选中了

  我们直接在Scene视图中很容易选择到子节点,此时可以给它绑定一个[SelectionBase]标记,这样该脚本下的所有节点都会定位到绑定这个标记的对象上,代码如下:

[SelectionBase]
public class RootScript : MonoBehaviour {

}

  此时在Scene中选择对象,将全选绑定该脚本的所有节点。若想单独选择一个子节点,需要在Hierarchy面板中选择。

ps: GUIUtility.GetControlID方法可以维空间获取唯一ID

  HandleUtility.AddDefaultControl用于添加默认控件

 

转载于:https://www.cnblogs.com/llllllvty/p/9906586.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值