美文网首页
编辑器工具:激活物体快捷键 And 校正模型中心位置

编辑器工具:激活物体快捷键 And 校正模型中心位置

作者: 烂醉花间dlitf | 来源:发表于2021-01-08 15:30 被阅读0次

激活或者禁用当前选中的物体(们)

在开发时,常用的一个操作就是激活或者禁用当前的物体,下面的代码可以实现这个功能(原博好像是在 CSDN)

    public const string KeyName = "我的工具/激活或者关闭选中物体 _s";

    //根据当前有没有选中物体来判断可否用快捷键
    [MenuItem(KeyName, true)]
    static bool ValidateSelectEnableDisable()
    {
        GameObject[] go = GetSelectedGameObjects() as GameObject[];

        if (go == null || go.Length == 0)
            return false;
        return true;
    }

    [MenuItem(KeyName)]
    static void SeletEnable()
    {
        bool enable = false;
        GameObject[] gos = GetSelectedGameObjects() as GameObject[];

        foreach (GameObject go in gos)
        {
            enable = !go.activeInHierarchy;
            EnableGameObject(go, enable);
        }
    }

    //获得选中的物体
    static GameObject[] GetSelectedGameObjects()
    {
        return Selection.gameObjects;
    }

    //激活或关闭当前选中物体
    public static void EnableGameObject(GameObject parent, bool enable)
    {
        parent.gameObject.SetActive(enable);
    }

矫正模型中心点

有时候模型可能模型拿过来的时候中心点不在模型中间,这个时候通常是在上面新建一个父物体,然后再靠眼神把模型中心点和刚刚新建的空物体原点对上,这样如果是对一个车轮胎这样的东西来说,就很灾难,因为车轮胎是需要旋转的,如果中心点对不准就会十分鬼畜,所以下面的方法,可以直接选中一个物体之后,点一下就会自动新建一个空物体并且处于模型的中心点位置。

  • 只能选择一个物体
  • 但这个物体下有多少个 MeshFilter 都没关系
    /// <summary>
    /// 矫正模型的中心位置
    /// </summary>
    [MenuItem("我的工具/校正模型的中心位置")]
    public static void CorrectCenterPosition()
    {
        GameObject[] selections = Selection.gameObjects;
        if (selections.Length > 1)
        {
            Debug.LogError("矫正模型中心只能选择一个物体");
            return;
        }
        MeshFilter[] meshs = selections[0].GetComponentsInChildren<MeshFilter>(true);
        Vector3 center = Vector3.zero;
        foreach(MeshFilter f in meshs)
        {
            //center += f.mesh.bounds.center;
            Vector3 c = f.sharedMesh.bounds.center;
            center += f.transform.TransformPoint(c);
        }
        center /= meshs.Length;
        GameObject g = new GameObject(selections[0].name);
        g.transform.parent = selections[0].transform.parent;
        g.transform.position = center;
        selections[0].transform.parent = g.transform;
    }

相关文章

网友评论

      本文标题:编辑器工具:激活物体快捷键 And 校正模型中心位置

      本文链接:https://www.haomeiwen.com/subject/ewhfaktx.html