You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
690 lines
32 KiB
690 lines
32 KiB
2 years ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEditor;
|
||
|
using UnityEngine.AI;
|
||
|
using System.IO;
|
||
|
using System.Text;
|
||
|
using System;
|
||
|
|
||
|
public class SceneToolFloor
|
||
|
{
|
||
|
[MenuItem("SceneTool/SetFloorMessage")]//添加FloorMessage脚本绑定楼层信息
|
||
|
public static void SetFloorMessage()
|
||
|
{
|
||
|
Transform neiParent = GameObject.Find("shinei").transform.GetChild(0);
|
||
|
for (int i = 0; i < neiParent.childCount; i++)
|
||
|
{
|
||
|
//Debug.Log(neiParent.GetChild(i).name);
|
||
|
if (!neiParent.GetChild(i).GetComponent<FloorMessage>())
|
||
|
{
|
||
|
neiParent.GetChild(i).gameObject.AddComponent<FloorMessage>();
|
||
|
}
|
||
|
FloorMessage msg = neiParent.GetChild(i).GetComponent<FloorMessage>();
|
||
|
msg.targetTrans = GetTarget(neiParent.GetChild(i));
|
||
|
msg.buildNum = neiParent.name;
|
||
|
if (!neiParent.GetChild(i).name.ToLower().Contains("m"))
|
||
|
{
|
||
|
string floornum = neiParent.GetChild(i).name.Substring
|
||
|
(neiParent.GetChild(i).name.ToLower().IndexOf("nei") + 3/*, neiParent.GetChild(i).name.Length - 4*/);
|
||
|
|
||
|
msg.floorNum = int.Parse(floornum);
|
||
|
msg.interlayerNum = 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
string floornum = neiParent.GetChild(i).name.Substring(4);
|
||
|
msg.floorNum = int.Parse(floornum);
|
||
|
msg.interlayerNum = 1;
|
||
|
}
|
||
|
}
|
||
|
Transform waiParent = GameObject.Find("shiwai").transform.GetChild(0);
|
||
|
for (int i = 0; i < waiParent.childCount; i++)
|
||
|
{
|
||
|
//Debug.Log(waiParent.GetChild(i).name);
|
||
|
if (!waiParent.GetChild(i).GetComponent<FloorMessage>())
|
||
|
{
|
||
|
waiParent.GetChild(i).gameObject.AddComponent<FloorMessage>();
|
||
|
}
|
||
|
FloorMessage msg = waiParent.GetChild(i).GetComponent<FloorMessage>();
|
||
|
msg.buildNum = waiParent.name;
|
||
|
if (!waiParent.GetChild(i).name.ToLower().Contains("m"))
|
||
|
{
|
||
|
string floornum = waiParent.GetChild(i).name.Substring
|
||
|
(waiParent.GetChild(i).name.ToLower().IndexOf("wai") + 3/*, waiParent.GetChild(i).name.Length - 4*/);
|
||
|
msg.floorNum = int.Parse(floornum);
|
||
|
msg.interlayerNum = 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
string floornum = waiParent.GetChild(i).name.Substring(4);
|
||
|
msg.floorNum = int.Parse(floornum);
|
||
|
msg.interlayerNum = 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
static Transform GetTarget(Transform parent)
|
||
|
{
|
||
|
for (int i = 0; i < parent.childCount; i++)
|
||
|
{
|
||
|
if (parent.GetChild(i).name.ToLower().Contains("_floor")
|
||
|
|| parent.GetChild(i).name.ToLower().Contains("-floor")
|
||
|
)
|
||
|
{
|
||
|
return parent.GetChild(i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return parent;
|
||
|
}
|
||
|
[MenuItem("SceneTool/SetNavLayershinei")]//添加寻路层(选中shinei对象设置,注:扶梯情况特殊没有包含)
|
||
|
public static void SetNavLayer()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
CloneableEnums shineienums = GameObject.Find("CloneAbleEnumsParent").transform.Find("ShiNeiFloor").GetComponent<CloneableEnums>();
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].name.ToLower().Contains("_floor") ||//地面
|
||
|
obj[i].name.ToLower().Contains("_floor") ||//地面
|
||
|
obj[i].name.ToLower().Contains("-floor"))
|
||
|
{
|
||
|
|
||
|
obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<PathFindingClick>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
//obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shineienums.CloneableTypes;
|
||
|
|
||
|
}
|
||
|
if (obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Contains(CloneObjType.FirefightingRobot))
|
||
|
{
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Remove(CloneObjType.FirefightingRobot);
|
||
|
}
|
||
|
// CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>();
|
||
|
// GameObject CarRoad = GameObject.Find("FloorNei");
|
||
|
// var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
|
||
|
// enumParent.CloneableTypes = CloneableEnums.CloneableTypes;
|
||
|
if (obj[i].parent.GetComponent<FloorMessage>())
|
||
|
{
|
||
|
FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>();
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
|
||
|
}
|
||
|
if (obj[i].parent.parent.GetComponent<FloorMessage>())
|
||
|
{
|
||
|
FloorMessage fmg = obj[i].parent.parent.GetComponent<FloorMessage>();
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
|
||
|
}
|
||
|
}
|
||
|
//if (obj[i].name.ToLower().Contains("_wall") ||//墙面
|
||
|
// obj[i].name.ToLower().Contains("_wall"))
|
||
|
//{
|
||
|
// obj[i].gameObject.layer = LayerMask.NameToLayer("Wall");
|
||
|
// // obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
|
||
|
// // if (!obj[i].gameObject.GetComponent<NavMeshModifier>())
|
||
|
// // {
|
||
|
// // obj[i].gameObject.AddComponent<NavMeshModifier>();
|
||
|
// // }
|
||
|
// // NavMeshModifier mod = obj[i].gameObject.GetComponent<NavMeshModifier>();
|
||
|
// // mod.overrideArea = true;
|
||
|
// // mod.area = 1;
|
||
|
// // if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
// // {
|
||
|
// // obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
// // }
|
||
|
//}
|
||
|
//if (obj[i].name.ToLower().Contains("lt")&& !obj[i].name.ToLower().Contains("name"))//楼梯
|
||
|
//{
|
||
|
// obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
|
||
|
// if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
// {
|
||
|
// obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
// }
|
||
|
// if (!obj[i].gameObject.GetComponent<PathFindingClick>())
|
||
|
// {
|
||
|
// obj[i].gameObject.AddComponent<PathFindingClick>();
|
||
|
// }
|
||
|
// if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
// {
|
||
|
// obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
// }
|
||
|
// if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
// {
|
||
|
// obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
// //obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
// }
|
||
|
// if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
// {
|
||
|
// obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
// obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shineienums.CloneableTypes;
|
||
|
|
||
|
// }
|
||
|
// if (obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Contains(CloneObjType.FirefightingRobot))
|
||
|
// {
|
||
|
// obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Remove(CloneObjType.FirefightingRobot);
|
||
|
// }
|
||
|
// // CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>();
|
||
|
// // GameObject CarRoad = GameObject.Find("FloorNei");
|
||
|
// // var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
|
||
|
// // enumParent.CloneableTypes = CloneableEnums.CloneableTypes;
|
||
|
// if (obj[i].parent.GetComponent<FloorMessage>())
|
||
|
// {
|
||
|
// FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>();
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
|
||
|
// }
|
||
|
// if (obj[i].parent.parent.GetComponent<FloorMessage>())
|
||
|
// {
|
||
|
// FloorMessage fmg = obj[i].parent.parent.GetComponent<FloorMessage>();
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
|
||
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
|
||
|
// }
|
||
|
//}
|
||
|
}
|
||
|
}
|
||
|
[MenuItem("SceneTool/SetNavLTLayer")]//添加寻路层(选中shinei对象设置,注:扶梯情况特殊没有包含)
|
||
|
public static void SetNavLTLayer()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
CloneableEnums shineienums = GameObject.Find("CloneAbleEnumsParent").transform.Find("ShiNeiFloor").GetComponent<CloneableEnums>();
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].name.ToUpper().Contains("LT"))
|
||
|
|
||
|
{
|
||
|
|
||
|
obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad");
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<PathFindingClick>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
//obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shineienums.CloneableTypes;
|
||
|
|
||
|
}
|
||
|
if (obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Contains(CloneObjType.FirefightingRobot))
|
||
|
{
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Remove(CloneObjType.FirefightingRobot);
|
||
|
}
|
||
|
// CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>();
|
||
|
// GameObject CarRoad = GameObject.Find("FloorNei");
|
||
|
// var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
|
||
|
// enumParent.CloneableTypes = CloneableEnums.CloneableTypes;
|
||
|
if (obj[i].parent.GetComponent<FloorMessage>())
|
||
|
{
|
||
|
FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>();
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
|
||
|
}
|
||
|
if (obj[i].parent.parent.GetComponent<FloorMessage>())
|
||
|
{
|
||
|
FloorMessage fmg = obj[i].parent.parent.GetComponent<FloorMessage>();
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[MenuItem("SceneTool/GetNavLayerCarRoad")]
|
||
|
public static void GetNavLayerCarRoad()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
{
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].gameObject.layer == LayerMask.NameToLayer("CarRoad"))
|
||
|
{
|
||
|
// if (!obj[i].gameObject.GetComponent<NavMeshModifier>())
|
||
|
{
|
||
|
Debug.Log(obj[i].name);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[MenuItem("SceneTool/SetNavLayerCarRoad")]//高层设置车辆寻路层,添加脚本及设置脚本属性
|
||
|
public static void SetNavLayerCarRoad()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
CloneableEnums carenums = GameObject.Find("CloneAbleEnumsParent").transform.Find("CarLode").GetComponent<CloneableEnums>();
|
||
|
{
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].gameObject.layer == LayerMask.NameToLayer("CarRoad")&&
|
||
|
!obj[i].gameObject.GetComponent<NavMeshModifier>())
|
||
|
{
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<PathFindingClick>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = carenums.CloneableTypes;
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
[MenuItem("SceneTool/SetNavLayerShiwaiHumanRoad")]
|
||
|
public static void SetNavLayershiwaiHumanRoad()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
CloneableEnums shiwaienums = GameObject.Find("CloneAbleEnumsParent").transform.Find("ShiWaiFloor").GetComponent<CloneableEnums>();
|
||
|
{
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].gameObject.layer == LayerMask.NameToLayer("SoldierRoad")
|
||
|
&& !obj[i].gameObject.GetComponent<NavMeshModifier>())
|
||
|
{
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<PathFindingClick>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = shiwaienums.CloneableTypes;
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
[MenuItem("SceneTool/ReadCloneTypes")]
|
||
|
static void ReadCloneTypes()
|
||
|
{
|
||
|
string path = Application.dataPath + "/Floors.txt";
|
||
|
string str = File.ReadAllText(path, Encoding.UTF8);
|
||
|
string[] EnumStrList = str.Split(',');
|
||
|
//List<CloneObjType> EnmuList = new List<CloneObjType>();
|
||
|
//foreach (var item in EnumStrList)
|
||
|
//{
|
||
|
// if (!string.IsNullOrEmpty(item))
|
||
|
// {
|
||
|
// CloneObjType type = (CloneObjType)Enum.Parse(typeof(CloneObjType), item);
|
||
|
// EnmuList.Add(type);
|
||
|
// }
|
||
|
//}
|
||
|
//GameObject CarRoad = GameObject.Find("FloorNei");
|
||
|
//if (!CarRoad.GetComponent<CloneableEnums>())
|
||
|
//{
|
||
|
// CarRoad.AddComponent<CloneableEnums>();
|
||
|
//}
|
||
|
//var CloneableEnums = CarRoad.GetComponent<CloneableEnums>();
|
||
|
//CloneableEnums.CloneableTypes = EnmuList;
|
||
|
}
|
||
|
[MenuItem("SceneTool/AddColider")]
|
||
|
static void AddColider()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered);
|
||
|
{
|
||
|
Debug.Log(obj[0].name);
|
||
|
}
|
||
|
}
|
||
|
[MenuItem("SceneTool/SetShiNeiXHS")]
|
||
|
public static void SetShiNeiXHS()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
CloneableEnums SNXHS = GameObject.Find("CloneAbleEnumsParent").transform.Find("SNXHS").GetComponent<CloneableEnums>();
|
||
|
{
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
FloorMessage floormessage = obj[i].GetComponentInParent<FloorMessage>();
|
||
|
if (obj[i].gameObject.name.ToUpper().Contains("XHS")/*&& obj[i].gameObject.GetComponent<Animator>()*/)
|
||
|
{
|
||
|
if (!obj[i].gameObject.GetComponent<MeshCollider>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<MeshCollider>();
|
||
|
}
|
||
|
|
||
|
if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<WaterSource>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<WaterSource>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<WATER_SOURCE_INFO_SYNC>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<WATER_SOURCE_INFO_SYNC>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<XFSS>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<XFSS>();
|
||
|
}
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = floormessage.buildNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = floormessage.floorNum;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = floormessage.interlayerNum;
|
||
|
obj[i].gameObject.GetComponent<XFSS>().type = XFSSType.室内消火栓;
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = SNXHS.CloneableTypes;
|
||
|
obj[i].gameObject.GetComponent<WaterSource>().water = true;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 作战部署消火栓等图标显示Quad添加,需要先在需要的物体上添加XFSS脚本
|
||
|
/// </summary>
|
||
|
[MenuItem("SceneTool/AddQuad")]
|
||
|
public static void AddQuad()
|
||
|
{
|
||
|
QuadMat quadMat = GameObject.Find("QuadMat").GetComponent<QuadMat>();
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].GetComponent<XFSS>())
|
||
|
{
|
||
|
if (!obj[i].transform.Find("Quad")&& obj[i].name!="Quad")
|
||
|
{
|
||
|
GameObject quad = GameObject.Instantiate(quadMat.Quad);
|
||
|
quad.name = "Quad";
|
||
|
quad.transform.parent = obj[i].transform;
|
||
|
quad.transform.localPosition = Vector3.up * 10;
|
||
|
switch (obj[i].GetComponent<XFSS>().type)
|
||
|
{
|
||
|
case XFSSType.地上消火栓:
|
||
|
quad.GetComponent<Renderer>().material = quadMat.mats[0];
|
||
|
break;
|
||
|
case XFSSType.泡沫栓:
|
||
|
quad.GetComponent<Renderer>().material = quadMat.mats[1];
|
||
|
break;
|
||
|
case XFSSType.水泵接合器:
|
||
|
quad.GetComponent<Renderer>().material = quadMat.mats[2];
|
||
|
break;
|
||
|
case XFSSType.水炮:
|
||
|
quad.GetComponent<Renderer>().material = quadMat.mats[3];
|
||
|
break;
|
||
|
case XFSSType.室内消火栓:
|
||
|
quad.GetComponent<Renderer>().material = quadMat.mats[0];
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
quad.layer = LayerMask.NameToLayer("FightDeploy");
|
||
|
obj[i].transform.Find("Quad").localScale = new Vector3(3, 3, 3);
|
||
|
quad.gameObject.SetActive(false);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
obj[i].transform.Find("Quad").gameObject.layer = LayerMask.NameToLayer("FightDeploy");
|
||
|
obj[i].transform.Find("Quad").localScale = new Vector3(3, 3, 3);
|
||
|
obj[i].transform.Find("Quad").gameObject.SetActive(false);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
[MenuItem("SceneTool/ClearMissSprite")]
|
||
|
public static void ClearMissSprite()
|
||
|
{
|
||
|
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
var gameObject = obj[i].gameObject;
|
||
|
object p = GameObjectUtility.RemoveMonoBehavioursWithMissingScript(gameObject);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[MenuItem("SceneTool/SetOilNormal")]
|
||
|
public static void SetOilNormal()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
GameObject NornalPre = GameObject.Find("NormalPre");
|
||
|
if (!obj[0].GetComponent<Mesh>())
|
||
|
{
|
||
|
//obj[0].gameObject.AddComponent<MeshFilter>();
|
||
|
//obj[0].gameObject.GetComponent<MeshFilter>().mesh = NornalPre.GetComponent<MeshFilter>().mesh;
|
||
|
|
||
|
// obj[0].gameObject.AddComponent<MeshRenderer>();
|
||
|
obj[0].gameObject.GetComponent<MeshRenderer>().material = NornalPre.GetComponent<MeshRenderer>().material;
|
||
|
|
||
|
//obj[0].gameObject.AddComponent<MeshCollider>();
|
||
|
//obj[0].gameObject.GetComponent<MeshCollider>().sharedMesh = NornalPre.GetComponent<MeshCollider>().sharedMesh;
|
||
|
|
||
|
obj[0].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
|
||
|
obj[0].gameObject.AddComponent<OilTankBase>();
|
||
|
|
||
|
obj[0].gameObject.AddComponent<OilTankMessage>();
|
||
|
|
||
|
obj[0].gameObject.AddComponent<HideOilLevel>();
|
||
|
|
||
|
obj[0].gameObject.AddComponent<OIL_TANK_INFO_SYNC>();
|
||
|
|
||
|
obj[0].gameObject.AddComponent<OilTankDisasterRecord>();
|
||
|
|
||
|
obj[0].gameObject.AddComponent<CloneableEnums>();
|
||
|
obj[0].gameObject.GetComponent<CloneableEnums>().CloneableTypes = NornalPre.GetComponent<CloneableEnums>().CloneableTypes;
|
||
|
obj[0].gameObject.name = "Normal";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 替换场景中的水炮,适用于没有拆分但是需要出水的水炮
|
||
|
/// </summary>
|
||
|
[MenuItem("SceneTool/ChangeShuiPao")]
|
||
|
public static void ChangeShuiPao()
|
||
|
{
|
||
|
GameObject shuipaopre = Resources.Load<GameObject>("ShuiPao");
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].GetComponent<Collider>())
|
||
|
{
|
||
|
GameObject csp = GameObject.Instantiate(shuipaopre);
|
||
|
csp.transform.parent = obj[i].parent;
|
||
|
csp.transform.localPosition = obj[i].localPosition;
|
||
|
// csp.transform.localRotation = obj[i].localRotation;
|
||
|
csp.name = "shuipao" + i;
|
||
|
obj[i].gameObject.SetActive(false);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 须先添加MeshCollider使用,选中消火栓父物体设置
|
||
|
/// </summary>
|
||
|
[MenuItem("SceneTool/SetShiWaiXHS")]
|
||
|
public static void SetShiWaiXHS()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
CloneableEnums SNXHS = GameObject.Find("CloneAbleEnumsParent").transform.Find("SNXHS").GetComponent<CloneableEnums>();
|
||
|
{
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if (obj[i].gameObject.GetComponent<MeshCollider>()&& obj[i].name != "Quad")
|
||
|
{
|
||
|
if (!obj[i].gameObject.GetComponent<CreateStaticObjID>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CreateStaticObjID>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneableEnums>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<WaterSource>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<WaterSource>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<WATER_SOURCE_INFO_SYNC>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<WATER_SOURCE_INFO_SYNC>();
|
||
|
}
|
||
|
if (!obj[i].gameObject.GetComponent<XFSS>())
|
||
|
{
|
||
|
obj[i].gameObject.AddComponent<XFSS>();
|
||
|
}
|
||
|
|
||
|
obj[i].gameObject.GetComponent<XFSS>().type = XFSSType.地上消火栓;
|
||
|
obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes = SNXHS.CloneableTypes;
|
||
|
obj[i].gameObject.GetComponent<WaterSource>().water = true;
|
||
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.staticGameObject;
|
||
|
if (obj[i].GetComponent<XFSS>())
|
||
|
{
|
||
|
if (obj[i].GetComponent<XFSS>().type==XFSSType.泡沫栓)
|
||
|
{
|
||
|
obj[i].gameObject.GetComponent<WaterSource>().foam = true;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 须先添加MeshCollider使用,选中消火栓父物体设置
|
||
|
/// </summary>
|
||
|
[MenuItem("SceneTool/AddCarLoadCloneType")]
|
||
|
public static void AddCarLoadCloneType()
|
||
|
{
|
||
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep);
|
||
|
|
||
|
for (int i = 0; i < obj.Length; i++)
|
||
|
{
|
||
|
if ( obj[i].gameObject.layer == LayerMask.NameToLayer("CarRoad"))
|
||
|
{
|
||
|
if (obj[i].GetComponent<CloneGameObjInfo>()&&obj[i].GetComponent<CloneableEnums>())
|
||
|
{
|
||
|
CloneableEnums enums = obj[i].GetComponent<CloneableEnums>();
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.Trailer))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.Trailer);
|
||
|
}
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.OilSupplyTruck))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.OilSupplyTruck);
|
||
|
}
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.LiquipSupplyTruck))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.LiquipSupplyTruck);
|
||
|
}
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.WeatherTruck))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.WeatherTruck);
|
||
|
}
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.EnvironmentCar))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.EnvironmentCar);
|
||
|
}
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.RescueCarrierCar))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.RescueCarrierCar);
|
||
|
}
|
||
|
if (!enums.CloneableTypes.Contains(CloneObjType.LifeGuaranteeCar))
|
||
|
{
|
||
|
enums.CloneableTypes.Add(CloneObjType.LifeGuaranteeCar);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|