Unity编辑器脚本
2024-10-21 17:32:05
- 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);
}
} }
}
有需要会继续补充
搜索
复制
最新文章
- 30+有用的CSS代码片段
- android 学习资源总结
- BZOJ 2049 &; LCT又一模板
- NOIp 2014 #1 生活大爆炸版石头剪刀布 Label:模拟
- 小红伞和virtualbox5.0.10冲突
- 类库引用EF
- 简单的优化处理 By LINQ TO SQL
- uva 10304
- POJ2479,2593: 两段maximum-subarray问题
- 【转】Android中的内存管理--不错不错,避免使用枚举类型
- KindEditor参数具体解释
- cmd介面,进adb命令提示符error
- LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新
- Java中关键词之this,super的使用
- Team Queue(STL练习题)
- 98、vue.js简单入门
- elasticsearch的集中常见操作
- VS Code常用快捷键大全
- (三)微信小程序首页的分类功能和搜索功能的实现笔记
- 人脸检测(1)——HOG特征
热门文章
- 2023 2 4 c++NOIP机试 小豫豫在郑州 type
- Asp.net中web.config配置文件最全面详解 (转载至CSDN)
- springboot项目基于mybatis-plus创建逆向工程
- dockerfile 打包镜像
- spark structured streaming (结构化流) join 操作( 官方文档翻译)
- 【转载】synopsys中工具介绍,VCS,DC,PT等
- js——带暂停、启动功能的定时
- vue pdf下载(非预览)
- 【Windows】Windows11 安卓子系统安装方法与使用技巧
- matlab画图之plot画折线图