Unity编辑器脚本
- 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); } } } }
三.删除物体不需要的字节
using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class TiHuanName { public static string nam = "摄像头点位_2号楼"; [MenuItem("Tools/将物体前几位名称删除")] private static void RemoveCharacters() { GameObject selectedObjects = Selection.activeGameObject; for (int i = 0; i < selectedObjects.transform.childCount; i++) { Transform obj = selectedObjects.transform.GetChild (i); string originalName = obj.transform.name; if (originalName.StartsWith (nam)) { //第一种 obj .transform.name= originalName.Remove(0, 9); //第二种 //obj.transform.name = originalName.Replace(nam, ""); } } } }
有需要会继续补充
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?