1. 1.给选中物体添加碰撞盒

这个是给子物体添加碰撞盒 (根据需求可以自己修改)  脚本放在Editor文件夹下   需要手动选择你需要添加碰撞盒的物体

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine; public class AddBox
{
[MenuItem("Tools/添加碰撞盒")]
private static void SelectionAnchor()
{
GameObject[] objs = Selection.gameObjects;
for (int i = 0; i < objs.Length; i++)
{
if (!objs[i].transform.GetChild(0).gameObject.GetComponent<BoxCollider>())
{
objs[i].transform.GetChild(0).gameObject.AddComponent<BoxCollider>();
} }
}
}

1.1   只需要选择模型的父物体就好了(tag升级版) 需要设置子物体的tag值  目的是给子物体的某一个子物体添加碰撞盒(孙物体)

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine; public class AddBox
{
[MenuItem("Tools/一键添加碰撞盒")]
private static void SelectionAnchor()
{
if (Selection.activeObject )
{
AddCollider((GameObject)Selection.activeObject);
} }
public static void AddCollider(GameObject obj)
{
if (obj.transform.childCount >0)
{
for (int i = 0; i < obj.transform.childCount; i++)
{
Transform child = obj.transform.GetChild(i);
if (child.CompareTag ("JG"))
{
child.GetChild (0).gameObject.AddComponent<MeshCollider>();
} AddCollider(child.gameObject);
}
}
} }

升级版添加

 1.2  只需要选择模型的父物体就好了(究极版)  无论多少层级都能加上去

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine; public class AddBox
{
[MenuItem("Tools/一键添加所有碰撞盒")]
private static void SelectionAnchor()
{
if (Selection.activeObject)
{
AddCollider((GameObject)Selection.activeObject);
} }
public static void AddCollider(GameObject obj)
{
if (obj.transform.childCount > 0)
{
for (int i = 0; i < obj.transform.childCount; i++)
{
Transform child = obj.transform.GetChild(i);
if (child.GetComponent <MeshRenderer>())
{
child.gameObject.AddComponent<MeshCollider>();
} AddCollider(child.gameObject);
}
}
} }

2.删除所有碰撞盒(选中父物体就好了)直接一键删除所有碰撞盒  脚本放在Editor文件夹下  记得把注释解开,忘记解了

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine; public class Destory_Box :EditorWindow
{
[MenuItem("Tools/工具:一键清理所有Collider碰撞盒")]
public static void ClearColiderByChild()
{
if (Selection.activeObject)
{
ClearMeshColiderByChild((GameObject)Selection.activeObject);
}
}
public static void ClearMeshColiderByChild(GameObject obj)
{
//1.子物体有Mesh
if (obj.transform.childCount > 0)
{
for (int i = 0; i < obj.transform.childCount; i++)
{
GameObject child = obj.transform.GetChild(i).gameObject;
//MeshCollider meshCollider = child.GetComponent<MeshCollider>();
//if (meshCollider != null)
//{
// DestroyImmediate(meshCollider);
//}
BoxCollider boxCollider = child.GetComponent<BoxCollider>();
if (boxCollider != null)
{
//DestroyImmediate(boxCollider);
Debug.Log(boxCollider.name);
}
ClearMeshColiderByChild(child);
}
}
}
}

二 .unity一键删除MissingScript无效脚本

using UnityEditor;
using UnityEngine; public class DestoryMissingScript
{
[MenuItem("Tools/删除选中物体无效脚本Missing")]
private static void DestoryAnchor()
{
if (Selection.activeObject)
{
DestoryMissing((GameObject)Selection.activeObject);
}
}
public static void DestoryMissing(GameObject obj_)
{
if (obj_ .transform.childCount >0)
{
for (int i = 0; i < obj_.transform.childCount; i++)
{
Transform child = obj_.transform.GetChild(i);
GameObjectUtility.RemoveMonoBehavioursWithMissingScript(child.gameObject);
DestoryMissing(child.gameObject);
}
} }
}

有需要会继续补充

搜索

复制

Unity编辑器脚本的更多相关文章

  1. 定制你的Unity编辑器

    Unity的编辑器可以通过写脚本进行界面定制,包括添加功能菜单,今天写游戏Demo用到了记录一下. 为Unity添加子菜单 示例程序 [AddComponentMenu("Defend Ho ...

  2. [译]如何在Unity编辑器中添加你自己的工具

    在这篇教程中你会学习如何扩展你的Unity3D编辑器,以便在你的项目中更好的使用它.你将会学习如何绘制你自己的gizmo,用代码来实现创建和删除物体,创建编辑器窗口,使用组件,并且允许用户撤销他们所作 ...

  3. 实现Unity编辑器模式下的旋转

    最近在做一个模型展示的项目,我的想法是根据滑动屏幕的x方向差值和Y方向的差值,来根据世界坐标下的X轴和Y轴进行旋转,但是实习时候总是有一些卡顿.在观察unity编辑器下的旋转之后,发现编辑器下的旋转非 ...

  4. 【Unity优化】如何实现Unity编辑器中的协程

    Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种 ...

  5. Unity编辑器扩展chapter1

    Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些 ...

  6. 【Unity优化】怎样实现Unity编辑器中的协程

    Unity编辑器中何时须要协程 当我们定制Unity编辑器的时候,往往须要启动额外的协程或者线程进行处理.比方当运行一些界面更新的时候,须要大量计算,假设用户在不断修正一个參数,比方从1变化到2.这种 ...

  7. Unity编辑器 - Undo的坑

    Unity编辑器 - Undo的坑 编辑器通过脚本中改变值,Undo.RecordObject可能会无效,应该使用: Undo.RegisterCompleteObjectUndo(Object ob ...

  8. Unity编辑器 - 资源批处理工具基类

    Unity编辑器 - 资源批处理工具基类 经常要对资源进行批处理,很多时候都是一次性的需求,于是弄个通用脚本. 工具是个弹出面板,处理过程有进度条,如下: 如图,子类只需要重写几个方法: using ...

  9. unity编辑器拓展

    [ExecutelnEditMode]     在EditMode下也可以执行脚本,Unity默认情况下,脚本只有运行时被执行,加上此属性后,不运行程序也能执行.与PlayMode不同的是函数不会不停 ...

  10. Unity编辑器的扩展:IMGUI

    IMGUI 介绍 所有关于 Editor 的相关 UI,包括 Inspector.Hierarchy.Window.Game 视图上动态创建的那些半透明 UI.还有 Scene 视图上可添加的辅助显示 ...

随机推荐

  1. JetCache源码整理

  2. uniapp对接ChatGPT 简单实现对话功能

    最近很火的ChatGPT来了!我也是做了一个最最基础的模型,让大家更通俗易懂! 先看效果:  接下来直接上代码: <template> <view class="conte ...

  3. 【Java】自定义mybatis

    处理 sql in 多条件搜索时 单引号双引号问题 StringBuilder pidNoZeroIds = new StringBuilder(); Integer numTmp = 0; for ...

  4. 宿主机通过vmware创建的kali虚拟机连接redis,sftp等功能

    介绍 黑客专用的linux kali, 下载后即包含很多黑客工具,对于我这样的菜鸡,很感动的就是里面包含了最新版的redis,java,mysql等工具.自带不错的界面省事 kali官网: https ...

  5. url 编码解码

    from urllib import parse#url编码url = 'http://www.baidu.com?query = python基础教程'url_str = parse.quote_p ...

  6. HIVE- 删除功能

    删除分区: ALTER TABLE table_name DROP PARTITION (partition_name='20220101');

  7. 12组-Beta冲刺-3/5

    一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15599024.html Github链接:https://github.com/ ...

  8. java常用、通用代码或配置

    pom.xml 支持springBoot parent <parent> <groupId>org.springframework.boot</groupId> & ...

  9. 软件工程日报一——Andriod的安装与配置

    建民老师给我们布置了一个编写记事本app的任务,因此需要我们下载andriod studio,下面是我的下载过程 在下载andriod studio之前,需要我们配置Java环境 进入控制面板,输入 ...

  10. python_lib_0001_decorator_print_log

    def decorator_log_funcname( func ):     def wrapper(*arg, **kw):         print("")         ...