|
|
|
@ -10,143 +10,85 @@ using Unity.AI.Navigation;
|
|
|
|
|
|
|
|
|
|
public class SceneTool |
|
|
|
|
{ |
|
|
|
|
[MenuItem("SceneTool/RemoveColider")]//移除碰撞器 |
|
|
|
|
public static void RemoveColider() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
UnityEngine.Object.DestroyImmediate(obj[i].GetComponent<MeshCollider>(), true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/SetshineiXHS")]//设置室内消火栓属性 |
|
|
|
|
public static void SetSNXHS() |
|
|
|
|
[MenuItem("SceneTools/SetNavLayerShiWaiCarRoad")]//添加寻路层车(前提是将车的寻路层添加layer CarRoad) |
|
|
|
|
public static void SetNavLayerShiWaiCarRoad() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].name.ToLower().Contains("xhs") && |
|
|
|
|
!obj[i].name.ToLower().Contains("xhs_name") && |
|
|
|
|
obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
{ |
|
|
|
|
if (!obj[i].gameObject.GetComponent<BoxCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<BoxCollider>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>(); |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.IndoorFireHydrant; |
|
|
|
|
if (!obj[i].gameObject.GetComponent<InDoorHydrantMessage>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<InDoorHydrantMessage>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<WaterSource>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<WaterSource>(); |
|
|
|
|
} |
|
|
|
|
if (obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjID == 0) |
|
|
|
|
{ |
|
|
|
|
long staticGameObjId = (long)GUID.NewGuid(1, 1); |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SetGameObjID(staticGameObjId); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
CloneEnumsHelp cloneEnumsHelp = obj[i].gameObject.GetComponent<CloneEnumsHelp>(); |
|
|
|
|
cloneEnumsHelp.cloneOnFloorType = CloneOnFloorType.ShiNeiXHS; |
|
|
|
|
if (obj[i].GetComponentInParent<FloorMessage>()) |
|
|
|
|
{ |
|
|
|
|
FloorMessage fmg = obj[i].GetComponentInParent<FloorMessage>(); |
|
|
|
|
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/DiXiaLouDing/CheNengZou")]//地面的楼顶(车能走),常见为地下建筑上的公路 |
|
|
|
|
public static void DiXiaLouDingCheNengZou() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
if (obj[i].gameObject.layer == LayerMask.NameToLayer("CarRoad")) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<NavMeshModifier>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.layer = LayerMask.NameToLayer("CarRoad"); |
|
|
|
|
//Debug.Log(obj[i].name); |
|
|
|
|
if (!obj[i].gameObject.GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindable>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindingClick>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindable>(); |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.StaticGameObject; |
|
|
|
|
if (!obj[i].gameObject.GetComponent<StaticeObjAddToEntities>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
obj[i].gameObject.AddComponent<StaticeObjAddToEntities>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
if (obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjID == 0) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
long staticGameObjId = (long)GUID.NewGuid(3, 1); |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SetGameObjID(staticGameObjId); |
|
|
|
|
} |
|
|
|
|
CloneEnumsHelp cloneEnumsHelp = obj[i].gameObject.GetComponent<CloneEnumsHelp>(); |
|
|
|
|
cloneEnumsHelp.cloneOnFloorType = CloneOnFloorType.ShiWaiCar; |
|
|
|
|
if (obj[i].GetComponentInParent<FloorMessage>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
FloorMessage fmg = obj[i].GetComponentInParent<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; |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SpecialTag = "楼顶"; |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiWaiCar; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/DiXiaLouDing/RenNengZou")]//地面的楼顶(人能走),常见为地下建筑上的小路 |
|
|
|
|
public static void DiXiaLouDingRenNengZou() |
|
|
|
|
[MenuItem("SceneTools/SetNavLayerShiWaiSoldierRoad")]//添加寻路层车(前提是将车的寻路层添加layer SoliderRoad) |
|
|
|
|
public static void SetNavLayerShiWaiSoliderRoad() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
if (obj[i].gameObject.layer == LayerMask.NameToLayer("SoldierRoad")) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<NavMeshModifier>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad"); |
|
|
|
|
//Debug.Log(obj[i].name); |
|
|
|
|
if (!obj[i].gameObject.GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindable>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindable>(); |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindingClick>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>(); |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.StaticGameObject; |
|
|
|
|
if (!obj[i].gameObject.GetComponent<StaticeObjAddToEntities>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<StaticeObjAddToEntities>(); |
|
|
|
|
} |
|
|
|
|
if (obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjID == 0) |
|
|
|
|
{ |
|
|
|
|
long staticGameObjId = (long)GUID.NewGuid(2, 1); |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SetGameObjID(staticGameObjId); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
@ -155,194 +97,226 @@ public class SceneTool
|
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
CloneEnumsHelp cloneEnumsHelp = obj[i].gameObject.GetComponent<CloneEnumsHelp>(); |
|
|
|
|
cloneEnumsHelp.cloneOnFloorType = CloneOnFloorType.ShiWaiMan; |
|
|
|
|
if (obj[i].GetComponentInParent<FloorMessage>()) |
|
|
|
|
{ |
|
|
|
|
FloorMessage fmg = obj[i].GetComponentInParent<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; |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SpecialTag = "楼顶"; |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiWaiMan; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/DiXiaLouDing/DouBuZou")]//地面的楼顶(都不能走),常见为地下建筑上的花坛 |
|
|
|
|
public static void DiXiaLouDingDouBuZou() |
|
|
|
|
[MenuItem("SceneTools/RemoveColider")]//移除碰撞器 |
|
|
|
|
public static void RemoveColider() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.layer = LayerMask.NameToLayer("CarRoad"); |
|
|
|
|
if (!obj[i].gameObject.GetComponent<NavMeshModifier>()) |
|
|
|
|
if (obj[i].GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<NavMeshModifier>(); |
|
|
|
|
UnityEngine.Object.DestroyImmediate(obj[i].GetComponent<MeshCollider>(), true); |
|
|
|
|
} |
|
|
|
|
NavMeshModifier mod = obj[i].gameObject.GetComponent<NavMeshModifier>(); |
|
|
|
|
mod.overrideArea = true; |
|
|
|
|
mod.area = 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/CheckEmpty")] |
|
|
|
|
public static void CheckEmpty() |
|
|
|
|
[MenuItem("SceneTools/SetCloneEnumsNei")]//设置室内克隆类型 |
|
|
|
|
public static void SetCloneEnumsNei() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.DeepAssets); |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
List<CloneObjType> CloneableTypes = new List<CloneObjType>(); |
|
|
|
|
for (int i = (int)CloneObjType.WarningLine; i <= (int)CloneObjType.FireOpenType; i++) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<CloneableEnums>() && obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Count > 0) |
|
|
|
|
if (i != (int)CloneObjType.FireNormal && |
|
|
|
|
i != (int)CloneObjType.SmokeNormal && |
|
|
|
|
i != (int)CloneObjType.Splash && |
|
|
|
|
i != (int)CloneObjType.Boilover && |
|
|
|
|
i != (int)CloneObjType.Headquarters && |
|
|
|
|
i != (int)CloneObjType.StagingArea && |
|
|
|
|
i != (int)CloneObjType.FireHuge && |
|
|
|
|
i != (int)CloneObjType.FireFlow) |
|
|
|
|
{ |
|
|
|
|
if (!obj[i].GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
Debug.Log(obj[i].name); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (obj[i].GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<CloneEnumsHelp>().cloneOnFloorType < CloneOnFloorType.ShiWaiCar || |
|
|
|
|
obj[i].GetComponent<CloneEnumsHelp>().cloneOnFloorType > CloneOnFloorType.GuanQuDiMian) |
|
|
|
|
{ |
|
|
|
|
Debug.Log(obj[i].name); |
|
|
|
|
} |
|
|
|
|
CloneableTypes.Add((CloneObjType)i); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (obj[0].GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[0].GetComponent<CloneableEnums>().CloneableTypes = CloneableTypes; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/PuTongLouDing/RenNengZou")]//普通的楼顶(人能走),常见为地上建筑的楼顶地板 |
|
|
|
|
public static void PuTongLouDingRenNengZou() |
|
|
|
|
[MenuItem("SceneTools/SetFuTi")]//设置室内克隆类型 |
|
|
|
|
public static void SetCloneFuTi() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
if (obj[i].name.ToLower().Contains("ft") && |
|
|
|
|
obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
if (obj[i].gameObject.layer == LayerMask.NameToLayer("SoldierRoad")) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad"); |
|
|
|
|
if (!obj[i].gameObject.GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindable>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindingClick>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindable>(); |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindingClick>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<StaticeObjAddToEntities>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<StaticeObjAddToEntities>(); |
|
|
|
|
} |
|
|
|
|
if (obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjID == 0) |
|
|
|
|
{ |
|
|
|
|
long staticGameObjId = (long)GUID.NewGuid(4, 1); |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SetGameObjID(staticGameObjId); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
//CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>(); |
|
|
|
|
//Transform Template = GameObject.Find("CloneEnums").transform.Find("ShiNeiFloor"); |
|
|
|
|
//var CloneableEnums = Template.GetComponent<CloneableEnums>(); |
|
|
|
|
//enumParent.CloneableTypes = CloneableEnums.CloneableTypes; |
|
|
|
|
if (obj[i].parent.GetComponent<FloorMessage>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
CloneEnumsHelp cloneEnumsHelp = obj[i].gameObject.GetComponent<CloneEnumsHelp>(); |
|
|
|
|
cloneEnumsHelp.cloneOnFloorType = CloneOnFloorType.LouDing; |
|
|
|
|
if (obj[i].GetComponentInParent<FloorMessage>()) |
|
|
|
|
if (obj[i].parent.parent.GetComponent<FloorMessage>()) |
|
|
|
|
{ |
|
|
|
|
FloorMessage fmg = obj[i].GetComponentInParent<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].parent.parent.parent.GetComponent<FloorMessage>()) |
|
|
|
|
{ |
|
|
|
|
FloorMessage fmg = obj[i].parent.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; |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SpecialTag = "楼顶"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/PuTongLouDing/DouBuZou")]//普通的楼顶(都不能走) |
|
|
|
|
public static void PuTongLouDingDouBuZou() |
|
|
|
|
|
|
|
|
|
[MenuItem("SceneTools/AddColider")]//添加碰撞器 |
|
|
|
|
public static void AddColider() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>() && |
|
|
|
|
!obj[i].GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
{ |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/ShiWai/CheNengZou")]//地面(车能走),常见为公路 |
|
|
|
|
public static void ShiWaiCheNengZou() |
|
|
|
|
[MenuItem("SceneTools/CheckEmpty")]//检查克隆类型为空值的情况 |
|
|
|
|
public static void CheckEmpty() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
if ( |
|
|
|
|
obj[i].GetComponent<CloneGameObjInfo>()) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
if (obj[i].GetComponent<CloneGameObjInfo>().gameObjType == CloneObjType.None) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.layer = LayerMask.NameToLayer("CarRoad"); |
|
|
|
|
if (!obj[i].gameObject.GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindable>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindable>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
CloneEnumsHelp cloneEnumsHelp = obj[i].gameObject.GetComponent<CloneEnumsHelp>(); |
|
|
|
|
cloneEnumsHelp.cloneOnFloorType = CloneOnFloorType.ShiWaiCar; |
|
|
|
|
Debug.Log(obj[i].name); |
|
|
|
|
obj[i].GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.StaticGameObject; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/ShiWai/RenNengZou")]//地面(人能走),常见为小路 |
|
|
|
|
public static void ShiWaiRenNengZou() |
|
|
|
|
[MenuItem("SceneTools/SetshineiXHS")]//设置消火栓属性 |
|
|
|
|
public static void SetSNXHS() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
if (obj[i].name.ToLower().Contains("xhs") && |
|
|
|
|
obj[i].GetComponent<MeshRenderer>() && |
|
|
|
|
!obj[i].name.ToLower().Contains("xhs_name")) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<MeshRenderer>()) |
|
|
|
|
if (!obj[i].gameObject.GetComponent<BoxCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.layer = LayerMask.NameToLayer("SoldierRoad"); |
|
|
|
|
if (!obj[i].gameObject.GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<PathFindable>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<PathFindable>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
CloneEnumsHelp cloneEnumsHelp = obj[i].gameObject.GetComponent<CloneEnumsHelp>(); |
|
|
|
|
cloneEnumsHelp.cloneOnFloorType = CloneOnFloorType.ShiWaiMan; |
|
|
|
|
obj[i].gameObject.AddComponent<BoxCollider>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneGameObjInfo>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneGameObjInfo>(); |
|
|
|
|
} |
|
|
|
|
if (!obj[i].gameObject.GetComponent<StaticeObjAddToEntities>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<StaticeObjAddToEntities>(); |
|
|
|
|
} |
|
|
|
|
if (obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjID == 0) |
|
|
|
|
{ |
|
|
|
|
long staticGameObjId = (long)GUID.NewGuid(1, 1); |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().SetGameObjID(staticGameObjId); |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.XHS; |
|
|
|
|
if (!obj[i].gameObject.GetComponent<WaterSupplier>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<WaterSupplier>(); |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<WaterSupplier>().WaterReceiverType = WaterType.water; |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneableEnums>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneableEnums>(); |
|
|
|
|
} |
|
|
|
|
CloneableEnums enumParent = obj[i].gameObject.GetComponent<CloneableEnums>(); |
|
|
|
|
|
|
|
|
|
List<CloneObjType> EnumsList = new List<CloneObjType>() { |
|
|
|
|
CloneObjType.WaterLine, |
|
|
|
|
CloneObjType.TwinkleLine |
|
|
|
|
}; |
|
|
|
|
enumParent.CloneableTypes = EnumsList; |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiNeiXHS; |
|
|
|
|
if (obj[i].parent.GetComponent<FloorMessage>()) |
|
|
|
|
{ |
|
|
|
|
FloorMessage fmg = obj[i].parent.GetComponent<FloorMessage>(); |
|
|
|
|
obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.XHS; |
|
|
|
|
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.XHS; |
|
|
|
|
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.parent.GetComponent<FloorMessage>()) |
|
|
|
|
//{ |
|
|
|
|
// FloorMessage fmg = obj[i].parent.parent.parent.GetComponent<FloorMessage>(); |
|
|
|
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().gameObjType = CloneObjType.XHS; |
|
|
|
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().buildNum = fmg.buildNum; |
|
|
|
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().floorNum = fmg.floorNum; |
|
|
|
|
// obj[i].gameObject.GetComponent<CloneGameObjInfo>().interlayerNum = fmg.interlayerNum; |
|
|
|
|
//} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -421,23 +395,6 @@ public class SceneTool
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/AddColider")] |
|
|
|
|
public static void AddColider() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Unfiltered); |
|
|
|
|
{ |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].GetComponent<NavMeshModifier>()) |
|
|
|
|
{ |
|
|
|
|
if (!obj[i].gameObject.GetComponent<MeshCollider>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<MeshCollider>(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/TeShu/WeiXianPinYunShuChe")]//危险运输车 |
|
|
|
|
public static void WeiXianPinYunShuChe() |
|
|
|
|
{ |
|
|
|
@ -465,66 +422,4 @@ public class SceneTool
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
[MenuItem("SceneTool/AddNewScripts")]//优化增加新的脚本 |
|
|
|
|
public static void AddNewScripts() |
|
|
|
|
{ |
|
|
|
|
Transform[] obj = Selection.GetTransforms(SelectionMode.Deep); |
|
|
|
|
for (int i = 0; i < obj.Length; i++) |
|
|
|
|
{ |
|
|
|
|
if (obj[i].gameObject.activeInHierarchy && obj[i].gameObject.GetComponent<CloneableEnums>() && obj[i].gameObject.GetComponent<CloneableEnums>().CloneableTypes.Count > 0) |
|
|
|
|
{ |
|
|
|
|
if (!obj[i].gameObject.GetComponent<CloneEnumsHelp>()) |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.AddComponent<CloneEnumsHelp>(); |
|
|
|
|
} |
|
|
|
|
var count = obj[i].GetComponent<CloneableEnums>().CloneableTypes.Count; |
|
|
|
|
if (count == 80)// 室外车能走 |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiWaiCar; |
|
|
|
|
} |
|
|
|
|
else if (count == 35 && hasParentByName(obj[i].gameObject, "shinei"))// 室内人能走 |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiNeiMan; |
|
|
|
|
} |
|
|
|
|
else if (count == 35 && hasParentByName(obj[i].gameObject, "shiwai"))// 楼顶 |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.LouDing; |
|
|
|
|
} |
|
|
|
|
else if (count == 47)// 室外人能走 |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiWaiMan; |
|
|
|
|
} |
|
|
|
|
else if (count == 35 && !obj[i].gameObject.GetComponent<CloneGameObjInfo>())// 室外人 |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiWaiMan; |
|
|
|
|
} |
|
|
|
|
else if (count == 35 && obj[i].gameObject.GetComponent<CloneGameObjInfo>())// 室内人 |
|
|
|
|
{ |
|
|
|
|
obj[i].gameObject.GetComponent<CloneEnumsHelp>().cloneOnFloorType = CloneOnFloorType.ShiNeiMan; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
Debug.Log("警告,有对象没有绑定上脚本" + obj[i].name); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
private static bool hasParentByName(GameObject gameObject, string parentName) |
|
|
|
|
{ |
|
|
|
|
if (gameObject.transform.parent) |
|
|
|
|
{ |
|
|
|
|
if (gameObject.transform.parent.name == parentName) |
|
|
|
|
{ |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
return hasParentByName(gameObject.transform.parent.gameObject, parentName); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |