MeshCollider编辑器工具
来源:互联网 发布:淘宝金币可以送人吗 编辑:程序博客网 时间:2024/06/06 14:30
这款工具主要是在编辑器下给指定模型添加、删除、禁用、启用MeshCollider等功能,具体功能可以看代码。
using UnityEngine;using UnityEditor;/* 编辑:HML操作方法:选择需要操作的对象,在编辑器里找到“MeshCollider”菜单,然后执行对应操作!*///创建MeshColliderpublic class MeshColliderTools : MonoBehaviour { //创建MeshCollider [MenuItem("MyTools/MeshCollider/Create")] static void Create() { GameObject go = Selection.activeGameObject; MeshRenderer[] renders = go.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer item in renders) { if (!item.gameObject.GetComponent<MeshCollider>()) { Collider collider = item.gameObject.AddComponent<MeshCollider>(); //打印出添加MeshCollider的对象名称 Debug.Log("已为"+collider.gameObject.name+ "创建MeshCollider!"); } else { Debug.Log(item.gameObject.name+"已创建MeshCollider,无需再创建!"); } } } //删除MeshCollider [MenuItem("MyTools/MeshCollider/Delete")] static void Delete() { GameObject go = Selection.activeGameObject; MeshRenderer[] renders = go.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer item in renders) { if (item.gameObject.GetComponent<MeshCollider>()) { //删除MeshCollider DestroyImmediate(item.gameObject.GetComponent<MeshCollider>()); Debug.Log("删除了" + item.gameObject.name + "的MeshCollider!"); } else { Debug.Log(item.gameObject.name + "没有MeshCollider,无法执行删除操作!"); } } } //禁用MeshCollider [MenuItem("MyTools/MeshCollider/Forbidden")] static void Forbidden() { GameObject go = Selection.activeGameObject; MeshRenderer[] renders = go.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer item in renders) { if (item.gameObject.GetComponent<MeshCollider>()) { //禁用MeshCollider Collider collider = item.gameObject.GetComponent<MeshCollider>(); if (collider.enabled) { collider.enabled = false; Debug.Log("禁用了" + collider.gameObject.name + "的MeshCollider!"); } else { Debug.Log(item.gameObject.name+"的MeshCollider已被禁用!"); } } else { Debug.Log(item.gameObject.name + "没有MeshCollider!"); } } } //启用MeshCollider [MenuItem("MyTools/MeshCollider/StartUsing")] static void StartUsing() { GameObject go = Selection.activeGameObject; MeshRenderer[] renders = go.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer item in renders) { if (item.gameObject.GetComponent<MeshCollider>()) { //启用MeshCollider Collider collider = item.gameObject.GetComponent<MeshCollider>(); if (!collider.enabled) { collider.enabled = true; Debug.Log("启用了" + collider.gameObject.name + "的MeshCollider!"); } else { Debug.Log(item.gameObject.name + "的MeshCollider已经启用!"); } } else { Debug.Log(item.gameObject.name + "没有MeshCollider!"); } } } //启用MeshCollider的Canves [MenuItem("MyTools/MeshCollider/OtherTools/StartUsingCanves")] static void StartUsingCanves() { GameObject go = Selection.activeGameObject; MeshRenderer[] renders = go.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer item in renders) { if (item.gameObject.GetComponent<MeshCollider>()) { //启用MeshCollider MeshCollider collider = item.gameObject.GetComponent<MeshCollider>(); if (!collider.convex) { collider.convex = true; Debug.Log("启用了" + collider.gameObject.name + "的MeshCollider的Convex!"); } else { Debug.Log(item.gameObject.name + "的MeshCollider的Convex已经启用!"); } } else { Debug.Log(item.gameObject.name + "没有MeshCollider!"); } } } //启用MeshCollider的CanvesTrigger [MenuItem("MyTools/MeshCollider/OtherTools/StartUsingCanvesTrigger")] static void StartUsingCanvesTrigger() { GameObject go = Selection.activeGameObject; MeshRenderer[] renders = go.GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer item in renders) { if (item.gameObject.GetComponent<MeshCollider>()) { //启用MeshCollider MeshCollider collider = item.gameObject.GetComponent<MeshCollider>(); if (collider.convex) { if(!collider.isTrigger) { collider.isTrigger = true; Debug.Log("开启了" + collider.gameObject.name + "的MeshCollider的触发器!"); } else Debug.Log( collider.gameObject.name + "的MeshCollider的触发器已经开启!"); } else { collider.convex = true; collider.isTrigger = true; Debug.Log(item.gameObject.name + "的MeshCollider的Convex原没有启用,此次操作启用,并打开了触发器!"); } } else { Debug.Log(item.gameObject.name + "没有MeshCollider!"); } } }}
阅读全文
2 0
- MeshCollider编辑器工具
- MeshCollider的那些坑
- unity MeshCollider组件
- Unity3d使用MeshCollider检测区域
- 【开发工具】 常用编辑器
- 编辑器、软件、工具集合
- unity 编辑器工具扩展
- EditorUtility 编辑器工具
- [工具]markdown编辑器
- 软件、工具、编辑器
- 【工具】文档编辑器
- Unity编辑器工具错误
- unity3d给子物体添加MeshCollider
- 编辑器工具--通用编辑器工具(持续完善中)
- PHP编辑器/开发工具介绍
- [生产力工具]编辑器sublime入门
- Unity研究院之多余的MeshCollider和Animation组件
- Unity研究院之多余的MeshCollider和Animation组件
- IDA逆向训练-1
- 让局域网内除主机以外的其他电脑访问虚拟机
- mybatis ORDER BY排序问题
- poj3525(二分+半平面判定)
- 关于RTX51 TINY的分析与探讨
- MeshCollider编辑器工具
- Java 性能优化的五大技巧
- 欢迎使用CSDN-markdown编辑器
- ecplise调出显示代码行号
- 考研英语
- NIO 入门
- Android手机服务器开发步骤
- 省赛 最小秘钥
- Android如何让父控件不拦截子控件的事件