|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
using UnityEditor;
|
|
|
|
using System;
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
namespace AX.GeneralTools
|
|
|
|
{
|
|
|
|
public enum RenameType
|
|
|
|
{
|
|
|
|
重命名,
|
|
|
|
添加前缀,
|
|
|
|
添加后缀,
|
|
|
|
查找替换,
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum RenderingMode
|
|
|
|
{
|
|
|
|
Opaque = 0,
|
|
|
|
Cutout = 1,
|
|
|
|
Fade = 2,
|
|
|
|
Transparent = 3
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum ObjectMode
|
|
|
|
{
|
|
|
|
所有物体,
|
|
|
|
选择的物体,
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum CommonMaterial
|
|
|
|
{
|
|
|
|
基础材质,
|
|
|
|
金属材质,
|
|
|
|
透明文字,
|
|
|
|
主体透明,
|
|
|
|
周边配楼,
|
|
|
|
玻璃门窗,
|
|
|
|
}
|
|
|
|
public enum ShadowType
|
|
|
|
{
|
|
|
|
On = 0,
|
|
|
|
Off = 1,
|
|
|
|
TwoSided = 2,
|
|
|
|
ShadowsOnly = 3,
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum CompentType
|
|
|
|
{
|
|
|
|
添加,
|
|
|
|
删除,
|
|
|
|
}
|
|
|
|
public enum ComponentMode
|
|
|
|
{
|
|
|
|
BoxCollider,
|
|
|
|
MeshCollider,
|
|
|
|
CapsuleCollider,
|
|
|
|
CharacterControler,
|
|
|
|
LineRenderer,
|
|
|
|
TrailRenderer,
|
|
|
|
NavMeshAgent,
|
|
|
|
Animator,
|
|
|
|
AudioSource,
|
|
|
|
VideoPlayer,
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum DefualtCollider
|
|
|
|
{
|
|
|
|
None,
|
|
|
|
MeshCollider,
|
|
|
|
BoxCollider,
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum PowerMode
|
|
|
|
{
|
|
|
|
None,
|
|
|
|
NameAndTask,
|
|
|
|
}
|
|
|
|
public class GeneralTools:Editor
|
|
|
|
{
|
|
|
|
// 重命名
|
|
|
|
public static RenameType renameType;
|
|
|
|
public static bool isRenameTools = true;
|
|
|
|
public static string BaseName = "Object";
|
|
|
|
public static int BaseCount = 0;
|
|
|
|
public static int Increment = 1;
|
|
|
|
|
|
|
|
public static string Prefix = "Prefix_";
|
|
|
|
public static string Suffix = "_Suffix";
|
|
|
|
public static string FindName = "";
|
|
|
|
public static string ReplaceName = "";
|
|
|
|
//常用材质
|
|
|
|
public static CommonMaterial commonMaterial;
|
|
|
|
public static bool isCommonMaterial = true;
|
|
|
|
////切换标准材质为通用渲染管线材质
|
|
|
|
//public static bool isConvertShander = true;
|
|
|
|
////public static Color m_BaseColor = Color.gray;
|
|
|
|
////public static Texture2D m_BaseMap;
|
|
|
|
////public static float m_Metallic;
|
|
|
|
////public static Texture2D m_MetallicGlossMap;
|
|
|
|
////public static float m_Smothness;
|
|
|
|
////public static Texture2D m_BumpMap;
|
|
|
|
////public static Material m_Material;
|
|
|
|
//public static Material[] m_Materials = new Material[0];
|
|
|
|
//转换RenderingMode
|
|
|
|
public static ObjectMode objectMode;
|
|
|
|
public static RenderingMode defaultMode = RenderingMode.Transparent;
|
|
|
|
public static RenderingMode targetMode = RenderingMode.Fade;
|
|
|
|
public static bool isRenderingMode = true;
|
|
|
|
//转换材质颜色
|
|
|
|
public static bool isMainColor = true;
|
|
|
|
public static ObjectMode SelectMode = ObjectMode.选择的物体;
|
|
|
|
public static Color defaultColor = new Color(0.588f, 0.588f, 0.588f, 1f);
|
|
|
|
public static Color targetColor = Color.white;
|
|
|
|
//设置标准材质属性
|
|
|
|
public static bool isSetMaterialAttiure = true;
|
|
|
|
public static float metallic = 0;
|
|
|
|
public static float smoothness = 0;
|
|
|
|
public static Color emissionColor = Color.black;
|
|
|
|
public static ShadowType shadowType;
|
|
|
|
//添加常用组件
|
|
|
|
public static bool isCompent = true;
|
|
|
|
public static CompentType compentType;
|
|
|
|
//public static ComponentMode componentMode;
|
|
|
|
//设置物体属性
|
|
|
|
public static bool isAttribut = true;
|
|
|
|
public static string NormalTag = "Untagged";
|
|
|
|
public static int NormalLayer = 0;
|
|
|
|
public static DefualtCollider defualtCollider;
|
|
|
|
public static bool isAddInstantiateObjectInfo;
|
|
|
|
public static int FloorNum = 0;
|
|
|
|
//替换prefab
|
|
|
|
public static bool isReplacePrefab = true;
|
|
|
|
public static GameObject OriginalPrefab;
|
|
|
|
public static bool isName=true;
|
|
|
|
public static bool isParent=true;
|
|
|
|
public static bool isPosition = true;
|
|
|
|
public static bool isRotation = true;
|
|
|
|
public static bool isScale = true;
|
|
|
|
public static bool isDestroyOriginalPrefab = false;
|
|
|
|
//设置物体父物体
|
|
|
|
public static bool isSetParent = true;
|
|
|
|
public static Transform Parent;
|
|
|
|
//反转法线
|
|
|
|
public static bool isFlip=true;
|
|
|
|
//显示选择物体路径
|
|
|
|
public static bool isShowSelectedName=true;
|
|
|
|
//Power
|
|
|
|
public static bool ispowerSet = true;
|
|
|
|
public static PowerMode powerMode;
|
|
|
|
public static GameObject Body;
|
|
|
|
public static Font font;
|
|
|
|
private static Vector3 size;
|
|
|
|
|
|
|
|
public static void FlipNormal()
|
|
|
|
{
|
|
|
|
GameObject obj = Selection.activeGameObject;
|
|
|
|
Vector3[] normals = obj.GetComponent<MeshFilter>().sharedMesh.normals;
|
|
|
|
for (int i = 0; i < normals.Length; i++)
|
|
|
|
{
|
|
|
|
normals[i] = -normals[i];
|
|
|
|
}
|
|
|
|
obj.GetComponent<MeshFilter>().sharedMesh.normals = normals;
|
|
|
|
|
|
|
|
int[] triangles = obj.GetComponent<MeshFilter>().sharedMesh.triangles;
|
|
|
|
for (int i = 0; i < triangles.Length; i += 3)
|
|
|
|
{
|
|
|
|
int t = triangles[i];
|
|
|
|
triangles[i] = triangles[i + 2];
|
|
|
|
triangles[i + 2] = t;
|
|
|
|
}
|
|
|
|
obj.GetComponent<MeshFilter>().sharedMesh.triangles = triangles;
|
|
|
|
}
|
|
|
|
public static void SetParent()
|
|
|
|
{
|
|
|
|
foreach(GameObject go in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
go.transform.parent = Parent;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//重命名
|
|
|
|
public static void OnRename()
|
|
|
|
{
|
|
|
|
if (Selection.objects == null)
|
|
|
|
return;
|
|
|
|
|
|
|
|
int PostFix = BaseCount;
|
|
|
|
List<GameObject> mySelection = new List<GameObject>(Selection.gameObjects);
|
|
|
|
mySelection.Sort((go1, go2) => go1.transform.GetSiblingIndex().CompareTo(go2.transform.GetSiblingIndex()));
|
|
|
|
foreach (GameObject obj in mySelection)
|
|
|
|
{
|
|
|
|
obj.name = BaseName + PostFix;
|
|
|
|
PostFix += Increment;
|
|
|
|
BaseCount = PostFix;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//添加前缀
|
|
|
|
public static void OnAddPrefix()
|
|
|
|
{
|
|
|
|
foreach (GameObject obj in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
obj.name = Prefix + obj.name;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//添加后缀
|
|
|
|
public static void OnAddSuffix()
|
|
|
|
{
|
|
|
|
foreach (GameObject obj in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
obj.name = obj.name + Suffix;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//查找替换
|
|
|
|
public static void OnReplace()
|
|
|
|
{
|
|
|
|
foreach (GameObject obj in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
string newName = obj.name.Replace(FindName, ReplaceName);
|
|
|
|
obj.name = newName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//常用材质
|
|
|
|
public static void OnCommomMaterial(CommonMaterial _commonMaterial)
|
|
|
|
{
|
|
|
|
foreach (GameObject obj in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
if (obj.GetComponent<MeshRenderer>() != null)
|
|
|
|
{
|
|
|
|
foreach (Material m in obj.GetComponent<MeshRenderer>().sharedMaterials)
|
|
|
|
{
|
|
|
|
switch (_commonMaterial)
|
|
|
|
{
|
|
|
|
case CommonMaterial.基础材质:
|
|
|
|
m.shader = Shader.Find("Universal Render Pipeline/Lit");
|
|
|
|
m.SetInt("_Surface", 0);
|
|
|
|
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
|
|
|
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
|
|
|
|
m.SetInt("_ZWrite", 1);
|
|
|
|
m.DisableKeyword("_ALPHATEST_ON");
|
|
|
|
m.DisableKeyword("_ALPHABLEND_ON");
|
|
|
|
m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
|
|
|
|
m.renderQueue = -1;
|
|
|
|
obj.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
|
|
|
m.SetFloat("_Metallic", 0);
|
|
|
|
m.SetFloat("_Smoothness", 0);
|
|
|
|
break;
|
|
|
|
case CommonMaterial.金属材质:
|
|
|
|
m.shader = Shader.Find("Universal Render Pipeline/Lit");
|
|
|
|
m.SetInt("_Surface", 0);
|
|
|
|
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
|
|
|
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
|
|
|
|
m.SetInt("_ZWrite", 1);
|
|
|
|
m.DisableKeyword("_ALPHATEST_ON");
|
|
|
|
m.DisableKeyword("_ALPHABLEND_ON");
|
|
|
|
m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
|
|
|
|
m.renderQueue = -1;
|
|
|
|
obj.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
|
|
|
m.SetFloat("_Metallic", 1);
|
|
|
|
m.SetFloat("_Smoothness", 1);
|
|
|
|
break;
|
|
|
|
case CommonMaterial.透明文字:
|
|
|
|
m.shader = Shader.Find("Universal Render Pipeline/Lit");
|
|
|
|
m.SetInt("_Surface", 1);
|
|
|
|
m.SetColor("_BaseColor", Color.white);
|
|
|
|
//m.SetFloat("_Mode", 2);
|
|
|
|
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
|
|
|
|
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
|
|
|
|
m.SetInt("_ZWrite", 0);
|
|
|
|
m.DisableKeyword("_ALPHATEST_ON");
|
|
|
|
m.EnableKeyword("_ALPHABLEND_ON");
|
|
|
|
m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
|
|
|
|
m.renderQueue = 3000;
|
|
|
|
obj.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
|
|
|
m.SetFloat("_Metallic", 0);
|
|
|
|
m.SetFloat("_Smoothness", 0);
|
|
|
|
break;
|
|
|
|
case CommonMaterial.主体透明:
|
|
|
|
m.shader = Shader.Find("Standard");
|
|
|
|
m.SetInt("_Surface", 1);
|
|
|
|
m.SetColor("_BaseColor", new Color(0.588f, 0.784f, 0.843f, 0.47f));
|
|
|
|
m.SetFloat("_Mode", 3);
|
|
|
|
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
|
|
|
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
|
|
|
|
m.SetInt("_ZWrite", 0);
|
|
|
|
m.DisableKeyword("_ALPHATEST_ON");
|
|
|
|
m.DisableKeyword("_ALPHABLEND_ON");
|
|
|
|
m.EnableKeyword("_ALPHAPREMULTIPLY_ON");
|
|
|
|
m.renderQueue = 3000;
|
|
|
|
obj.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
|
|
|
m.SetFloat("_Metallic", 0);
|
|
|
|
m.SetFloat("_Smoothness", 0);
|
|
|
|
m.SetFloat("_SpecularHighlights", 0);
|
|
|
|
break;
|
|
|
|
case CommonMaterial.周边配楼:
|
|
|
|
m.shader = Shader.Find("Standard");
|
|
|
|
m.SetInt("_Surface", 1);
|
|
|
|
m.SetColor("_BaseColor", new Color(0.55f, 0.63f, 0.71f, 0.7843f));
|
|
|
|
m.SetFloat("_Mode", 3);
|
|
|
|
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
|
|
|
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
|
|
|
|
m.SetInt("_ZWrite", 0);
|
|
|
|
m.DisableKeyword("_ALPHATEST_ON");
|
|
|
|
m.DisableKeyword("_ALPHABLEND_ON");
|
|
|
|
m.EnableKeyword("_ALPHAPREMULTIPLY_ON");
|
|
|
|
m.renderQueue = 3000;
|
|
|
|
obj.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
|
|
|
m.SetFloat("_Metallic", 0);
|
|
|
|
m.SetFloat("_Smoothness", 0);
|
|
|
|
m.SetFloat("_SpecularHighlights", 0);
|
|
|
|
break;
|
|
|
|
case CommonMaterial.玻璃门窗:
|
|
|
|
m.shader = Shader.Find("Universal Render Pipeline/Lit");
|
|
|
|
m.SetInt("_Surface", 0);
|
|
|
|
m.SetColor("_BaseColor", Color.white);
|
|
|
|
//m.SetFloat("_Mode", 0);
|
|
|
|
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
|
|
|
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
|
|
|
|
m.SetInt("_ZWrite", 1);
|
|
|
|
m.DisableKeyword("_ALPHATEST_ON");
|
|
|
|
m.DisableKeyword("_ALPHABLEND_ON");
|
|
|
|
m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
|
|
|
|
m.renderQueue = -1;
|
|
|
|
obj.GetComponent<MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
|
|
|
|
m.SetFloat("_Metallic", 0);
|
|
|
|
m.SetFloat("_Smoothness", 0.95f);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//public static void CovertShaderAttrube()
|
|
|
|
//{
|
|
|
|
// m_Materials = Selection.activeGameObject.GetComponent<Renderer>().sharedMaterials;
|
|
|
|
|
|
|
|
// for(int i = 0; i < m_Materials.Length; i++)
|
|
|
|
// {
|
|
|
|
// if(m_Materials[i].shader== Shader.Find("Standard"))
|
|
|
|
// {
|
|
|
|
// var _BaseColor = m_Materials[i].GetColor("_Color");
|
|
|
|
// var _BaseMap = m_Materials[i].GetTexture("_MainTex");
|
|
|
|
// var _Metallic = m_Materials[i].GetFloat("_Metallic");
|
|
|
|
// var _MetallicGlossMap = m_Materials[i].GetTexture("_MetallicGlossMap");
|
|
|
|
// var _Smoothness = m_Materials[i].GetFloat("_Glossiness");
|
|
|
|
// var _BumpMap = m_Materials[i].GetTexture("_BumpMap");
|
|
|
|
|
|
|
|
// m_Materials[i].shader = Shader.Find("Universal Render Pipeline/Lit");
|
|
|
|
|
|
|
|
// m_Materials[i].SetColor("_BaseColor", _BaseColor);
|
|
|
|
// m_Materials[i].SetTexture("_BaseMap", _BaseMap);
|
|
|
|
// m_Materials[i].SetFloat("_Metallic", _Metallic);
|
|
|
|
// m_Materials[i].SetTexture("_MetallicGlossMap", _MetallicGlossMap);
|
|
|
|
// m_Materials[i].SetFloat("_Smoothness", _Smoothness);
|
|
|
|
// m_Materials[i].SetTexture("_BumpMap", _BumpMap);
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
//if (m_Material != null&&m_Material.shader==Shader.Find("Standard"))
|
|
|
|
//{
|
|
|
|
// m_BaseColor = m_Material.GetColor("_Color");
|
|
|
|
// m_BaseMap = (Texture2D)m_Material.GetTexture("_MainTex");
|
|
|
|
// m_Metallic = m_Material.GetFloat("_Metallic");
|
|
|
|
// m_MetallicGlossMap = m_Material.GetTexture("_MetallicGlossMap") as Texture2D;
|
|
|
|
// m_Smothness = m_Material.GetFloat("_Glossiness");
|
|
|
|
// m_BumpMap = m_Material.GetTexture("_BumpMap") as Texture2D;
|
|
|
|
//}
|
|
|
|
//}
|
|
|
|
|
|
|
|
//public static void SetShaderAttrube()
|
|
|
|
//{
|
|
|
|
// //if (m_Material != null && m_Material.shader == Shader.Find("Standard"))
|
|
|
|
// //{
|
|
|
|
// // m_Material.shader = Shader.Find("Universal Render Pipeline/Lit");
|
|
|
|
// // m_Material.SetColor("_BaseColor", m_BaseColor);
|
|
|
|
// // m_Material.SetTexture("_BaseMap", m_BaseMap);
|
|
|
|
// // m_Material.SetFloat("_Metallic", m_Metallic);
|
|
|
|
// // m_Material.SetTexture("_MetallicGlossMap", m_MetallicGlossMap);
|
|
|
|
// // m_Material.SetFloat("_Smoothness", m_Smothness);
|
|
|
|
// // m_Material.SetTexture("_BumpMap", m_BumpMap);
|
|
|
|
// //}
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//切换颜色
|
|
|
|
public static void OnMainColor()
|
|
|
|
{
|
|
|
|
switch (SelectMode)
|
|
|
|
{
|
|
|
|
case ObjectMode.所有物体:
|
|
|
|
foreach (GameObject obj in GameObject.FindObjectsOfType(typeof(GameObject)))
|
|
|
|
{
|
|
|
|
if (obj.GetComponent<MeshRenderer>() != null)
|
|
|
|
{
|
|
|
|
foreach (Material m in obj.GetComponent<MeshRenderer>().sharedMaterials)
|
|
|
|
{
|
|
|
|
if (m.shader == Shader.Find("Universal Render Pipeline/Lit"))
|
|
|
|
{
|
|
|
|
if (m.GetColor("_BaseColor") == defaultColor)
|
|
|
|
{
|
|
|
|
m.SetColor("_BaseColor", targetColor);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ObjectMode.选择的物体:
|
|
|
|
foreach (GameObject o in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
if (o.GetComponent<MeshRenderer>() != null)
|
|
|
|
{
|
|
|
|
foreach (Material m in o.GetComponent<MeshRenderer>().sharedMaterials)
|
|
|
|
{
|
|
|
|
if (m.shader == Shader.Find("Universal Render Pipeline/Lit") )
|
|
|
|
{
|
|
|
|
m.SetColor("_BaseColor", targetColor);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//添加或删除组建
|
|
|
|
public static void Compents(ComponentMode componentMode)
|
|
|
|
{
|
|
|
|
bool isAdd = true;
|
|
|
|
switch (compentType)
|
|
|
|
{
|
|
|
|
case CompentType.添加:
|
|
|
|
isAdd = true;
|
|
|
|
break;
|
|
|
|
case CompentType.删除:
|
|
|
|
isAdd = false;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (Selection.activeGameObject)
|
|
|
|
{
|
|
|
|
foreach(GameObject obj in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
switch (componentMode)
|
|
|
|
{
|
|
|
|
case ComponentMode.BoxCollider:
|
|
|
|
if (isAdd)
|
|
|
|
{
|
|
|
|
if (obj.GetComponent<MeshRenderer>() != null || obj.GetComponent<SkinnedMeshRenderer>() != null)
|
|
|
|
{
|
|
|
|
if (!obj.GetComponent<BoxCollider>())
|
|
|
|
{
|
|
|
|
obj.AddComponent<BoxCollider>();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Debug.LogWarning("BoxCollider" + "组件已存在");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (obj.GetComponent<BoxCollider>())
|
|
|
|
{
|
|
|
|
DestroyImmediate(obj.GetComponent<BoxCollider>());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Debug.LogWarning("BoxCollider组件不存在!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ComponentMode.MeshCollider:
|
|
|
|
if (isAdd)
|
|
|
|
{
|
|
|
|
if (obj.GetComponent<MeshRenderer>() != null || obj.GetComponent<SkinnedMeshRenderer>() != null)
|
|
|
|
{
|
|
|
|
if (!obj.GetComponent<MeshCollider>())
|
|
|
|
{
|
|
|
|
obj.AddComponent<MeshCollider>();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Debug.LogWarning("MeshCollider" + "组件已存在");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (obj.GetComponent<MeshCollider>())
|
|
|
|
{
|
|
|
|
DestroyImmediate(obj.GetComponent<MeshCollider>());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Debug.LogWarning("MeshCollider组件不存在!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//设置物体属性
|
|
|
|
public static void SetObjectAttribute()
|
|
|
|
{
|
|
|
|
foreach (GameObject obj in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
obj.tag = NormalTag;
|
|
|
|
obj.layer = NormalLayer;
|
|
|
|
if (obj.GetComponent<MeshRenderer>() ||obj.GetComponent<SkinnedMeshRenderer>())
|
|
|
|
{
|
|
|
|
switch (defualtCollider)
|
|
|
|
{
|
|
|
|
case DefualtCollider.None:
|
|
|
|
return;
|
|
|
|
case DefualtCollider.BoxCollider:
|
|
|
|
if (!obj.GetComponent<BoxCollider>())
|
|
|
|
obj.AddComponent<BoxCollider>();
|
|
|
|
else
|
|
|
|
Debug.LogWarning("BoxCollider已存在");
|
|
|
|
break;
|
|
|
|
case DefualtCollider.MeshCollider:
|
|
|
|
if (!obj.GetComponent<MeshCollider>())
|
|
|
|
obj.AddComponent<MeshCollider>();
|
|
|
|
else
|
|
|
|
Debug.LogWarning("MeshCollider");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//if (isAddInstantiateObjectInfo)
|
|
|
|
//{
|
|
|
|
// obj.AddComponent<InstantiateObjectInfo>();
|
|
|
|
// obj.GetComponent<InstantiateObjectInfo>().FloorNum = FloorNum;
|
|
|
|
//}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void OnReplacePrefab()
|
|
|
|
{
|
|
|
|
//foreach(GameObject obj in Selection.gameObjects)
|
|
|
|
//{
|
|
|
|
// GameObject op = PrefabUtility.InstantiatePrefab(OriginalPrefab) as GameObject;
|
|
|
|
|
|
|
|
// if (isName) op.name = obj.name;
|
|
|
|
// if (isParent) op.transform.parent = obj.transform.parent;
|
|
|
|
// if (isPosition) op.transform.localPosition = obj.transform.localPosition;
|
|
|
|
// if (isRotation) op.transform.localRotation = obj.transform.localRotation;
|
|
|
|
// if (isScale) op.transform.localScale = obj.transform.localScale;
|
|
|
|
// if(isDestroyOriginalPrefab) DestroyImmediate(obj);
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
foreach (GameObject go in Selection.gameObjects)
|
|
|
|
{
|
|
|
|
GameObject op = PrefabUtility.InstantiatePrefab(OriginalPrefab) as GameObject;
|
|
|
|
op.GetComponent<RectTransform>().pivot = go.GetComponent<RectTransform>().pivot;
|
|
|
|
op.GetComponent<RectTransform>().anchorMin = go.GetComponent<RectTransform>().anchorMin;
|
|
|
|
op.GetComponent<RectTransform>().anchorMax = go.GetComponent<RectTransform>().anchorMax;
|
|
|
|
|
|
|
|
op.GetComponent<RectTransform>().anchoredPosition = go.GetComponent<RectTransform>().anchoredPosition;
|
|
|
|
|
|
|
|
op.GetComponent<RectTransform>().sizeDelta = go.GetComponent<RectTransform>().sizeDelta;
|
|
|
|
|
|
|
|
//op.GetComponent<Text>().text = go.GetComponent<Text>().text;
|
|
|
|
//op.GetComponent<Text>().fontSize = (int)go.GetComponent<Text>().fontSize;
|
|
|
|
|
|
|
|
//if(go.GetComponent<TMP_Text>().alignment == )
|
|
|
|
//op.GetComponent<Text>().alignment = (TextAnchor)go.GetComponent<TMP_Text>().alignment;
|
|
|
|
|
|
|
|
op.name = go.name;
|
|
|
|
op.transform.SetParent(go.transform.parent, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
//var go = Selection.activeGameObject;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public static string GetName(Transform parent, string myName)
|
|
|
|
{
|
|
|
|
if (parent != null)
|
|
|
|
{
|
|
|
|
string tempName = $"{parent.name}/{myName}";
|
|
|
|
return GetName(parent.parent, tempName);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
int index = myName.IndexOf($"/");
|
|
|
|
myName = myName.Substring(index + 1);
|
|
|
|
index = myName.IndexOf($"/");
|
|
|
|
myName = myName.Substring(index + 1);
|
|
|
|
Debug.Log(myName);
|
|
|
|
return myName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|