diff --git a/Assets Package/Unity2D-Quadtree-Collision-Detection-System.unitypackage b/Assets Package/Unity2D-Quadtree-Collision-Detection-System.unitypackage
deleted file mode 100644
index 454ec7a..0000000
Binary files a/Assets Package/Unity2D-Quadtree-Collision-Detection-System.unitypackage and /dev/null differ
diff --git a/Assets/GizmosTool/GizmosTool.cs b/Assets/GizmosTool/GizmosTool.cs
deleted file mode 100644
index fc849b4..0000000
--- a/Assets/GizmosTool/GizmosTool.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.GizmosTools
-{
- public static class GizmosTool
- {
- ///
- /// 绘制圆圈
- ///
- ///
- ///
- ///
- ///
- public static void DrawCircle(Vector3 center, Quaternion rotation, float radius, int step = 36)
- {
- //TODO:缺转向功能
- Gizmos.DrawSphere(center, radius);
- //var old = Gizmos.matrix;
- //if (rotation.Equals(default(Quaternion)))
- // rotation = Quaternion.identity;
- //Gizmos.matrix = Matrix4x4.TRS(center, rotation, Vector3.one);
- //var half = height / 2;
-
- ////draw the 4 outer lines
- //Gizmos.DrawLine(Vector3.right * radius - Vector3.up * half, Vector3.right * radius + Vector3.up * half);
- //Gizmos.DrawLine(-Vector3.right * radius - Vector3.up * half, -Vector3.right * radius + Vector3.up * half);
- //Gizmos.DrawLine(Vector3.forward * radius - Vector3.up * half, Vector3.forward * radius + Vector3.up * half);
- //Gizmos.DrawLine(-Vector3.forward * radius - Vector3.up * half, -Vector3.forward * radius + Vector3.up * half);
-
- ////draw the 2 cricles with the center of rotation being the center of the cylinder, not the center of the circle itself
- //DrawWireArc(center + Vector3.up * half, radius, 360, 20, rotation, center);
- //DrawWireArc(center + Vector3.down * half, radius, 360, 20, rotation, center);
- //Gizmos.matrix = old;
- }
-
- public static void DrawRect(Rect rect, Vector3 position, Quaternion rotation)
- {
- //TODO:缺转向功能
- Gizmos.DrawLine(new Vector3(rect.x, rect.yMax, 0), new Vector3(rect.xMax, rect.yMax, 0));
- Gizmos.DrawLine(new Vector3(rect.xMax, rect.yMax, 0), new Vector3(rect.xMax, rect.y, 0));
- Gizmos.DrawLine(new Vector3(rect.xMax, rect.y, 0), new Vector3(rect.x, rect.y, 0));
- Gizmos.DrawLine(new Vector3(rect.x, rect.y, 0), new Vector3(rect.x, rect.yMax, 0));
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Example/CollisionDrawer.cs b/Assets/Quadtree Collider Detection/Example/CollisionDrawer.cs
index fd1b1de..0e9313a 100644
--- a/Assets/Quadtree Collider Detection/Example/CollisionDrawer.cs
+++ b/Assets/Quadtree Collider Detection/Example/CollisionDrawer.cs
@@ -1,27 +1,45 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.Events;
namespace MtC.Tools.QuadtreeCollider
{
- public class CollisionDrawer : MonoBehaviour, IOnQuadtreeCollisionStay
+ ///
+ /// 绘制碰撞器的组件
+ ///
+ public class CollisionDrawer : MonoBehaviour, IOnQuadtreeCollisionStay, IOnQuadtreeCollisionEnter, IOnQuadtreeCollisionExit
{
- private List _colliders = new List();
+ private readonly List colliders = new List();
+
+ public void OnQuadtreeCollisionEnter(QuadtreeCollider collider)
+ {
+ Debug.Log("碰撞器 " + collider.GetInstanceID() + " 进入碰撞器 " + GetInstanceID() + " 的范围");
+ }
public void OnQuadtreeCollisionStay(QuadtreeCollider collider)
{
- _colliders.Add(collider);
+ colliders.Add(collider);
+ }
+
+ public void OnQuadtreeCollisionExit(QuadtreeCollider collider)
+ {
+ Debug.Log("碰撞器 " + collider.GetInstanceID() + " 离开碰撞器 " + GetInstanceID() + " 的范围");
}
private void OnDrawGizmos()
{
Gizmos.color = Color.yellow * 0.8f;
- foreach (QuadtreeCollider collider in _colliders)
- if (collider)
+ foreach (QuadtreeCollider collider in colliders)
+ {
+ if (collider != null)
+ {
Gizmos.DrawLine(transform.position, collider.transform.position);
+ }
+ }
- _colliders.Clear();
+ colliders.Clear();
}
}
}
diff --git a/Assets/Quadtree Collider Detection/Example/Example Scene.unity b/Assets/Quadtree Collider Detection/Example/Example Scene.unity
index 4992559..dbc6384 100644
--- a/Assets/Quadtree Collider Detection/Example/Example Scene.unity
+++ b/Assets/Quadtree Collider Detection/Example/Example Scene.unity
@@ -43,7 +43,7 @@ RenderSettings:
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
- serializedVersion: 11
+ serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
@@ -96,8 +96,9 @@ LightmapSettings:
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
+ m_LightingSettings: {fileID: 1416275007}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
@@ -117,6 +118,8 @@ NavMeshSettings:
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
@@ -148,12 +151,12 @@ MonoBehaviour:
m_GameObject: {fileID: 71954733}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 160
--- !u!4 &71954735
Transform:
m_ObjectHideFlags: 0
@@ -166,7 +169,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 2
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &71954736
SpriteRenderer:
@@ -182,6 +185,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -226,10 +231,10 @@ MonoBehaviour:
m_GameObject: {fileID: 71954733}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &114666802
+--- !u!1 &343835778
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -237,53 +242,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 114666804}
- - component: {fileID: 114666803}
- - component: {fileID: 114666805}
- - component: {fileID: 114666806}
+ - component: {fileID: 343835782}
+ - component: {fileID: 343835781}
+ - component: {fileID: 343835780}
+ - component: {fileID: 343835779}
m_Layer: 0
- m_Name: Collider (9)
+ m_Name: Collider (8)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &114666803
+--- !u!114 &343835779
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 114666802}
+ m_GameObject: {fileID: 343835778}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &114666804
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 114666802}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1339, y: 196, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 11
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &114666805
+--- !u!212 &343835780
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 114666802}
+ m_GameObject: {fileID: 343835778}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -291,6 +279,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -326,128 +316,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &114666806
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 114666802}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &128279172
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 128279174}
- - component: {fileID: 128279173}
- - component: {fileID: 128279175}
- - component: {fileID: 128279176}
- m_Layer: 0
- m_Name: Collider (5)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &128279173
+--- !u!114 &343835781
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 128279172}
+ m_GameObject: {fileID: 343835778}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &128279174
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 210
+--- !u!4 &343835782
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 128279172}
+ m_GameObject: {fileID: 343835778}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1173, y: 401, z: 0}
+ m_LocalPosition: {x: 319, y: 626, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 7
+ m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &128279175
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 128279172}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &128279176
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 128279172}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &163203729
+--- !u!1 &347891790
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -455,1281 +353,82 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 163203731}
- - component: {fileID: 163203730}
- - component: {fileID: 163203732}
- - component: {fileID: 163203733}
+ - component: {fileID: 347891793}
+ - component: {fileID: 347891792}
+ - component: {fileID: 347891791}
m_Layer: 0
- m_Name: Collider (2)
- m_TagString: Untagged
+ m_Name: Main Camera
+ m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &163203730
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 163203729}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &163203731
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 163203729}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 379, y: 752, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &163203732
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 163203729}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &163203733
-MonoBehaviour:
+--- !u!81 &347891791
+AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 163203729}
+ m_GameObject: {fileID: 347891790}
m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &280989818
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 280989820}
- - component: {fileID: 280989819}
- - component: {fileID: 280989821}
- - component: {fileID: 280989822}
- m_Layer: 0
- m_Name: Collider (6)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &280989819
-MonoBehaviour:
+--- !u!20 &347891792
+Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 280989818}
+ m_GameObject: {fileID: 347891790}
m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &280989820
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0.7783019, g: 1, b: 0.961351, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 1
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &347891793
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 280989818}
+ m_GameObject: {fileID: 347891790}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1497, y: 484, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 8
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &280989821
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 280989818}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &280989822
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 280989818}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &347891790
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 347891793}
- - component: {fileID: 347891792}
- - component: {fileID: 347891791}
- m_Layer: 0
- m_Name: Main Camera
- m_TagString: MainCamera
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!81 &347891791
-AudioListener:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 347891790}
- m_Enabled: 1
---- !u!20 &347891792
-Camera:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 347891790}
- m_Enabled: 1
- serializedVersion: 2
- m_ClearFlags: 2
- m_BackGroundColor: {r: 0.7783019, g: 1, b: 0.961351, a: 0}
- m_projectionMatrixMode: 1
- m_GateFitMode: 2
- m_FOVAxisMode: 0
- m_SensorSize: {x: 36, y: 24}
- m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
- m_NormalizedViewPortRect:
- serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
- near clip plane: 0.3
- far clip plane: 1000
- field of view: 60
- orthographic: 1
- orthographic size: 5
- m_Depth: -1
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
- m_TargetDisplay: 0
- m_TargetEye: 3
- m_HDR: 1
- m_AllowMSAA: 1
- m_AllowDynamicResolution: 0
- m_ForceIntoRT: 0
- m_OcclusionCulling: 1
- m_StereoConvergence: 10
- m_StereoSeparation: 0.022
---- !u!4 &347891793
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 347891790}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: -10}
+ m_LocalPosition: {x: 0, y: 0, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &350286807
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 350286809}
- - component: {fileID: 350286808}
- - component: {fileID: 350286810}
- - component: {fileID: 350286811}
- m_Layer: 0
- m_Name: Collider (20)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &350286808
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 350286807}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &350286809
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 350286807}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1577, y: 238, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 22
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &350286810
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 350286807}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &350286811
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 350286807}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &400926775
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 400926777}
- - component: {fileID: 400926776}
- - component: {fileID: 400926778}
- - component: {fileID: 400926779}
- m_Layer: 0
- m_Name: Collider (16)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &400926776
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 400926775}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &400926777
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 400926775}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1134, y: 649, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 18
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &400926778
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 400926775}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &400926779
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 400926775}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &428338082
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 428338084}
- - component: {fileID: 428338083}
- - component: {fileID: 428338085}
- - component: {fileID: 428338086}
- m_Layer: 0
- m_Name: Collider (18)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &428338083
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 428338082}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &428338084
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 428338082}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 391, y: 538, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 20
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &428338085
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 428338082}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &428338086
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 428338082}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &434935521
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 434935523}
- - component: {fileID: 434935522}
- - component: {fileID: 434935524}
- - component: {fileID: 434935525}
- m_Layer: 0
- m_Name: Collider (13)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &434935522
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 434935521}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &434935523
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 434935521}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 626, y: 705, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 15
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &434935524
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 434935521}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &434935525
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 434935521}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &488872677
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 488872679}
- - component: {fileID: 488872678}
- - component: {fileID: 488872680}
- - component: {fileID: 488872681}
- m_Layer: 0
- m_Name: Collider (8)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &488872678
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 488872677}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &488872679
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 488872677}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1771, y: 272, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 10
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &488872680
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 488872677}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &488872681
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 488872677}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &539310189
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 539310191}
- - component: {fileID: 539310190}
- - component: {fileID: 539310192}
- - component: {fileID: 539310193}
- m_Layer: 0
- m_Name: Collider (21)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &539310190
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 539310189}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &539310191
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 539310189}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 876, y: 658, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 23
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &539310192
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 539310189}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &539310193
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 539310189}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &752355515
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 752355517}
- - component: {fileID: 752355516}
- - component: {fileID: 752355518}
- - component: {fileID: 752355519}
- m_Layer: 0
- m_Name: Collider (4)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &752355516
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 752355515}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &752355517
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 752355515}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1261, y: 860, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 6
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &752355518
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 752355515}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &752355519
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 752355515}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &812252821
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 812252823}
- - component: {fileID: 812252822}
- - component: {fileID: 812252824}
- - component: {fileID: 812252825}
- m_Layer: 0
- m_Name: Collider (22)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &812252822
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 812252821}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &812252823
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 812252821}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 928, y: 213, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 24
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &812252824
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 812252821}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &812252825
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 812252821}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &956370403
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 956370405}
- - component: {fileID: 956370404}
- - component: {fileID: 956370406}
- - component: {fileID: 956370407}
- m_Layer: 0
- m_Name: Collider (7)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &956370404
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 956370403}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &956370405
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 956370403}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1614, y: 767, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 9
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &956370406
-SpriteRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 956370403}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 0
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_FlipX: 0
- m_FlipY: 0
- m_DrawMode: 0
- m_Size: {x: 0.2, y: 0.2}
- m_AdaptiveModeThreshold: 0.5
- m_SpriteTileMode: 0
- m_WasSpriteAssigned: 1
- m_MaskInteraction: 0
- m_SpriteSortPoint: 0
---- !u!114 &956370407
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 956370403}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &999567265
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &542776031
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1737,53 +436,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 999567267}
- - component: {fileID: 999567266}
- - component: {fileID: 999567268}
- - component: {fileID: 999567269}
+ - component: {fileID: 542776035}
+ - component: {fileID: 542776034}
+ - component: {fileID: 542776033}
+ - component: {fileID: 542776032}
m_Layer: 0
- m_Name: Collider (14)
+ m_Name: Collider (6)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &999567266
+--- !u!114 &542776032
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999567265}
+ m_GameObject: {fileID: 542776031}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &999567267
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999567265}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1040, y: 806, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 16
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &999567268
+--- !u!212 &542776033
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999567265}
+ m_GameObject: {fileID: 542776031}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -1791,6 +473,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1826,19 +510,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &999567269
+--- !u!114 &542776034
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999567265}
+ m_GameObject: {fileID: 542776031}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &1231568038
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 180
+--- !u!4 &542776035
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 542776031}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1618, y: 386, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 9
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &838401674
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1846,53 +547,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1231568040}
- - component: {fileID: 1231568039}
- - component: {fileID: 1231568041}
- - component: {fileID: 1231568042}
+ - component: {fileID: 838401678}
+ - component: {fileID: 838401677}
+ - component: {fileID: 838401676}
+ - component: {fileID: 838401675}
m_Layer: 0
- m_Name: Collider (11)
+ m_Name: Collider (4)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1231568039
+--- !u!114 &838401675
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1231568038}
+ m_GameObject: {fileID: 838401674}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1231568040
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1231568038}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 402, y: 98, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 13
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1231568041
+--- !u!212 &838401676
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1231568038}
+ m_GameObject: {fileID: 838401674}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -1900,6 +584,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -1935,19 +621,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1231568042
+--- !u!114 &838401677
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1231568038}
+ m_GameObject: {fileID: 838401674}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &1244684632
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 230
+--- !u!4 &838401678
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 838401674}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1362, y: 741, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 7
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &975307285
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1955,10 +658,10 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1244684634}
- - component: {fileID: 1244684633}
- - component: {fileID: 1244684635}
- - component: {fileID: 1244684636}
+ - component: {fileID: 975307289}
+ - component: {fileID: 975307288}
+ - component: {fileID: 975307287}
+ - component: {fileID: 975307286}
m_Layer: 0
m_Name: Collider (1)
m_TagString: Untagged
@@ -1966,42 +669,25 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1244684633
+--- !u!114 &975307286
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1244684632}
+ m_GameObject: {fileID: 975307285}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1244684634
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1244684632}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 550, y: 414, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1244684635
+--- !u!212 &975307287
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1244684632}
+ m_GameObject: {fileID: 975307285}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2009,6 +695,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2044,19 +732,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1244684636
+--- !u!114 &975307288
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1244684632}
+ m_GameObject: {fileID: 975307285}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &1294430041
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 150
+--- !u!4 &975307289
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 975307285}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 642, y: 281, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &980718766
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2064,53 +769,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1294430043}
- - component: {fileID: 1294430042}
- - component: {fileID: 1294430044}
- - component: {fileID: 1294430045}
+ - component: {fileID: 980718770}
+ - component: {fileID: 980718769}
+ - component: {fileID: 980718768}
+ - component: {fileID: 980718767}
m_Layer: 0
- m_Name: Collider (10)
+ m_Name: Collider (5)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1294430042
+--- !u!114 &980718767
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294430041}
+ m_GameObject: {fileID: 980718766}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1294430043
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294430041}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 685, y: 245, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 12
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1294430044
+--- !u!212 &980718768
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294430041}
+ m_GameObject: {fileID: 980718766}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2118,6 +806,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2153,19 +843,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1294430045
+--- !u!114 &980718769
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294430041}
+ m_GameObject: {fileID: 980718766}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &1453172291
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 85
+--- !u!4 &980718770
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 980718766}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1239, y: 251, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 8
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1244684632
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2173,53 +880,53 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1453172293}
- - component: {fileID: 1453172292}
- - component: {fileID: 1453172294}
- - component: {fileID: 1453172295}
+ - component: {fileID: 1244684634}
+ - component: {fileID: 1244684633}
+ - component: {fileID: 1244684635}
+ - component: {fileID: 1244684636}
m_Layer: 0
- m_Name: Collider (12)
+ m_Name: Detector
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1453172292
+--- !u!114 &1244684633
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1453172291}
+ m_GameObject: {fileID: 1244684632}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1453172293
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 180
+--- !u!4 &1244684634
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1453172291}
+ m_GameObject: {fileID: 1244684632}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 885, y: 442, z: 0}
+ m_LocalPosition: {x: 612, y: 474, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 14
+ m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1453172294
+--- !u!212 &1244684635
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1453172291}
+ m_GameObject: {fileID: 1244684632}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2227,6 +934,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2262,19 +971,80 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1453172295
+--- !u!114 &1244684636
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1453172291}
+ m_GameObject: {fileID: 1244684632}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &1713641323
+--- !u!850595691 &1416275007
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Settings.lighting
+ serializedVersion: 2
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRRussianRouletteStartBounce: 2
+ m_PVREnvironmentMIS: 1
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+--- !u!1 &1428873807
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2282,10 +1052,10 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1713641325}
- - component: {fileID: 1713641324}
- - component: {fileID: 1713641326}
- - component: {fileID: 1713641327}
+ - component: {fileID: 1428873811}
+ - component: {fileID: 1428873810}
+ - component: {fileID: 1428873809}
+ - component: {fileID: 1428873808}
m_Layer: 0
m_Name: Collider (3)
m_TagString: Untagged
@@ -2293,42 +1063,25 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1713641324
+--- !u!114 &1428873808
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1713641323}
+ m_GameObject: {fileID: 1428873807}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1713641325
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1713641323}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 793, y: 853, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1713641326
+--- !u!212 &1428873809
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1713641323}
+ m_GameObject: {fileID: 1428873807}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2336,6 +1089,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2371,19 +1126,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1713641327
+--- !u!114 &1428873810
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1713641323}
+ m_GameObject: {fileID: 1428873807}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &1842664531
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 100
+--- !u!4 &1428873811
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1428873807}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 478, y: 816, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1880702611
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2391,53 +1163,79 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1842664533}
- - component: {fileID: 1842664532}
- - component: {fileID: 1842664534}
- - component: {fileID: 1842664535}
+ - component: {fileID: 1880702613}
+ - component: {fileID: 1880702612}
m_Layer: 0
- m_Name: Collider (17)
+ m_Name: Quadtree Drawer
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1842664532
+--- !u!114 &1880702612
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1842664531}
+ m_GameObject: {fileID: 1880702611}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 65a70ac2a4cabb446a7f288fa4d80f96, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1842664533
+--- !u!4 &1880702613
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1842664531}
+ m_GameObject: {fileID: 1880702611}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 148, y: 338, z: 0}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 19
+ m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1842664534
+--- !u!1 &1893816044
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1893816048}
+ - component: {fileID: 1893816047}
+ - component: {fileID: 1893816046}
+ - component: {fileID: 1893816045}
+ m_Layer: 0
+ m_Name: Collider (9)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1893816045
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1893816044}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!212 &1893816046
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1842664531}
+ m_GameObject: {fileID: 1893816044}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2445,6 +1243,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2480,62 +1280,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1842664535
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1842664531}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1880702611
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1880702613}
- - component: {fileID: 1880702612}
- m_Layer: 0
- m_Name: Quadtree Drawer
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1880702612
+--- !u!114 &1893816047
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1880702611}
+ m_GameObject: {fileID: 1893816044}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 31e050134da906b438e28380877283bd, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!4 &1880702613
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 130
+--- !u!4 &1893816048
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1880702611}
+ m_GameObject: {fileID: 1893816044}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalPosition: {x: 882, y: 278, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 1
+ m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1891200277
+--- !u!1 &2124692501
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2543,53 +1317,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1891200279}
- - component: {fileID: 1891200278}
- - component: {fileID: 1891200280}
- - component: {fileID: 1891200281}
+ - component: {fileID: 2124692505}
+ - component: {fileID: 2124692504}
+ - component: {fileID: 2124692503}
+ - component: {fileID: 2124692502}
m_Layer: 0
- m_Name: Collider (19)
+ m_Name: Collider (7)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &1891200278
+--- !u!114 &2124692502
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1891200277}
+ m_GameObject: {fileID: 2124692501}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &1891200279
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1891200277}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1681, y: 531, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 21
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &1891200280
+--- !u!212 &2124692503
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1891200277}
+ m_GameObject: {fileID: 2124692501}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2597,6 +1354,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2632,19 +1391,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &1891200281
+--- !u!114 &2124692504
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1891200277}
+ m_GameObject: {fileID: 2124692501}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
---- !u!1 &2090074143
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 170
+--- !u!4 &2124692505
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124692501}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 922, y: 696, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 10
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2128354228
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -2652,53 +1428,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2090074145}
- - component: {fileID: 2090074144}
- - component: {fileID: 2090074146}
- - component: {fileID: 2090074147}
+ - component: {fileID: 2128354232}
+ - component: {fileID: 2128354231}
+ - component: {fileID: 2128354230}
+ - component: {fileID: 2128354229}
m_Layer: 0
- m_Name: Collider (15)
+ m_Name: Collider (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!114 &2090074144
+--- !u!114 &2128354229
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2090074143}
+ m_GameObject: {fileID: 2128354228}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f1a77ce0fac99f747a42c2542e247d4d, type: 3}
+ m_Script: {fileID: 11500000, guid: 03b4fa466a219714481328d0cd98f12d, type: 3}
m_Name:
m_EditorClassIdentifier:
- _autoSubscribe: 1
- _isDetector: 1
- _radius: 150
---- !u!4 &2090074145
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2090074143}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 1355, y: 703, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 17
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!212 &2090074146
+--- !u!212 &2128354230
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2090074143}
+ m_GameObject: {fileID: 2128354228}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
@@ -2706,6 +1465,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -2741,15 +1502,32 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
---- !u!114 &2090074147
+--- !u!114 &2128354231
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2090074143}
+ m_GameObject: {fileID: 2128354228}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 219583b892b3c574e9bf3a5c554c05ee, type: 3}
+ m_Script: {fileID: 11500000, guid: 941f899d293b0e44393c418cec6cc3fe, type: 3}
m_Name:
m_EditorClassIdentifier:
+ autoSubscribe: 1
+ isDetector: 1
+ radius: 130
+--- !u!4 &2128354232
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2128354228}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1024, y: 466, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Quadtree Collider Detection/Example/QuadtreeDrawer.cs b/Assets/Quadtree Collider Detection/Example/QuadtreeDrawer.cs
index d1d6c2e..942ad01 100644
--- a/Assets/Quadtree Collider Detection/Example/QuadtreeDrawer.cs
+++ b/Assets/Quadtree Collider Detection/Example/QuadtreeDrawer.cs
@@ -14,32 +14,61 @@ public class QuadtreeDrawer : MonoBehaviour
{
private void OnDrawGizmos()
{
+ // 如果在游戏状态,绘制四叉树
if (Application.isPlaying)
+ {
DrawQuadtreeNodes(GetQuadtreeRoot());
+
+ DrawCollidersToNodes(GetQuadtreeInstance());
+ }
}
+ ///
+ /// 获取四叉树根节点
+ ///
+ ///
private QuadtreeNode GetQuadtreeRoot()
{
- //Debug.Log("获取根节点,获取结果:" + (QuadtreeNode)typeof(Quadtree).GetField("_root", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(GetQuadtreeInstance()));
+ //Debug.Log("获取根节点,获取结果:" + (QuadtreeNode)typeof(Quadtree).GetField("root", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(GetQuadtreeInstance()));
- return (QuadtreeNode)typeof(Quadtree).GetField("_root", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(GetQuadtreeInstance());
+ return (QuadtreeNode)typeof(Quadtree).GetField("root", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(GetQuadtreeInstance());
}
+ ///
+ /// 获取四叉树实例对象
+ ///
+ ///
private Quadtree GetQuadtreeInstance()
{
- return (Quadtree)typeof(Quadtree).GetField("_instance", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
+ return (Quadtree)typeof(Quadtree).GetField("instance", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null);
}
+ ///
+ /// 绘制四叉树指定节点
+ ///
+ ///
private void DrawQuadtreeNodes(QuadtreeNode quadtreeNode)
{
if (HaveChildren(quadtreeNode))
+ {
+ // 有子节点的情况下,绘制子节点
DrawChildrenNode(quadtreeNode);
+ }
else
+ {
+ // 没有子节点,绘制末端节点
DrawTipNode(quadtreeNode);
+ }
+ // 绘制节点
DrawNode(quadtreeNode);
}
+ ///
+ /// 判断一个四叉树节点是否有子节点
+ ///
+ ///
+ ///
private bool HaveChildren(QuadtreeNode quadtreeNode)
{
MethodInfo method = typeof(QuadtreeNode).GetMethod("HaveChildren", BindingFlags.Instance | BindingFlags.NonPublic);
@@ -49,75 +78,126 @@ private bool HaveChildren(QuadtreeNode quadtreeNode)
return (bool)method.Invoke(quadtreeNode, null);
}
+ ///
+ /// 绘制一个四叉树节点的所有子节点
+ ///
+ ///
private void DrawChildrenNode(QuadtreeNode quadtreeNode)
{
+ // 遍历所有子节点并绘制
foreach (QuadtreeNode child in GetChildren(quadtreeNode))
+ {
DrawQuadtreeNodes(child);
+ }
}
+ ///
+ /// 获取一个四叉树节点的所有子节点
+ ///
+ ///
+ ///
private IEnumerable GetChildren(QuadtreeNode quadtreeNode)
{
- return (List)typeof(QuadtreeNode).GetField("_children", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
+ return (List)typeof(QuadtreeNode).GetField("children", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
}
+ ///
+ /// 绘制末端节点
+ ///
+ ///
private void DrawTipNode(QuadtreeNode quadtreeNode)
{
+ // 根据节点设置颜色
Gizmos.color = GetNodeColor(quadtreeNode);
Handles.color = GetNodeColor(quadtreeNode);
+ // 绘制节点区域
DrawArea(quadtreeNode);
+
+ // 绘制节点中的碰撞器
DrawColliders(quadtreeNode);
}
+ ///
+ /// 根据节点位置获取节点颜色
+ ///
+ ///
+ ///
private Color GetNodeColor(QuadtreeNode quadtreeNode)
{
+ // 获取根节点范围和要获取颜色的节点的范围,后续根据这两个范围确认颜色
Rect rootArea = GetArea(GetQuadtreeRoot());
Rect area = GetArea(quadtreeNode);
+ // 计算要获取颜色的节点的位置在根节点范围中的比例
float xLerp = Mathf.InverseLerp(rootArea.xMin, rootArea.xMax, area.x);
float yLerp = Mathf.InverseLerp(rootArea.yMin, rootArea.yMax, area.y);
+ // 通过位置比例返回颜色,越靠右越红,越靠上越绿
return new Color(xLerp, yLerp, 0.5f);
}
+ ///
+ /// 获取指定节点的区域
+ ///
+ ///
+ ///
private Rect GetArea(QuadtreeNode quadtreeNode)
{
- return (Rect)typeof(QuadtreeNode).GetField("_area", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
+ return (Rect)typeof(QuadtreeNode).GetField("area", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
}
+ ///
+ /// 绘制节点区域
+ ///
+ ///
private void DrawArea(QuadtreeNode quadtreeNode)
{
//Debug.Log("绘制区域为 " + GetArea(quadtreeNode) + " 的节点的区域");
+ // 获取区域
Rect area = GetArea(quadtreeNode);
+ // 计算出四个顶点
Vector3 topRight = new Vector3(area.xMax, area.yMax, 0);
Vector3 bottomRight = new Vector3(area.xMax, area.y, 0);
Vector3 bottomLeft = new Vector3(area.x, area.y, 0);
Vector3 topLeft = new Vector3(area.x, area.yMax, 0);
+ // 连线,画出区域
Gizmos.DrawLine(topLeft, topRight);
Gizmos.DrawLine(topRight, bottomRight);
Gizmos.DrawLine(bottomRight, bottomLeft);
Gizmos.DrawLine(bottomLeft, topLeft);
}
+ ///
+ /// 绘制一个节点中所有的碰撞器
+ ///
+ ///
private void DrawColliders(QuadtreeNode quadtreeNode)
{
+ // 遍历碰撞器并绘制
foreach (QuadtreeCollider collider in GetColliders(quadtreeNode))
+ {
DrawCollider(collider);
+ }
}
+ ///
+ /// 绘制单个碰撞器
+ ///
+ ///
private void DrawCollider(QuadtreeCollider collider)
{
- Vector3 beginPoint = collider.transform.position + Vector3.right * collider.maxRadius * Mathf.Max(Mathf.Abs(collider.transform.lossyScale.x), Mathf.Abs(collider.transform.lossyScale.y)); //三角函数角度是从正右方开始的,画圆起始点是最右边的点raw
+ Vector3 beginPoint = collider.transform.position + Vector3.right * collider.MaxRadius * Mathf.Max(Mathf.Abs(collider.transform.lossyScale.x), Mathf.Abs(collider.transform.lossyScale.y)); //三角函数角度是从正右方开始的,画圆起始点是最右边的点raw
Gizmos.DrawLine(collider.transform.position, beginPoint);
for (int i = 1; i <= 144; i++)
{
float angle = 2 * Mathf.PI / 144 * i;
- float x = collider.maxRadius * Mathf.Max(Mathf.Abs(collider.transform.lossyScale.x), Mathf.Abs(collider.transform.lossyScale.y)) * Mathf.Cos(angle) + collider.transform.position.x;
- float y = collider.maxRadius * Mathf.Max(Mathf.Abs(collider.transform.lossyScale.x), Mathf.Abs(collider.transform.lossyScale.y)) * Mathf.Sin(angle) + collider.transform.position.y;
+ float x = collider.MaxRadius * Mathf.Max(Mathf.Abs(collider.transform.lossyScale.x), Mathf.Abs(collider.transform.lossyScale.y)) * Mathf.Cos(angle) + collider.transform.position.x;
+ float y = collider.MaxRadius * Mathf.Max(Mathf.Abs(collider.transform.lossyScale.x), Mathf.Abs(collider.transform.lossyScale.y)) * Mathf.Sin(angle) + collider.transform.position.y;
Vector3 endPoint = new Vector3(x, y, collider.transform.position.z);
Gizmos.DrawLine(beginPoint, endPoint);
@@ -126,36 +206,91 @@ private void DrawCollider(QuadtreeCollider collider)
}
}
+ ///
+ /// 获取一个节点的所有碰撞器
+ ///
+ ///
+ ///
private List GetColliders(QuadtreeNode quadtreeNode)
{
- return (List)typeof(QuadtreeNode).GetField("_colliders", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
+ return (List)typeof(QuadtreeNode).GetField("colliders", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
}
+ ///
+ /// 获取一个节点及其所有子节点的碰撞器总数
+ ///
+ ///
+ ///
+ private int GetCollidersNumber(QuadtreeNode quadtreeNode)
+ {
+ return (int)typeof(QuadtreeNode).GetMethod("GetColliderNumbers", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(quadtreeNode, new object[0]);
+ }
+
+ ///
+ /// 绘制节点
+ ///
+ ///
private void DrawNode(QuadtreeNode node)
{
Gizmos.color = GetNodeColor(node);
+ // 绘制节点信息
DrawNodeInfomationText(node);
}
+ ///
+ /// 绘制节点信息
+ ///
+ ///
private void DrawNodeInfomationText(QuadtreeNode node)
{
Handles.Label(GetArea(node).center, GetNodeInfomationText(node));
}
+ ///
+ /// 获取一个节点的信息文本
+ ///
+ ///
+ ///
private string GetNodeInfomationText(QuadtreeNode node)
{
string infomation = "";
- infomation += "总碰撞器数:" + GetColliders(node).Count + "\n";
+ infomation += "当前节点碰撞器数:" + GetColliders(node).Count + "\n";
+ infomation += "总碰撞器数:" + GetCollidersNumber(node) + "\n";
infomation += "最大检测半径:" + GetMaxRadius(node) + "\n";
return infomation;
}
+ ///
+ /// 获取最大半径
+ ///
+ ///
+ ///
private float GetMaxRadius(QuadtreeNode quadtreeNode)
{
- return (float)typeof(QuadtreeNode).GetField("_maxRadius", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
+ return (float)typeof(QuadtreeNode).GetField("maxRadius", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(quadtreeNode);
+ }
+
+ // 绘制碰撞器到节点的映射表
+ private void DrawCollidersToNodes(Quadtree instance)
+ {
+ Dictionary collidersToNodes = GetCollidersToNodes(instance);
+
+ foreach(KeyValuePair pair in collidersToNodes)
+ {
+ Handles.Label(pair.Key.Position, "所属节点:(" + pair.Value.Area.x + ", " + pair.Value.Area.y + ")");
+ }
+ }
+
+ ///
+ /// 获取四叉树映射表
+ ///
+ ///
+ private Dictionary GetCollidersToNodes(Quadtree instance)
+ {
+ return (Dictionary)typeof(Quadtree).GetField("collidersToNodes", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(instance);
}
}
}
diff --git a/Assets/Quadtree Collider Detection/MyGizmos.cs b/Assets/Quadtree Collider Detection/MyGizmos.cs
new file mode 100644
index 0000000..b960bf6
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/MyGizmos.cs
@@ -0,0 +1,26 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MtC.Tools.QuadtreeCollider
+{
+ public static partial class MyGizmos
+ {
+ public static void DrawCircle(Vector3 center, float radius, int edgeNumber = 360)
+ {
+ Vector3 beginPoint = center + Vector3.right * radius; //三角函数角度是从正右方开始的,画圆起始点是最右边的点
+ for (int i = 1; i <= edgeNumber; i++)
+ {
+ float angle = 2 * Mathf.PI / edgeNumber * i;
+
+ float x = radius * Mathf.Cos(angle) + center.x;
+ float y = radius * Mathf.Sin(angle) + center.y;
+ Vector3 endPoint = new Vector3(x, y, center.z);
+
+ Gizmos.DrawLine(beginPoint, endPoint);
+
+ beginPoint = endPoint;
+ }
+ }
+ }
+}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/CircleQuadtreeCollider.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/CircleQuadtreeCollider.cs
index ce33175..38cccec 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/CircleQuadtreeCollider.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/CircleQuadtreeCollider.cs
@@ -12,43 +12,37 @@ public class CircleQuadtreeCollider : QuadtreeCollider
///
/// 半径
///
- public float radius
+ public float Radius
{
get
{
- return _radius * Mathf.Max(Mathf.Abs(_transform.lossyScale.x), Mathf.Abs(_transform.lossyScale.y)); //TODO:后期可以考虑通过配置文件达到不同的面向方向
+ return radius * Mathf.Max(Mathf.Abs(transform.lossyScale.x), Mathf.Abs(transform.lossyScale.y));
+ //TODO:后期可以考虑通过配置文件达到不同的面向方向
}
- set { _radius = value; }
+ set { radius = value; }
}
[SerializeField]
- private float _radius;
+ private float radius;
- internal override float maxRadius => radius;
+ // 圆形碰撞器的最大半径就是半径
+ internal override float MaxRadius => Radius;
protected override void DrawColliderGizomoSelected()
{
- Gizmos.color = (isDetector ? Color.yellow : Color.green) * 0.8f;
+ // 检测器是黄色,碰撞器是绿色
+ Gizmos.color = (IsDetector ? Color.yellow : Color.green) * 0.8f;
- Vector3 beginPoint = transform.position + Vector3.right * _radius * Mathf.Max(Mathf.Abs(transform.lossyScale.x), Mathf.Abs(transform.lossyScale.y)); //三角函数角度是从正右方开始的,画圆起始点是最右边的点raw
- Gizmos.DrawLine(transform.position, beginPoint);
- for (int i = 1; i <= 144; i++)
- {
- float angle = 2 * Mathf.PI / 144 * i;
-
- float x = _radius * Mathf.Max(Mathf.Abs(transform.lossyScale.x), Mathf.Abs(transform.lossyScale.y)) * Mathf.Cos(angle) + transform.position.x;
- float y = _radius * Mathf.Max(Mathf.Abs(transform.lossyScale.x), Mathf.Abs(transform.lossyScale.y)) * Mathf.Sin(angle) + transform.position.y;
- Vector3 endPoint = new Vector3(x, y, transform.position.z);
-
- Gizmos.DrawLine(beginPoint, endPoint);
-
- beginPoint = endPoint;
- }
+ // 绘制圆形
+ MyGizmos.DrawCircle(transform.position, Radius);
}
private void OnValidate()
{
- if (_radius < 0)
- _radius = 0;
+ // 限制编辑时半径不能小于 0
+ if (radius < 0)
+ {
+ radius = 0;
+ }
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/Editor/QuadtreeColliderEditor.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/Editor/QuadtreeColliderEditor.cs
index a912713..24532a9 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/Editor/QuadtreeColliderEditor.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/Editor/QuadtreeColliderEditor.cs
@@ -12,13 +12,13 @@ namespace MtC.Tools.QuadtreeCollider
[CanEditMultipleObjects]
public class QuadtreeColliderEditor : Editor
{
- private static string AUTO_SUBSCRIBE_WARNING_TEXT = "自动订阅功能只能用于从对象实例化到销毁一直挂载的实现了四叉树碰撞事件接口的组件,这是因为自动订阅的碰撞器在Awake遍历所有组件并进行唯一一次订阅,并且不会自动取消订阅。在对象实例化后挂载的组件不会自动订阅,在对象生命周期中中途销毁的自动订阅组件会导致内存泄漏";
+ private const string AUTO_SUBSCRIBE_WARNING_TEXT = "自动订阅功能只能用于从对象实例化时就挂载的实现了四叉树碰撞事件接口的组件,这是因为自动订阅的碰撞器在 Awake 时遍历所有组件并进行唯一一次订阅,并且不会自动取消订阅。在对象实例化后挂载的组件不会自动订阅。虽然不会自动取消订阅,但由于 UnityEvent 弱引用的特性不会导致内存泄漏。";
public override void OnInspectorGUI()
{
DrawDefaultInspector();
- if (((QuadtreeCollider)target).autoSubscribe)
+ if (((QuadtreeCollider)target).AutoSubscribe)
EditorGUILayout.HelpBox(AUTO_SUBSCRIBE_WARNING_TEXT, MessageType.Warning);
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/QuadtreeCollider.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/QuadtreeCollider.cs
index 5c0bb63..5bc66ad 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/QuadtreeCollider.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Colliders/QuadtreeCollider.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.Events;
namespace MtC.Tools.QuadtreeCollider
{
@@ -9,30 +10,35 @@ namespace MtC.Tools.QuadtreeCollider
///
public abstract class QuadtreeCollider : MonoBehaviour
{
- protected Transform _transform;
-
- private List _lastCollisionColliders = new List();
+ ///
+ /// 上一次碰撞检测时碰撞到的碰撞器
+ ///
+ private List lastCollisionColliders = new List();
- private Action _collisionEnterEventHandler;
- private Action _collisionStayEventHandler;
- private Action _collisionExitEventHandler;
+ private readonly UnityEvent collisionEnterEventHandler = new UnityEvent();
+ private readonly UnityEvent collisionStayEventHandler = new UnityEvent();
+ private readonly UnityEvent collisionExitEventHandler = new UnityEvent();
- public bool autoSubscribe { get { return _autoSubscribe; } }
+ ///
+ /// 是否自动订阅
+ ///
+ public bool AutoSubscribe { get { return autoSubscribe; } }
[SerializeField]
- private bool _autoSubscribe = true;
+ [Header("自动订阅")]
+ private bool autoSubscribe = true;
///
/// 碰撞器的位置
///
- internal Vector2 position
+ internal Vector2 Position
{
- get { return _transform.position; }
+ get { return transform.position; }
}
///
/// 碰撞器需要检测的最大半径,超过这个半径则认为不会发生碰撞
///
- internal abstract float maxRadius
+ internal abstract float MaxRadius
{
get;
}
@@ -40,52 +46,47 @@ internal abstract float maxRadius
///
/// 这个碰撞器是不是碰撞检测器
///
- public bool isDetector
+ public bool IsDetector
{
- get
- {
- return _isDetector;
- }
- set
- {
- if (_isDetector != value) // 只有有变化时才处理,更新碰撞器成本可以省下来
- {
- _isDetector = value;
-
- if (_isDetector)
- Quadtree.AddDetector(this);
- else
- Quadtree.RemoveDetector(this);
- }
- }
+ get { return isDetector; }
+ set { isDetector = value; }
}
[SerializeField]
- private bool _isDetector;
+ private bool isDetector;
private void Awake()
{
- _transform = transform;
-
- if (_autoSubscribe)
+ // 如果是自动订阅的则将物体上实现了碰撞接口的组件进行订阅
+ if (autoSubscribe)
+ {
foreach (Component component in GetComponents())
{
if (component is IOnQuadtreeCollisionEnter)
- _collisionEnterEventHandler += (component as IOnQuadtreeCollisionEnter).OnQuadtreeCollisionEnter;
+ {
+ SubscribeCollisionEnter(component as IOnQuadtreeCollisionEnter);
+ }
if (component is IOnQuadtreeCollisionStay)
- _collisionStayEventHandler += (component as IOnQuadtreeCollisionStay).OnQuadtreeCollisionStay;
+ {
+ SubscribeCollisionStay(component as IOnQuadtreeCollisionStay);
+ }
if (component is IOnQuadtreeCollisionExit)
- _collisionExitEventHandler += (component as IOnQuadtreeCollisionExit).OnQuadtreeCollisionExit;
+ {
+ SubscribeCollisionExit(component as IOnQuadtreeCollisionExit);
+ }
}
+ }
}
private void OnEnable()
{
+ // 将这个碰撞器添加到四叉树中
Quadtree.AddCollider(this);
}
private void OnDisable()
{
- Quadtree.RemoveCollider(this);
+ // 将这个碰撞器从四叉树中移除
+ Quadtree.RemoveColliderWithMerge(this);
}
///
@@ -94,19 +95,30 @@ private void OnDisable()
///
internal void SendCollision(List collisionColliders)
{
+ // 对所有发生碰撞的物体进行处理
foreach (QuadtreeCollider collider in collisionColliders)
{
- if (!_lastCollisionColliders.Contains(collider))
- _collisionEnterEventHandler?.Invoke(collider);
+ // 上一次碰撞检测时没有和这个碰撞器发生碰撞,发出碰撞进入事件
+ if (!lastCollisionColliders.Contains(collider))
+ {
+ collisionEnterEventHandler?.Invoke(collider);
+ }
- _collisionStayEventHandler?.Invoke(collider);
+ // 发出碰撞持续事件
+ collisionStayEventHandler?.Invoke(collider);
}
- foreach (QuadtreeCollider collider in _lastCollisionColliders)
+ // 对上一次碰撞检测的时候发生碰撞,这一检测没有碰撞的碰撞器,发出碰撞离开事件
+ foreach (QuadtreeCollider collider in lastCollisionColliders)
+ {
if (!collisionColliders.Contains(collider))
- _collisionExitEventHandler?.Invoke(collider);
+ {
+ collisionExitEventHandler?.Invoke(collider);
+ }
+ }
- _lastCollisionColliders = collisionColliders;
+ // 记录这一次碰撞检测碰撞到的碰撞器
+ lastCollisionColliders = collisionColliders;
}
///
@@ -123,85 +135,59 @@ public bool IsCollitionToCollider(QuadtreeCollider collider)
/// 订阅碰撞进入事件
///
///
- public void SubscribeCollisionEnter(Action action)
+ public void SubscribeCollisionEnter(IOnQuadtreeCollisionEnter subscriber)
{
- foreach (Action subscribedAction in _collisionEnterEventHandler.GetInvocationList())
- if (subscribedAction == action)
- return;
-
- _collisionEnterEventHandler += action;
+ collisionEnterEventHandler.AddListener(subscriber.OnQuadtreeCollisionEnter);
}
///
/// 取消订阅碰撞进入事件
///
///
- public void CancelSubscribeCollisionEnter(Action action)
+ public void CancelSubscribeCollisionEnter(IOnQuadtreeCollisionEnter subscriber)
{
- foreach (Action subscribedAction in _collisionEnterEventHandler.GetInvocationList())
- if (subscribedAction == action)
- {
- _collisionEnterEventHandler -= action;
- return;
- }
+ collisionEnterEventHandler.RemoveListener(subscriber.OnQuadtreeCollisionEnter);
}
///
/// 订阅碰撞停留事件
///
///
- public void SubscribeCollisionStay(Action action)
+ public void SubscribeCollisionStay(IOnQuadtreeCollisionStay subscriber)
{
- foreach (Action subscribedAction in _collisionStayEventHandler.GetInvocationList())
- if (subscribedAction == action)
- return;
-
- _collisionStayEventHandler += action;
+ collisionStayEventHandler.AddListener(subscriber.OnQuadtreeCollisionStay);
}
///
/// 取消订阅碰撞停留事件
///
///
- public void CancelSubscribeCollisionStay(Action action)
+ public void CancelSubscribeCollisionStay(IOnQuadtreeCollisionStay subscriber)
{
- foreach (Action subscribedAction in _collisionStayEventHandler.GetInvocationList())
- if (subscribedAction == action)
- {
- _collisionStayEventHandler -= action;
- return;
- }
+ collisionStayEventHandler.RemoveListener(subscriber.OnQuadtreeCollisionStay);
}
///
/// 订阅碰撞离开事件
///
///
- public void SubscribeCollisionExit(Action action)
+ public void SubscribeCollisionExit(IOnQuadtreeCollisionExit subscriber)
{
- foreach (Action subscribedAction in _collisionExitEventHandler.GetInvocationList())
- if (subscribedAction == action)
- return;
-
- _collisionExitEventHandler += action;
+ collisionExitEventHandler.AddListener(subscriber.OnQuadtreeCollisionExit);
}
///
/// 取消订阅碰撞离开事件
///
///
- public void CancelSubscribeCollisionExit(Action action)
+ public void CancelSubscribeCollisionExit(IOnQuadtreeCollisionExit subscriber)
{
- foreach (Action subscribedAction in _collisionExitEventHandler.GetInvocationList())
- if (subscribedAction == action)
- {
- _collisionExitEventHandler -= action;
- return;
- }
+ collisionExitEventHandler.RemoveListener(subscriber.OnQuadtreeCollisionExit);
}
private void OnDrawGizmosSelected()
{
+ // 绘制碰撞器 Gizmo
DrawColliderGizomoSelected();
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Editor/QuadtreeConfigEditorWindow.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Editor/QuadtreeConfigEditorWindow.cs
index 5937a5e..cd070b1 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Editor/QuadtreeConfigEditorWindow.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Editor/QuadtreeConfigEditorWindow.cs
@@ -7,18 +7,18 @@ namespace MtC.Tools.QuadtreeCollider
{
public class QuadtreeConfigEditorWindow : EditorWindow
{
- private QuadtreeConfig config
+ private QuadtreeConfig Config
{
get
{
- if (_config != null)
- return _config;
+ if (config != null)
+ return config;
- _config = GetSettingObject();
- return _config;
+ config = GetSettingObject();
+ return config;
}
}
- private QuadtreeConfig _config;
+ private QuadtreeConfig config;
[MenuItem("Tools/Quadtree/Quadtree Config")]
private static void GetWindow()
@@ -40,7 +40,7 @@ private void DrawProposal()
private void DrawSettingEditor()
{
- Editor.CreateEditor(config).DrawDefaultInspector();
+ Editor.CreateEditor(Config).DrawDefaultInspector();
}
QuadtreeConfig GetSettingObject()
@@ -96,10 +96,10 @@ void OnSceneGUI(SceneView sceneView)
{
Handles.color = Color.red * 0.9f;
- Vector3 upperRight = new Vector3(QuadtreeConfig.startArea.xMax, QuadtreeConfig.startArea.yMax, 0);
- Vector3 lowerRight = new Vector3(QuadtreeConfig.startArea.xMax, QuadtreeConfig.startArea.yMin, 0);
- Vector3 lowerLeft = new Vector3(QuadtreeConfig.startArea.xMin, QuadtreeConfig.startArea.yMin, 0);
- Vector3 upperLeft = new Vector3(QuadtreeConfig.startArea.xMin, QuadtreeConfig.startArea.yMax, 0);
+ Vector3 upperRight = new Vector3(QuadtreeConfig.StartArea.xMax, QuadtreeConfig.StartArea.yMax, 0);
+ Vector3 lowerRight = new Vector3(QuadtreeConfig.StartArea.xMax, QuadtreeConfig.StartArea.yMin, 0);
+ Vector3 lowerLeft = new Vector3(QuadtreeConfig.StartArea.xMin, QuadtreeConfig.StartArea.yMin, 0);
+ Vector3 upperLeft = new Vector3(QuadtreeConfig.StartArea.xMin, QuadtreeConfig.StartArea.yMax, 0);
Handles.DrawLine(upperRight, lowerRight);
Handles.DrawLine(lowerRight, lowerLeft);
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/QuadtreeConfig.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/QuadtreeConfig.cs
index db9dc64..ecb905a 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/QuadtreeConfig.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/QuadtreeConfig.cs
@@ -12,50 +12,82 @@ public class QuadtreeConfig : ScriptableObject
///
public const string CONFIG_OBJECT_NAME = "Quadtree Config";
- private static QuadtreeConfig config
+ private static QuadtreeConfig Config
{
get
{
- if (_config != null)
- return _config;
+ if (config != null)
+ return config;
else
- _config = Resources.Load(CONFIG_OBJECT_NAME);
- return _config;
+ config = Resources.Load(CONFIG_OBJECT_NAME);
+ return config;
}
}
- private static QuadtreeConfig _config;
+ private static QuadtreeConfig config;
///
/// 一个节点里的碰撞器数量上限,超过上限后进行分割
///
- public static int maxCollidersNumber
+ public static int MaxCollidersNumber
{
- get { return config._maxCollidersNumber; }
+ get { return Config.maxCollidersNumber; }
}
[SerializeField]
[Header("单个节点的直属碰撞器数量上限,超过这个数量则判断为需要分割")]
- private int _maxCollidersNumber = 10;
+ private int maxCollidersNumber = 10;
///
/// 单个节点的最短边的最小长度,当任意一个边的长度小于这个长度时,无论碰撞器数量,不再进行分割
///
- public static float minSideLength
+ public static float MinSideLength
{
- get { return config._minSideLength; }
+ get { return Config.minSideLength; }
}
[SerializeField]
[Header("单个节点的最短边长,节点任意一条边边长小于这个值则不能再进行分割")]
- private float _minSideLength = 10; // 这个值用于应对过度分割导致树深度过大性能反而下降的情况,同时可以避免大量碰撞器位置完全相同导致的无限分割
+ private float minSideLength = 10; // 这个值用于应对过度分割导致树深度过大性能反而下降的情况,同时可以避免大量碰撞器位置完全相同导致的无限分割
+
+ ///
+ /// 一个节点里的碰撞器数量上限,超过上限后进行分割
+ ///
+ public static int MinCollidersNumber
+ {
+ get { return Config.minCollidersNumber; }
+ }
+ [SerializeField]
+ [Header("单个父级节点的所有子节点的碰撞器数量和下限,低于这个数量则判断为需要合并子节点到这个节点")]
+ private int minCollidersNumber = 5;
///
/// 初始根节点范围
///
- public static Rect startArea
+ public static Rect StartArea
{
- get { return config._startArea; }
+ get { return Config.startArea; }
}
[SerializeField]
[Header("四叉树创建时的范围")]
- private Rect _startArea = new Rect(-1, -1, 1922, 1082);
+ private Rect startArea = new Rect(-1, -1, 1922, 1082);
+
+ private void OnValidate()
+ {
+ // 最大碰撞器数量必须大于0,否则会无限分割
+ if(maxCollidersNumber < 1)
+ {
+ maxCollidersNumber = 1;
+ }
+
+ // 最小边长必须大于0,否则一旦所有碰撞器聚集到一个位置将会发生无限分割
+ if(minSideLength < 0)
+ {
+ minSideLength = 0.1f;
+ }
+
+ // 最小碰撞器数量必须小于最大碰撞器数量,否则会发生合并分割来回跳
+ if (minCollidersNumber >= maxCollidersNumber)
+ {
+ minCollidersNumber = maxCollidersNumber - 1;
+ }
+ }
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Resources/Quadtree Config.asset b/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Resources/Quadtree Config.asset
index 572c4eb..fe45de8 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Resources/Quadtree Config.asset
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Config/Resources/Quadtree Config.asset
@@ -9,12 +9,13 @@ MonoBehaviour:
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: c2e632ee1d4e0094c805794c82ea76a6, type: 3}
+ m_Script: {fileID: 11500000, guid: 742584cee55bd2c4b9469b9c7adef272, type: 3}
m_Name: Quadtree Config
m_EditorClassIdentifier:
- _maxCollidersNumber: 5
- _minSideLength: 100
- _startArea:
+ maxCollidersNumber: 10
+ minSideLength: 10
+ minCollidersNumber: 7
+ startArea:
serializedVersion: 2
x: -1
y: -1
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Detectors/QuadtreeCollisionDetector.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Detectors/QuadtreeCollisionDetector.cs
index 878e0ad..c905217 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Detectors/QuadtreeCollisionDetector.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Detectors/QuadtreeCollisionDetector.cs
@@ -5,6 +5,9 @@
namespace MtC.Tools.QuadtreeCollider
{
+ ///
+ /// 四叉树碰撞检测器
+ ///
internal static class QuadtreeCollisionDetector
{
///
@@ -43,8 +46,7 @@ private static bool CircleToCircle(QuadtreeCollider colliderA, QuadtreeCollider
CircleQuadtreeCollider circleColliderA = (CircleQuadtreeCollider)colliderA;
CircleQuadtreeCollider circleColliderB = (CircleQuadtreeCollider)colliderB;
- return Vector2.Distance(circleColliderA.position, circleColliderB.position) <= circleColliderA.radius + circleColliderB.radius;
- //TODO:圆形碰撞器的半径和最大检测半径是一样的,如果功能无误可以考虑不进行强转节约计算量
+ return Vector2.Distance(circleColliderA.Position, circleColliderB.Position) <= circleColliderA.Radius + circleColliderB.Radius;
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/AddCollider.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/AddCollider.cs
index ddb9311..84b6d93 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/AddCollider.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/AddCollider.cs
@@ -2,14 +2,17 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using System.Linq;
namespace MtC.Tools.QuadtreeCollider
{
- // 添加碰撞器部分
+ ///
+ /// 四叉树添加碰撞器部分
+ ///
internal partial class Quadtree : MonoBehaviour
{
///
- /// 将判断根节点位于新根节点的哪个子节点索引的映射表,规则:[上1, 右1]
+ /// 比特索引,将判断根节点位于新根节点的哪个子节点索引的映射表,规则:[上1, 右1]
///
private static readonly Dictionary indexByteToInt = new Dictionary
{
@@ -19,87 +22,159 @@ internal partial class Quadtree : MonoBehaviour
{ 0b10, 3 }, // 左上 => 10 => 3
};
- internal void DoAddCollider(QuadtreeCollider collider)
+ ///
+ /// 添加碰撞器
+ ///
+ ///
+ internal QuadtreeNode.OperationResult DoAddCollider(QuadtreeCollider collider)
{
- while (!_root.AddCollider(collider)) //TODO:此处假设存入碰撞器失败的原因只会是碰撞器不在四叉树范围中,如果出现存入错误可能就是因为这里出了问题
+ // 存入
+ QuadtreeNode.OperationResult result = root.AddColliderByArea(collider);
+
+ // 循环存入碰撞器,直到存入成功
+ while (!result.Success)
+ {
+ // 如果存入失败则说明碰撞器在四叉树外,让四叉树向碰撞器方向生长
UpwordGroupToCollider(collider);
+
+ // 再次存入
+ result = root.AddColliderByArea(collider);
+ }
+ // XXX:逻辑上存入失败的原因只可能是碰撞器不在范围内,但也不排除意外的可能,如果发生死循环 bug,可以考虑从这里处理
+
+ // 更新映射表
+ collidersToNodes.OverlayMerge(result.CollidersToNodes).RemoveOnValueIsNull();
+
+ return result;
}
+ ///
+ /// 让四叉树向碰撞器方向生长
+ ///
+ ///
private void UpwordGroupToCollider(QuadtreeCollider collider)
{
+ // 获取当前根节点在新的四叉树根节点中的位置的比特索引
byte mainChildIndexByte = GetMainChildIndexByte(collider);
+ // 获取新的四叉树根节点的子节点列表
List children = GetChildren(mainChildIndexByte);
- Rect newRootArea = new Rect(children[QuadtreeNode.LEFT_BOTTOM_CHILD_INDEX].area.position, children[QuadtreeNode.LEFT_BOTTOM_CHILD_INDEX].area.size * 2);
+ // 创建新的四叉树根节点的区域
+ Rect newRootArea = new Rect(children[QuadtreeNode.LEFT_BOTTOM_CHILD_INDEX].Area.position, children[QuadtreeNode.LEFT_BOTTOM_CHILD_INDEX].Area.size * 2);
- _root = new QuadtreeNode(newRootArea, children, indexByteToInt[mainChildIndexByte]);
+ // 创建新的四叉树节点,并设为新的根节点
+ root = new QuadtreeNode(newRootArea, children, indexByteToInt[mainChildIndexByte]);
}
+ ///
+ /// 获取当前根节点在新的四叉树中的子节点位置的比特索引
+ ///
+ ///
+ ///
private byte GetMainChildIndexByte(QuadtreeCollider collider)
{
+ // 默认左下角
byte indexByte = 0b00;
- if (collider.position.x < _root.area.x)
- indexByte |= 0b01; // 碰撞器位于现有区域原点的左边 => 四叉树向左生长 => 根节点是新根节点右边的节点 => 判断左右的右侧位设为1
- if (collider.position.y < _root.area.y)
+ // 碰撞器位于现有区域原点的左边 => 四叉树向左生长 => 根节点是新根节点右边的节点 => 判断左右的右侧位设为1
+ if (collider.Position.x < root.Area.x)
+ {
+ indexByte |= 0b01;
+ }
+
+ // 碰撞器位于现有区域原点的下边 => 四叉树向下生长 => 根节点是新根节点上边的节点 => 判断上下的上方向位设为1
+ if (collider.Position.y < root.Area.y)
+ {
indexByte |= 0b10;
+ }
return indexByte;
}
+ ///
+ /// 获取生长后的四叉树的子节点列表
+ ///
+ ///
+ ///
private List GetChildren(byte mainChildIndexByte)
{
+ // 获取生长后的四叉树所需的 xy 轴的 最小、中间、最大 坐标
GetX(mainChildIndexByte, out float xMin, out float xMiddle, out float xMax);
GetY(mainChildIndexByte, out float yMin, out float yMiddle, out float yMax);
List children = new List();
- children.Add(indexByteToInt[mainChildIndexByte] == 0 ? _root : new QuadtreeNode(new Rect(xMiddle, yMiddle, _root.area.width, _root.area.height)));
- children.Add(indexByteToInt[mainChildIndexByte] == 1 ? _root : new QuadtreeNode(new Rect(xMiddle, yMin, _root.area.width, _root.area.height)));
- children.Add(indexByteToInt[mainChildIndexByte] == 2 ? _root : new QuadtreeNode(new Rect(xMin, yMin, _root.area.width, _root.area.height)));
- children.Add(indexByteToInt[mainChildIndexByte] == 3 ? _root : new QuadtreeNode(new Rect(xMin, yMiddle, _root.area.width, _root.area.height)));
+ // 添加子节点,如果是当前根节点的位置则设为当前根节点,否则创建新节点
+ children.Add(indexByteToInt[mainChildIndexByte] == 0 ? root : new QuadtreeNode(new Rect(xMiddle, yMiddle, root.Area.width, root.Area.height)));
+ children.Add(indexByteToInt[mainChildIndexByte] == 1 ? root : new QuadtreeNode(new Rect(xMiddle, yMin, root.Area.width, root.Area.height)));
+ children.Add(indexByteToInt[mainChildIndexByte] == 2 ? root : new QuadtreeNode(new Rect(xMin, yMin, root.Area.width, root.Area.height)));
+ children.Add(indexByteToInt[mainChildIndexByte] == 3 ? root : new QuadtreeNode(new Rect(xMin, yMiddle, root.Area.width, root.Area.height)));
return children;
}
+ ///
+ /// 获取新的四叉树的 x 轴 左、中、右 三个坐标
+ ///
+ ///
+ ///
+ ///
+ ///
private void GetX(byte mainChildIndexByte, out float xMin, out float xMiddle, out float xMax)
{
if (IsGrowToRight(mainChildIndexByte))
{
- xMin = _root.area.x;
- xMiddle = _root.area.xMax;
- xMax = _root.area.xMax + _root.area.width;
+ xMin = root.Area.x;
+ xMiddle = root.Area.xMax;
+ xMax = root.Area.xMax + root.Area.width;
}
else
{
- xMin = _root.area.x - _root.area.width;
- xMiddle = _root.area.x;
- xMax = _root.area.xMax;
+ xMin = root.Area.x - root.Area.width;
+ xMiddle = root.Area.x;
+ xMax = root.Area.xMax;
}
}
+ ///
+ /// 检测四叉树是否向右生长
+ ///
+ ///
+ ///
bool IsGrowToRight(byte mainChildIndexByte)
{
return (mainChildIndexByte & 0b01) == 0;
}
+ ///
+ /// 获取新的四叉树的 y 轴 底、中、顶 三个坐标
+ ///
+ ///
+ ///
+ ///
+ ///
private void GetY(byte mainChildIndexByte, out float yMin, out float yMiddle, out float yMax)
{
if (IsGrowToUp(mainChildIndexByte))
{
- yMin = _root.area.y;
- yMiddle = _root.area.yMax;
- yMax = _root.area.yMax + _root.area.height;
+ yMin = root.Area.y;
+ yMiddle = root.Area.yMax;
+ yMax = root.Area.yMax + root.Area.height;
}
else
{
- yMin = _root.area.y - _root.area.height;
- yMiddle = _root.area.y;
- yMax = _root.area.yMax;
+ yMin = root.Area.y - root.Area.height;
+ yMiddle = root.Area.y;
+ yMax = root.Area.yMax;
}
}
+ ///
+ /// 检测四叉树是否向上生长
+ ///
+ ///
+ ///
bool IsGrowToUp(byte mainChildIndexByte)
{
return (mainChildIndexByte & 0b10) == 0;
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Quadtree.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Quadtree.cs
index 694ab30..14e1994 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Quadtree.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Quadtree.cs
@@ -1,48 +1,75 @@
using System.Collections.Generic;
using UnityEngine;
+using System.Linq;
namespace MtC.Tools.QuadtreeCollider
{
- // 实例部分
///
- /// 四叉树包装类
+ /// 四叉树实例部分
///
internal partial class Quadtree : MonoBehaviour
{
///
- /// 所有检测器
+ /// 四叉树根节点
///
- private List _detectors = new List();
+ private QuadtreeNode root = null;
///
- /// 四叉树根节点
+ /// 碰撞器到节点的映射表
///
- private QuadtreeNode _root = null;
+ private readonly Dictionary collidersToNodes = new Dictionary();
private void Awake()
{
- _root = new QuadtreeNode(QuadtreeConfig.startArea); // 节点创建过程中使用了Resources.Load,这个方法不能通过类的字段声明时赋值来调用
+ // 节点创建过程中使用了Resources.Load,这个方法不能通过类的字段声明时赋值来调用
+ root = new QuadtreeNode(QuadtreeConfig.StartArea);
}
private void Update()
{
+ // 更新四叉树
UpdateQuadtree();
+ // 进行检测
Detect();
}
+ ///
+ /// 更新四叉树
+ ///
private void UpdateQuadtree()
{
- _root.Update();
+ // 从根节点开始更新碰撞器位置
+ QuadtreeNode.OperationResult positionResult = root.UpdatePosition();
+
+ // 更新映射表
+ collidersToNodes.OverlayMerge(positionResult.CollidersToNodes).RemoveOnValueIsNull();
+
+ // 从根节点更新最大半径
+ root.UpdateMaxRadius();
+
+ // 从包装类两次调用而不是从根节点一次调用的原因是,更新位置时可能有的节点跑到了树外面,这就需要生长四叉树,根节点就会改变
+ // 因为生长出的节点原来是没有碰撞器的,因此这些节点不需要进行碰撞器位置越界更新
+ // 但这些节点需要进行最大半径更新,否则新节点的最大半径是负无穷,会导致生长的这一帧碰撞检测错误
}
+ ///
+ /// 进行碰撞检测
+ ///
private void Detect()
{
- List detectors = new List(_detectors); // 防止在进行检测时发生检测器列表的变化,直接用碰撞器列表内容创建新列表
- foreach (QuadtreeCollider detector in detectors)
+ // 筛选出所有碰撞器中是检测器的
+ List detectorsTemp = collidersToNodes.Keys.Where(collider => collider.IsDetector).ToList();
+
+ foreach (QuadtreeCollider detector in detectorsTemp)
{
- List collisionColliders = instance._root.GetCollidersInCollision(detector);
+ // 获取所有与当前遍历到的碰撞器发生碰撞的碰撞器
+ List collisionColliders = Instance.root.GetCollidersInCollision(detector);
+
+ // 移除当前遍历的碰撞器本身
collisionColliders.Remove(detector);
- detector.SendCollision(collisionColliders); //TODO:如果在检测时报出空异常等异常,可能是这里没有进行空异常的判断导致的
+
+ // 发出碰撞事件
+ detector.SendCollision(collisionColliders);
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Singleton.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Singleton.cs
index d8a5bbe..ca4d5ce 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Singleton.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/Quadtree/Singleton.cs
@@ -4,90 +4,117 @@
namespace MtC.Tools.QuadtreeCollider
{
- // 单例部分
+ ///
+ /// 四叉树单例部分
+ ///
internal partial class Quadtree : MonoBehaviour
{
///
/// 实例
///
- private static Quadtree instance
+ private static Quadtree Instance
{
get
{
- if (_instance != null)
- return _instance;
+ if (instance != null)
+ return instance;
lock (typeof(Quadtree))
{
- if (_instance == null)
+ if (instance == null)
{
- _instance = new GameObject("Quadtree").AddComponent();
- DontDestroyOnLoad(_instance);
+ // 创建一个带四叉树组件的对象,并设为不随场景加载销毁
+ instance = new GameObject("Quadtree").AddComponent();
+ DontDestroyOnLoad(instance);
}
- return _instance;
+ return instance;
}
}
}
- private static Quadtree _instance;
+ private static Quadtree instance;
///
/// 向四叉树中添加碰撞器
///
///
- public static void AddCollider(QuadtreeCollider collider)
+ public static QuadtreeNode.OperationResult AddCollider(QuadtreeCollider collider)
{
- instance.DoAddCollider(collider);
+ // 不能重复存入碰撞器
+ if (Instance.collidersToNodes.ContainsKey(collider))
+ {
+ return new QuadtreeNode.OperationResult(false);
+ }
- if (collider.isDetector)
- AddDetector(collider);
+ // 向实例中添加碰撞器
+ return Instance.DoAddCollider(collider);
}
///
- /// 在重新存入碰撞器时使用的存入方法,不会改变检测器列表
+ /// 从四叉树中移除碰撞器,符合条件时会合并节点
///
///
- internal static void AddColliderOnReset(QuadtreeCollider collider)
+ ///
+ public static QuadtreeNode.OperationResult RemoveColliderWithMerge(QuadtreeCollider collider)
{
- instance.DoAddCollider(collider);
-
- // 重新存入碰撞器是将四叉树中存在的碰撞器取出来重新存入,前后的碰撞器列表并没有变化,检测器列表更不会变化,省一步快一步
+ return RemoveCollider(collider, true);
}
///
- /// 添加检测器,只会添加进检测列表,不会添加碰撞器
+ /// 从四叉树中移除碰撞器,不进行合并
///
- ///
- internal static void AddDetector(QuadtreeCollider detector)
+ ///
+ internal static QuadtreeNode.OperationResult RemoveColliderWithOutMerge(QuadtreeCollider collider)
{
- if (!instance._detectors.Contains(detector))
- instance._detectors.Add(detector);
+ return RemoveCollider(collider, false);
}
///
/// 从四叉树中移除碰撞器
///
///
- public static void RemoveCollider(QuadtreeCollider collider)
+ /// 是否需要在需要合并的时候进行合并
+ ///
+ internal static QuadtreeNode.OperationResult RemoveCollider(QuadtreeCollider collider, bool withMerge)
{
- if (_instance == null)
- return;
+ // 如果没有实例,不进行处理,这一步是必须的,否则在游戏关闭时会发生销毁时四叉树实例一次次出现,进而导致异常
+ if(instance == null)
+ {
+ return new QuadtreeNode.OperationResult(false);
+ }
- _instance._root.RemoveCollider(collider);
+ // 映射表里没有这个碰撞器,说明树里没有这个碰撞器,直接返回失败
+ if (!Instance.collidersToNodes.ContainsKey(collider))
+ {
+ return new QuadtreeNode.OperationResult(false);
+ }
- if (collider.isDetector)
- RemoveDetector(collider);
- }
+ // 根据映射表直接从末梢节点移除碰撞器
+ QuadtreeNode.OperationResult result;
+ if (withMerge)
+ {
+ result = Instance.collidersToNodes[collider].RemoveColliderFromSelfWithMerge(collider);
+ }
+ else
+ {
+ result = Instance.collidersToNodes[collider].RemoveColliderFromSelfWithOutMerge(collider);
+ }
- ///
- /// 移除检测器,只会移除出监测列表,不会移除碰撞器
- ///
- ///
- internal static void RemoveDetector(QuadtreeCollider detector)
- {
- if (_instance == null)
- return;
+ if (result.Success)
+ {
+ // 移除成功后更新映射表,覆盖合并映射表并移除空值
+ Instance.collidersToNodes.OverlayMerge(result.CollidersToNodes).RemoveOnValueIsNull();
+ }
+ else
+ {
+ throw new System.ArgumentOutOfRangeException(
+ "移除碰撞器 "
+ + "(" + collider.Position.x + ", " + collider.Position.y + ")"
+ + " 时发生错误:碰撞器到节点的映射表中存在这个碰撞器,但映射到的节点 "
+ + "(" + Instance.collidersToNodes[collider].Area.ToString() + ")"
+ + " 移除失败,可能是碰撞器并不在节点中");
+ }
- _instance._detectors.Remove(detector);
+ return result;
}
}
-}
\ No newline at end of file
+}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/AddCollider.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/AddCollider.cs
index 96e0aab..83341cb 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/AddCollider.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/AddCollider.cs
@@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using System.Linq;
namespace MtC.Tools.QuadtreeCollider
{
@@ -9,84 +10,197 @@ namespace MtC.Tools.QuadtreeCollider
internal partial class QuadtreeNode
{
///
- /// 向四叉树中存入碰撞器
+ /// 根据节点范围向四叉树中存入碰撞器,只当碰撞器在节点范围内时才存入
///
/// 存入的碰撞器
/// 如果成功存入,返回 true
- internal bool AddCollider(QuadtreeCollider collider)
+ internal OperationResult AddColliderByArea(QuadtreeCollider collider)
{
- if (!_area.Contains(collider.position))
- return false;
+ return AddCollider(collider, (nodeParam, colliderParam) =>
+ {
+ // 如果碰撞器在节点范围内,说明碰撞器可以存入这个节点
+ return nodeParam.Area.Contains(colliderParam.Position);
+ });
+ }
+
+ ///
+ /// 根据指定标准存入碰撞器
+ ///
+ /// 要存入的碰撞器
+ /// 如果这个方法返回 true 这说明这个碰撞器可以存入当前节点
+ ///
+ private OperationResult AddCollider(QuadtreeCollider collider, Func canAdd)
+ {
+ // 不符合存入标准的直接返回存入失败
+ if (!canAdd(this, collider))
+ {
+ // 不符合存入标准并不会导致映射表的变化,只返回失败即可
+ return new OperationResult(false);
+ }
+ // 有子节点,发给子节点保存
if (HaveChildren())
- return AddColliderIntoChildren(collider);
+ {
+ return AddColliderIntoChildren(collider, (nodeParam, colliderParam) => nodeParam.AddCollider(colliderParam, canAdd));
+ }
- AddColliderIntoSelf(collider);
- return true;
+ // 没有子节点,保存节点并返回结果
+ return AddColliderIntoSelf(collider);
}
- private bool AddColliderIntoChildren(QuadtreeCollider collider)
+ ///
+ /// 将碰撞器按照指定标准存入到子节点
+ ///
+ /// 要存入的碰撞器
+ /// 存入方法
+ ///
+ private OperationResult AddColliderIntoChildren(QuadtreeCollider collider, Func addCollider)
{
- foreach (QuadtreeNode child in _children)
- if (child.AddCollider(collider))
- return true;
+ // 遍历子节点存入碰撞器
+ foreach (QuadtreeNode child in children)
+ {
+ // 如果有一个子节点存入成功,则将这个节点的操作结果作为结果返回
+ OperationResult result = addCollider(child, collider);
+ if (result.Success)
+ {
+ return result;
+ }
+ }
- throw new ArgumentOutOfRangeException("向范围是 " + _area + " 的节点的子节点存入碰撞器 " + collider + " 时发生错误:碰撞器没有存入任何子节点"); // 正常流程中不会运行到这
+ // 正常流程中不会运行到的所有子节点都保存失败的情况
+ throw new ArgumentOutOfRangeException("向范围是 " + area + " 的节点的子节点存入碰撞器 " + collider + " 时发生错误:碰撞器没有存入任何子节点");
}
- private void AddColliderIntoSelf(QuadtreeCollider collider)
+ ///
+ /// 向当前节点添加碰撞器
+ ///
+ ///
+ private OperationResult AddColliderIntoSelf(QuadtreeCollider collider)
{
- _colliders.Add(collider);
+ // 向当前节点添加肯定是成功的
+ OperationResult result = new OperationResult(true);
+
+ // 添加进碰撞器列表
+ colliders.Add(collider);
+ // 记录下碰撞器到这个节点的映射
+ result.CollidersToNodes.Add(collider, this);
+ // 如果需要分割节点则进行分割
if (NeedSplit())
- Split();
- }
+ {
+ // 分割节点
+ OperationResult splitResult = Split();
- private bool NeedSplit()
- {
- return _colliders.Count > QuadtreeConfig.maxCollidersNumber && _area.height > QuadtreeConfig.minSideLength && _area.width > QuadtreeConfig.minSideLength;
+ // 将分割节点的映射覆盖到返回结果的映射中
+ result.CollidersToNodes.OverlayMerge(splitResult.CollidersToNodes);
+ }
+
+ return result;
}
- private void Split()
+ ///
+ /// 检测是否需要分割节点
+ ///
+ ///
+ private bool NeedSplit()
{
- /*
- * 清除掉不在自己区域内的碰撞器,防止下发碰撞器失败
- * 分割处子节点并下发碰撞器
- * 把清除掉的那些碰撞器重新存入四叉树
- *
- * 实际是进行了一次位置更新,但为了防止节点碰撞器互相越界导致的多重更新将分割写在存入和取出中间
- */
- List outOfAreaColliders = GetAndRemoveCollidersOutOfField();
- DoSplite();
- ResetCollidersIntoQuadtree(outOfAreaColliders);
+ return
+ // 碰撞器数量超过节点内最大碰撞器数量
+ colliders.Count > QuadtreeConfig.MaxCollidersNumber
+ // 节点高度超过节点最小高度
+ && area.height > QuadtreeConfig.MinSideLength
+ // 节点宽度超过节点最小宽度
+ && area.width > QuadtreeConfig.MinSideLength;
}
- private void DoSplite()
+ ///
+ /// 分割节点
+ ///
+ private OperationResult Split()
{
+ // 创建子节点
CreateChildren();
- SetAllColliderIntoChindren();
+
+ // 把碰撞器分发给子节点,返回操作结果
+ return SetAllColliderIntoChindren();
}
+ ///
+ /// 创建子节点
+ ///
private void CreateChildren()
{
- float halfWidth = _area.width / 2; // 为了防止float的乘除运算误差,一次运算求出宽高的一半,子节点的宽高使用加减运算获得
- float halfHeight = _area.height / 2; // 误差的来源是浮点数的储存方式,除非出现新的储存方式,否则误差将作为标准现象保留下去
+ // 计算出宽高的一半用于创建子节点,先算出一半是为了防止可能出现的计算误差
+ float halfWidth = area.width / 2;
+ float halfHeight = area.height / 2;
- _children = new List
+ // 创建子节点
+ children = new List
{
- new QuadtreeNode(new Rect(_area.x + halfWidth, _area.y + halfHeight, _area.width - halfWidth, _area.height - halfHeight), this), // 右上子节点
- new QuadtreeNode(new Rect(_area.x + halfWidth, _area.y, _area.width - halfWidth, halfHeight), this), // 右下子节点
- new QuadtreeNode(new Rect(_area.x, _area.y, halfWidth, halfHeight), this), // 左下子节点
- new QuadtreeNode(new Rect(_area.x, _area.y + halfHeight, halfWidth, _area.height - halfHeight), this) // 左上子节点
+ new QuadtreeNode(new Rect(area.x + halfWidth, area.y + halfHeight, area.width - halfWidth, area.height - halfHeight), this), // 右上子节点
+ new QuadtreeNode(new Rect(area.x + halfWidth, area.y, area.width - halfWidth, halfHeight), this), // 右下子节点
+ new QuadtreeNode(new Rect(area.x, area.y, halfWidth, halfHeight), this), // 左下子节点
+ new QuadtreeNode(new Rect(area.x, area.y + halfHeight, halfWidth, area.height - halfHeight), this) // 左上子节点
};
}
- private void SetAllColliderIntoChindren()
+ ///
+ /// 把碰撞器分发给子节点
+ ///
+ private OperationResult SetAllColliderIntoChindren()
{
- foreach (QuadtreeCollider collider in _colliders)
- AddColliderIntoChildren(collider);
+ // 分发操作必然成功
+ OperationResult result = new OperationResult(true);
+
+ // 把当前节点的碰撞器全部存入到子节点,这里为了防止可能有碰撞器已经离开了节点范围,需要根据方向而不是范围存入
+ foreach (QuadtreeCollider collider in colliders)
+ {
+ // 根据方向进行存入
+ OperationResult addResult = AddColliderByDirection(collider);
+
+ // 因为分发给子节点后子节点可能也会发生分割,因此通过覆盖合并的方式把子节点的映射合并进返回结果中
+ result.CollidersToNodes.OverlayMerge(addResult.CollidersToNodes);
+ }
+
+ // 清空当前节点存储的碰撞器
+ colliders.Clear();
+
+ return result;
+
+ // 分发功能如果使用先移除越界的碰撞器分割后重新存入树,则有可能因为移除节点导致需要合并,形成 分割反而导致了合并 的逻辑套娃
+ }
+
+ ///
+ /// 根据碰撞器相对于节点的位置向四叉树中存入碰撞器
+ ///
+ ///
+ ///
+ private OperationResult AddColliderByDirection(QuadtreeCollider collider)
+ {
+ return AddCollider(collider, (nodeParam, colliderParam) =>
+ {
+ // 没有父节点的是根节点,根节点可以存入任何方向的碰撞器
+ if(nodeParam.parent == null)
+ {
+ return true;
+ }
+
+ // 如果检测的节点是发起这个方法的节点,无论碰撞器在什么位置,都可以存入到这个节点中
+ if (nodeParam == this)
+ {
+ return true;
+ }
+
+ // 当前节点相对于父节点的方向与碰撞器相对于父节点的方向,在 X 轴上是否一致
+ bool colliderAndNodeOnSameXSide = !((nodeParam.Area.center.x >= nodeParam.parent.Area.center.x) ^ (colliderParam.Position.x >= nodeParam.parent.Area.center.x));
+ // 当前节点相对于父节点的方向与碰撞器相对于父节点的方向,在 Y 轴上是否一致
+ bool colliderAndNodeOnSameYSide = !((nodeParam.Area.center.y >= nodeParam.parent.Area.center.y) ^ (colliderParam.Position.y >= nodeParam.parent.Area.center.y));
+
+ // 这里使用 >= 是因为 Rect 的范围是(包含左边和底边,不包含顶边和右边)
- _colliders.Clear();
+ // 两个方向都一致,说明碰撞器可以存入这个节点
+ return colliderAndNodeOnSameXSide && colliderAndNodeOnSameYSide;
+ });
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Basic.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Basic.cs
index 530e2fb..d272865 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Basic.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Basic.cs
@@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using System.Linq;
namespace MtC.Tools.QuadtreeCollider
{
@@ -33,27 +34,27 @@ internal partial class QuadtreeNode
///
/// 父节点
///
- private QuadtreeNode _parent = null;
+ private QuadtreeNode parent = null;
///
/// 四叉树节点所拥有的区域
///
- internal Rect area
+ internal Rect Area
{
- get { return _area; }
+ get { return area; }
}
- private Rect _area = default;
+ private Rect area = default;
///
/// 这个节点所拥有的碰撞器
///
- private List _colliders = new List();
+ private List colliders = new List();
///
/// 这个节点所拥有的的子节点
///
- private List _children = null;
+ private List children = null;
///
/// 这个节点所拥有的所有碰撞器中,需要检测半径最长的碰撞器的检测半径
///
- private float _maxRadius = DEFAULT_MAX_RADIUS;
+ private float maxRadius = DEFAULT_MAX_RADIUS;
///
/// 根节点的构造方法,只有区域没有父节点。根节点
@@ -61,7 +62,7 @@ internal Rect area
///
internal QuadtreeNode(Rect area)
{
- _area = area;
+ this.area = area;
}
///
@@ -71,7 +72,7 @@ internal QuadtreeNode(Rect area)
///
internal QuadtreeNode(Rect area, QuadtreeNode parent) : this(area)
{
- _parent = parent;
+ this.parent = parent;
}
///
@@ -81,17 +82,73 @@ internal QuadtreeNode(Rect area, QuadtreeNode parent) : this(area)
///
internal QuadtreeNode(Rect area, List children, int mainNodeIndex) : this(area)
{
- _children = children;
+ this.children = children;
- _maxRadius = children[mainNodeIndex]._maxRadius;
+ // 逆向生长出的节点没有碰撞器,之前根节点的最大半径就是新的根节点的最大半径
+ maxRadius = children[mainNodeIndex].maxRadius;
- foreach (QuadtreeNode child in _children)
- child._parent = this;
+ // 给所有子节点设置父节点
+ foreach (QuadtreeNode child in this.children)
+ {
+ child.parent = this;
+ }
}
+ ///
+ /// 检测当前节点是否有子节点
+ ///
+ ///
private bool HaveChildren()
{
- return _children != null; // 子节点List只在创建子节点时才会创建,判断是不是null就能判断有没有子节点
+ // 子节点List只在创建子节点时才会创建,判断是不是null就能判断有没有子节点
+ return children != null;
+ }
+ }
+
+ ///
+ /// 的扩展方法类
+ ///
+ internal static partial class DictionaryExtension
+ {
+ ///
+ /// 将指定的 Dictionary 中的内容直接覆盖进调用这个方法的 Dictionary 中
+ /// 【注意】这个方法会导致调用的 Dictionary 内容变化
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Dictionary OverlayMerge(this Dictionary mainDictonary, Dictionary subDictonary)
+ {
+ // 遍历整个 subDictionary
+ foreach(KeyValuePair pair in subDictonary)
+ {
+ // 使用根据索引存值的特性,如果没有这个 Key 则添加,有这个 Key 则覆盖
+ mainDictonary[pair.Key] = subDictonary[pair.Key];
+ }
+
+ return mainDictonary;
+ }
+
+ ///
+ /// 移除掉 Value 为 null 的值
+ /// 【注意】这个方法会导致调用的 Dictionary 内容变化
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Dictionary RemoveOnValueIsNull(this Dictionary mainDictonary)
+ {
+ List nullKeys = mainDictonary.Where(pair => pair.Value == null).Select(pair => pair.Key).ToList();
+
+ nullKeys.ForEach(key =>
+ {
+ mainDictonary.Remove(key);
+ });
+
+ return mainDictonary;
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Detect.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Detect.cs
index 0d3da54..4105a20 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Detect.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Detect.cs
@@ -14,37 +14,68 @@ internal partial class QuadtreeNode
///
internal List GetCollidersInCollision(QuadtreeCollider collider)
{
+ // 如果指定碰撞器不可能与当前节点内的任何碰撞器碰撞,返回空列表
if (!PossibleCollisions(collider))
+ {
return new List();
+ }
+ // 如果有子节点,从子节点中寻找发生碰撞的碰撞器
if (HaveChildren())
+ {
return GetCollidersInCollisionFromChildren(collider);
+ }
+ // 没有子节点,从当前节点中寻找发生碰撞的碰撞器
return GetCollidersInCollisionFromSelf(collider);
}
+ ///
+ /// 检测指定碰撞器是否有可能与当前节点内的任何碰撞器发生碰撞
+ ///
+ ///
+ ///
private bool PossibleCollisions(QuadtreeCollider collider)
{
- return _area.DistanceToPoint(collider.position) <= _maxRadius + collider.maxRadius; // 如果节点区域到碰撞器的距离小于等于节点最大检测半径和碰撞器最大检测半径之和,则说明节点中可能有碰撞器能够与传入的碰撞器发生碰撞
+ // 如果节点区域到碰撞器的距离小于等于节点最大检测半径和碰撞器最大检测半径之和,则说明节点中可能有碰撞器能够与传入的碰撞器发生碰撞
+ return area.DistanceToPoint(collider.Position) <= maxRadius + collider.MaxRadius;
}
+ ///
+ /// 从子节点中获取与指定碰撞器发生碰撞的碰撞器
+ ///
+ ///
+ ///
private List GetCollidersInCollisionFromChildren(QuadtreeCollider collider)
{
List colliders = new List();
- foreach (QuadtreeNode child in _children)
+ // 遍历子节点进行碰撞检测并保存发生碰撞的碰撞器
+ foreach (QuadtreeNode child in children)
+ {
colliders.AddRange(child.GetCollidersInCollision(collider));
+ }
return colliders;
}
+ ///
+ /// 从当前节点中获取与指定碰撞器发生碰撞的碰撞器
+ ///
+ ///
+ ///
private List GetCollidersInCollisionFromSelf(QuadtreeCollider collider)
{
List colliders = new List();
- foreach (QuadtreeCollider currentCollider in _colliders)
+ // 遍历所有碰撞器,如果与指定碰撞器发生碰撞则记录到列表里
+ foreach (QuadtreeCollider currentCollider in this.colliders)
+ {
if (currentCollider.IsCollitionToCollider(collider))
+ {
colliders.Add(currentCollider);
+ }
+ }
return colliders;
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/RemoveCollider.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/RemoveCollider.cs
index c37230c..67b290f 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/RemoveCollider.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/RemoveCollider.cs
@@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using System.Linq;
namespace MtC.Tools.QuadtreeCollider
{
@@ -8,60 +9,220 @@ namespace MtC.Tools.QuadtreeCollider
internal partial class QuadtreeNode
{
///
- /// 从树中移除碰撞器
+ /// 从当前节点中移除指定碰撞器,不进行合并
///
///
- internal void RemoveCollider(QuadtreeCollider collider)
+ ///
+ internal OperationResult RemoveColliderFromSelfWithOutMerge(QuadtreeCollider collider)
{
- if (!RemoveColliderByPosition(collider)) // 首先根据位置移除碰撞器,但有时候碰撞器移出了所在节点的范围,就会发生找不到节点无法移除的情况
- RemoveColliderFromAllNodes(collider); // 此时使用全节点遍历移除
+ bool listResult = colliders.Remove(collider);
+
+ if (listResult)
+ {
+ // 创建操作成功的返回对象
+ OperationResult result = new OperationResult(true);
+
+ // 映射表值为 null 表示碰撞器不属于任何节点
+ result.CollidersToNodes.Add(collider, null);
+
+ return result;
+ }
+ else
+ {
+ // 返回移除失败,移除失败不改变映射表,直接返回失败即可
+ return new OperationResult(false);
+ }
}
- private bool RemoveColliderByPosition(QuadtreeCollider collider)
+ ///
+ /// 从当前节点中移除指定碰撞器,并根据需要合并
+ ///
+ ///
+ ///
+ internal OperationResult RemoveColliderFromSelfWithMerge(QuadtreeCollider collider)
{
- if (HaveChildren())
- return RemoveColliderFromChildrenByPosition(collider);
+ // 移除碰撞器
+ OperationResult result = RemoveColliderFromSelfWithOutMerge(collider);
+
+ // 移除失败,不需要合并,直接返回结果
+ if(!result.Success)
+ {
+ return result;
+ }
+
+ // 向上合并
+ OperationResult mergeResult = UpwordMerge();
- return RemoveColliderFromSelfByPosition(collider);
+ // 如果合并成功,将合并导致的映射表更新加入到结果中
+ if (mergeResult.Success)
+ {
+ result.CollidersToNodes.OverlayMerge(mergeResult.CollidersToNodes);
+ }
+
+ return result;
}
- private bool RemoveColliderFromChildrenByPosition(QuadtreeCollider collider)
+ ///
+ /// 如果当前节点达到了合并条件,返回 true
+ ///
+ ///
+ private bool NeedMerge()
{
- foreach (QuadtreeNode child in _children)
- if (child.RemoveColliderByPosition(collider))
- return true;
+ // 有子节点,且节点中的碰撞器总数小于最小碰撞器总数,就是达到了合并条件
+ return
+ HaveChildren()
+ && GetColliderNumbers() < QuadtreeConfig.MinCollidersNumber;
+ }
- return false;
+ ///
+ /// 获取当前节点及所有子节点的总计碰撞器数量
+ ///
+ ///
+ private int GetColliderNumbers()
+ {
+ if (HaveChildren())
+ {
+ // 有子节点,子节点的碰撞器数量和就是这个节点的碰撞器数量
+ int number = 0;
+ children.ForEach(child => number += child.GetColliderNumbers());
+ return number;
+ }
+ else
+ {
+ // 没有子节点,返回碰撞器列表数量
+ return colliders.Count;
+ }
}
- private bool RemoveColliderFromSelfByPosition(QuadtreeCollider collider)
+ ///
+ /// 从当前节点开始,向上合并节点,直到不能合并为止
+ ///
+ ///
+ private OperationResult UpwordMerge()
{
- if (_area.Contains(collider.position))
- return RemoveColliderFromSelf(collider);
+ // 先准备一个合并失败的结果
+ OperationResult result = new OperationResult(false);
+
+ // 从当前节点开始
+ QuadtreeNode currentNode = this;
+
+ // 逻辑比较繁琐,使用死循环加跳出
+ while (true)
+ {
+ // 当前节点是 null,这种情况是合并完了根节点后的循环,直接结束循环
+ if (currentNode == null)
+ {
+ break;
+ }
+
+ // 当前节点是末梢,末梢本身不能合并,向上一级
+ if (!currentNode.HaveChildren())
+ {
+ // 向上一级
+ currentNode = currentNode.parent;
+
+ // 再次循环
+ continue;
+ }
+
+ // 当前节点不能合并,结束合并
+ if (!currentNode.NeedMerge())
+ {
+ break;
+ }
- return false;
+ // 合并并记录结果
+ result = currentNode.Merge();
+
+ // 向上移一级
+ currentNode = currentNode.parent;
+ }
+
+ return result;
}
- private bool RemoveColliderFromSelf(QuadtreeCollider collider)
+ ///
+ /// 合并当前节点
+ ///
+ ///
+ private OperationResult Merge()
{
- return _colliders.Remove(collider);
+ // 合并节点必然成功
+ OperationResult result = new OperationResult(true);
+
+ // 将当前节点和所有子节点的碰撞器移除并记录
+ OperationResult removeResult = RemoveAllColliders();
+
+ // 把子节点列表抛弃掉
+ children = null;
+
+ // 把移除的子节点重新添加到当前节点中,这里使用直接添加,因为合并操作并不会导致节点达到分割标准
+ OperationResult addCollidersResult = AddCollidersIntoSelf(removeResult.CollidersToNodes.Select(pair => pair.Key).ToList());
+
+ // 更新映射表修改记录
+ result.CollidersToNodes.OverlayMerge(addCollidersResult.CollidersToNodes);
+
+ // 返回记录
+ return result;
}
- private bool RemoveColliderFromAllNodes(QuadtreeCollider collider)
+ ///
+ /// 将当前节点和所有子节点的碰撞器移除
+ ///
+ ///
+ private OperationResult RemoveAllColliders()
{
- if (HaveChildren())
- return RemoveColliderFromChildrenAndAllNodes(collider);
+ // 清空碰撞器必然成功
+ OperationResult result = new OperationResult(true);
+
+ if (!HaveChildren())
+ {
+ // 没有子节点,移除碰撞器并返回
+
+ // 将所有碰撞器记录到操作结果里,映射的节点是 null,表示从树里移除
+ result.CollidersToNodes = colliders.Select(collider => new KeyValuePair(collider, null)).ToDictionary(pair => pair.Key, pair => pair.Value);
+
+ // 清空碰撞器列表
+ colliders.Clear();
+
+ return result;
+ }
+ else
+ {
+ // 有子节点,通知子节点清空碰撞器并合并记录
+
+ children.ForEach(child =>
+ {
+ result.CollidersToNodes.OverlayMerge(child.RemoveAllColliders().CollidersToNodes);
+ });
- return RemoveColliderFromSelf(collider);
+ return result;
+ }
}
- private bool RemoveColliderFromChildrenAndAllNodes(QuadtreeCollider collider)
+ ///
+ /// 向当前节点批量添加碰撞器
+ ///
+ ///
+ ///
+ private OperationResult AddCollidersIntoSelf(List newColliders)
{
- foreach (QuadtreeNode child in _children)
- if (child.RemoveColliderFromAllNodes(collider))
- return true;
+ // 批量添加必然成功
+ OperationResult result = new OperationResult(true);
+
+ // 将碰撞器添加到碰撞器列表里
+ colliders.AddRange(newColliders);
+
+ // 去重
+ colliders = new List(colliders.Distinct());
+
+ // 记录映射变化
+ result.CollidersToNodes = newColliders
+ .Where(collider => collider != null)
+ .Select(collider => new KeyValuePair(collider, this))
+ .ToDictionary(pair => pair.Key, pair => pair.Value);
- return false;
+ return result;
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Result.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Result.cs
new file mode 100644
index 0000000..60fa176
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Result.cs
@@ -0,0 +1,29 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace MtC.Tools.QuadtreeCollider
+{
+ internal partial class QuadtreeNode
+ {
+ ///
+ /// 操作的返回对象
+ ///
+ internal class OperationResult
+ {
+ ///
+ /// 操作成功
+ ///
+ public bool Success { private set; get; }
+ ///
+ /// 操作后影响到的碰撞器到节点的映射表
+ ///
+ public Dictionary CollidersToNodes { get; set; } = new Dictionary();
+
+ public OperationResult(bool success)
+ {
+ Success = success;
+ }
+ }
+ }
+}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Update.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Update.cs
index 3a52638..3c5a286 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Update.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Quadtree/QuadtreeNode/Update.cs
@@ -7,89 +7,190 @@ namespace MtC.Tools.QuadtreeCollider
internal partial class QuadtreeNode
{
///
- /// 更新四叉树中的所有节点
+ /// 更新碰撞器位置
///
- internal void Update()
- {
- UpdatePosition();
- UpdateMaxRadius();
- }
-
- private void UpdatePosition()
+ ///
+ internal OperationResult UpdatePosition()
{
if (HaveChildren())
- UpdateChildrenPosition();
+ {
+ // 有子节点,通知子节点更新碰撞器位置
+ return UpdateChildrenPosition();
+ }
else
- UpdateSelfPosition();
+ {
+ // 没有子节点,更新当前节点内的碰撞器位置
+ return UpdateSelfPosition();
+ }
}
- private void UpdateChildrenPosition()
+ ///
+ /// 更新子节点的碰撞器位置
+ ///
+ private OperationResult UpdateChildrenPosition()
{
- foreach (QuadtreeNode child in _children)
- child.UpdatePosition();
- }
+ // 更新碰撞器位置必定成功
+ OperationResult result = new OperationResult(true);
- private void UpdateSelfPosition()
- {
- List outOfAreaColliders = GetAndRemoveCollidersOutOfField();
- ResetCollidersIntoQuadtree(outOfAreaColliders);
+ // 通知所有子节点更新碰撞器位置
+ foreach (QuadtreeNode child in children)
+ {
+ // 通知子节点更新碰撞器位置
+ OperationResult childResult = child.UpdatePosition();
+
+ // 将子节更新导致的映射表更新合并到总结果里
+ result.CollidersToNodes.OverlayMerge(childResult.CollidersToNodes);
+ }
+
+ // 如果达到了合并标准则进行合并
+ if (NeedMerge())
+ {
+ // 合并所有子节点
+ OperationResult mergeResult = Merge();
+
+ // 记录映射表变化
+ result.CollidersToNodes.OverlayMerge(mergeResult.CollidersToNodes);
+ }
+
+ // 这里需要在所有子节点更新完毕后进行是否需要合并的判断,在遍历子节点的过程中决不能合并节点,否则可能遍历到一半就到了合并标准,之后的遍历就会发生逻辑错误
+
+ return result;
}
- private List GetAndRemoveCollidersOutOfField()
+ ///
+ /// 更新当前节点内的碰撞器的位置
+ ///
+ private OperationResult UpdateSelfPosition()
{
- List outOfFieldColliders = new List();
+ // 更新碰撞器位置必定成功
+ OperationResult result = new OperationResult(true);
- foreach (QuadtreeCollider collider in _colliders)
- if (!_area.Contains(collider.position))
- outOfFieldColliders.Add(collider);
+ // 移除所有当前节点保存的、已经离开当前节点范围的碰撞器,并将这些碰撞器保存起来
+ OperationResult removeResult = GetAndRemoveCollidersOutOfArea();
- foreach (QuadtreeCollider collider in outOfFieldColliders)
- RemoveSelfColliderOnReset(collider);
+ // 合并移除导致的映射表变更
+ result.CollidersToNodes.OverlayMerge(removeResult.CollidersToNodes);
+
+ // 把移除的碰撞器重新存入四叉树
+ OperationResult resetResult = ResetCollidersIntoQuadtree(new List(removeResult.CollidersToNodes.Keys));
+
+ // 合并重新存入导致的映射表变更
+ result.CollidersToNodes.OverlayMerge(resetResult.CollidersToNodes);
- return outOfFieldColliders;
+ return result;
}
- private void RemoveSelfColliderOnReset(QuadtreeCollider collider)
+ ///
+ /// 移除所有当前节点保存的、已经离开当前节点范围的碰撞器,并返回
+ ///
+ ///
+ private OperationResult GetAndRemoveCollidersOutOfArea()
{
- _colliders.Remove(collider);
-
- // TODO:可以通过添加字典使封装类具有直接从树梢移除碰撞器的能力,这个方法就可以提取到包装类去了
- // TODO:移除不是完全从包装类进行,出现bug优先排查此处
+ OperationResult result = new OperationResult(true);
+
+ // 遍历所有碰撞器,超出节点范围的记录下来
+ foreach (QuadtreeCollider collider in colliders)
+ {
+ if (!area.Contains(collider.Position))
+ {
+ result.CollidersToNodes.Add(collider, null);
+ }
+ }
+
+ // 将所有超出节点范围的碰撞器移除出四叉树
+ foreach (QuadtreeCollider collider in new List(result.CollidersToNodes.Keys))
+ {
+ // 移除碰撞器
+ OperationResult removeResult = Quadtree.RemoveColliderWithOutMerge(collider);
+
+ // 记录映射表的变化
+ result.CollidersToNodes.OverlayMerge(removeResult.CollidersToNodes);
+ }
+
+ // 返回结果
+ return result;
}
- private void ResetCollidersIntoQuadtree(List outOfFieldColliders)
+ ///
+ /// 将碰撞器重新存入四叉树
+ ///
+ ///
+ private OperationResult ResetCollidersIntoQuadtree(List outOfFieldColliders)
{
+ // 重新存入必定成功
+ OperationResult result = new OperationResult(true);
+
+ // 通过包装类将碰撞器从根节点存入
foreach (QuadtreeCollider collider in outOfFieldColliders)
- Quadtree.AddColliderOnReset(collider); // 直接通过包装类从根节点存入
+ {
+ // 通过包装类重新存入碰撞器
+ OperationResult addResult = Quadtree.AddCollider(collider);
+
+ // 将映射表变更合并进结果中
+ result.CollidersToNodes.OverlayMerge(addResult.CollidersToNodes);
+ }
+
+ // 这里并不需要担心重新存入导致分割问题,首先重新存入的是越界的,不会存入当前节点,当前节点不会分割。
+ // 如果存到已更新的节点,已更新的节点分割不影响操作。如果存到未更新的节点,为更新的节点分割只会在遍历到的时候把更新下发到分割出的子节点中,不会导致逻辑问题。
+
+ return result;
}
- private float UpdateMaxRadius()
+ ///
+ /// 更新最大半径
+ ///
+ ///
+ internal float UpdateMaxRadius()
{
if (HaveChildren())
- return _maxRadius = UpdateChildrenMaxRadius();
+ {
+ // 有子节点,通知子节点更新最大半径,并在子节点更新后设置当前节点的最大半径
+ return maxRadius = UpdateChildrenMaxRadius();
+ }
else
- return _maxRadius = UpdateSelfMaxRadius();
+ {
+ // 没有子节点,更新当前节点的最大半径
+ return maxRadius = UpdateSelfMaxRadius();
+ }
}
+ ///
+ /// 更新子节点的最大半径
+ ///
+ ///
private float UpdateChildrenMaxRadius()
{
- _maxRadius = DEFAULT_MAX_RADIUS;
+ maxRadius = DEFAULT_MAX_RADIUS;
- foreach (QuadtreeNode child in _children)
- _maxRadius = Mathf.Max(_maxRadius, child.UpdateMaxRadius());
+ // 遍历所有子节点更新最大半径,并保留最大的半径作为当前节点的最大半径
+ foreach (QuadtreeNode child in children)
+ {
+ maxRadius = Mathf.Max(maxRadius, child.UpdateMaxRadius());
+ }
- return _maxRadius;
+ // 返回最大半径
+ return maxRadius;
}
+ ///
+ /// 更新当前节点的最大半径
+ ///
+ ///
private float UpdateSelfMaxRadius()
{
- _maxRadius = DEFAULT_MAX_RADIUS;
-
- foreach (QuadtreeCollider collider in _colliders)
- if (collider.maxRadius > _maxRadius)
- _maxRadius = collider.maxRadius;
-
- return _maxRadius;
+ maxRadius = DEFAULT_MAX_RADIUS;
+
+ // 遍历所有碰撞器,找出最大半径
+ foreach (QuadtreeCollider collider in colliders)
+ {
+ if (collider.MaxRadius > maxRadius)
+ {
+ maxRadius = collider.MaxRadius;
+ }
+ }
+
+ // 返回最大半径
+ return maxRadius;
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Dictionary Test/DictionaryTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Dictionary Test/DictionaryTest.cs
new file mode 100644
index 0000000..9d9cd60
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Dictionary Test/DictionaryTest.cs
@@ -0,0 +1,103 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Linq;
+using NUnit.Framework;
+using System.Text;
+
+
+namespace MtC.Tools.QuadtreeCollider.Test
+{
+ [TestFixture]
+ public class DictionaryTest
+ {
+ [Test]
+ public void UnionTest()
+ {
+ // 主字典
+ Dictionary mainDictionary = new Dictionary();
+ // 副字典
+ Dictionary subDictionary = new Dictionary();
+
+ mainDictionary.Add(1, "One");
+ mainDictionary.Add(2, "Two");
+
+ subDictionary.Add(3, "Three");
+
+ // 没有重复内容的 Union
+ mainDictionary = mainDictionary.Union(subDictionary).ToDictionary(pair => pair.Key, pair => pair.Value);
+ Debug.Log("没有重复的 Union:" + PrintDictionary(mainDictionary));
+
+ // 有重复的 Union
+ mainDictionary = mainDictionary.Union(subDictionary).ToDictionary(pair => pair.Key, pair => pair.Value);
+ Debug.Log("重复合并了 3 的 Union:" + PrintDictionary(mainDictionary));
+
+ // 合并修改了的内容
+ subDictionary[3] = "NEW THREE";
+ mainDictionary = mainDictionary.Union(subDictionary).ToDictionary(pair => pair.Key, pair => pair.Value);
+ Debug.Log("合并了修改后的 3 的 Union:" + PrintDictionary(mainDictionary));
+
+ // 合并时如果有相同的 Key 不同值的情况会报错,这个方法不是很好用
+ }
+
+ [Test]
+ public void RepeatAdd()
+ {
+ Dictionary dictionary = new Dictionary();
+
+ // 存入新的值
+ dictionary.Add(1, "One");
+ Debug.Log("存入新值:" + PrintDictionary(dictionary));
+
+ // 存入重复值
+ dictionary.Add(1, "One");
+ Debug.Log("存入重复值:" + PrintDictionary(dictionary));
+
+ // 存入重复 Key 的不同值
+ dictionary.Add(1, "NEW ONE");
+ Debug.Log("存入重复 Key 的不同值" + PrintDictionary(dictionary));
+
+ // 只要存入已有的 Key 就会报错
+ }
+
+ [Test]
+ public void SetByIndex()
+ {
+ Dictionary dictionary = new Dictionary();
+
+ // 存入新的值
+ dictionary[1] = "One";
+ Debug.Log("存入新值:" + PrintDictionary(dictionary));
+
+ // 存入重复值
+ dictionary[1] = "One";
+ Debug.Log("存入重复值:" + PrintDictionary(dictionary));
+
+ // 存入重复 Key 的不同值
+ dictionary[1] = "NEW ONE";
+ Debug.Log("存入重复 Key 的不同值" + PrintDictionary(dictionary));
+
+ // 使用索引方式存值时,如果没有这个索引会添加,有这个索引会覆盖
+ }
+
+ private string PrintDictionary(Dictionary dictionary)
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+
+ stringBuilder.Append("{");
+
+ foreach (KeyValuePair pair in dictionary)
+ {
+ stringBuilder.Append("(");
+ stringBuilder.Append(pair.Key.ToString());
+ stringBuilder.Append(", ");
+ stringBuilder.Append(pair.Value.ToString());
+ stringBuilder.Append("), ");
+ }
+
+ stringBuilder.Append("}");
+
+ return stringBuilder.ToString();
+ }
+ }
+}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Event Test/SubscribeTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Event Test/SubscribeTest.cs
index 9125a83..bc8f490 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Event Test/SubscribeTest.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Event Test/SubscribeTest.cs
@@ -4,64 +4,67 @@
using NUnit.Framework;
using System;
-///
-/// 事件委托的订阅机制测试
-///
-[TestFixture]
-public class SubscribeTest
+namespace MtC.Tools.QuadtreeCollider.Test
{
- private Action _actions;
-
- [TearDown]
- public void TearDown()
- {
- if (_actions != null)
- foreach (Action a in _actions.GetInvocationList())
- _actions -= a;
- }
-
- [Test]
- public void RepeatSubscribe()
+ ///
+ /// 事件委托的订阅机制测试
+ ///
+ [TestFixture]
+ public class SubscribeTest
{
- _actions += Say;
- _actions += Say;
- _actions += Say;
-
- Debug.Log(_actions.GetInvocationList().Length == 1 ? "重复订阅不会产生多个订阅" : "重复订阅会产生多个订阅");
- }
+ private Action actions;
- [Test]
- public void RepeatCancelSubscribe()
- {
- bool exception = false;
-
- try
+ [TearDown]
+ public void TearDown()
{
- _actions -= Say;
+ if (actions != null)
+ foreach (Action a in actions.GetInvocationList())
+ actions -= a;
}
- catch
+
+ [Test]
+ public void RepeatSubscribe()
{
- exception = true;
+ actions += Say;
+ actions += Say;
+ actions += Say;
+
+ Debug.Log(actions.GetInvocationList().Length == 1 ? "重复订阅不会产生多个订阅" : "重复订阅会产生多个订阅");
}
- Debug.Log(exception ? "重复取消订阅会导致异常" : "重复取消订阅会导致异常");
- }
+ [Test]
+ public void RepeatCancelSubscribe()
+ {
+ bool exception = false;
- [Test]
- public void Subscribed()
- {
- bool subscribed = false;
- _actions += Say;
+ try
+ {
+ actions -= Say;
+ }
+ catch
+ {
+ exception = true;
+ }
- foreach (Action action in _actions.GetInvocationList())
- if (action == Say)
- subscribed = true;
+ Debug.Log(exception ? "重复取消订阅会导致异常" : "重复取消订阅会导致异常");
+ }
- Debug.Log(subscribed ? "使用 == 可以判断出是否已经订阅" : "使用 == 无法判断出是否已经订阅");
- }
+ [Test]
+ public void Subscribed()
+ {
+ bool subscribed = false;
+ actions += Say;
- private void Say(string str)
- {
- Debug.Log(str);
+ foreach (Action action in actions.GetInvocationList())
+ if (action == Say)
+ subscribed = true;
+
+ Debug.Log(subscribed ? "使用 == 可以判断出是否已经订阅" : "使用 == 无法判断出是否已经订阅");
+ }
+
+ private void Say(string str)
+ {
+ Debug.Log(str);
+ }
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/List Test/ListTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/List Test/ListTest.cs
index 58231c5..28daec7 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/List Test/ListTest.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/List Test/ListTest.cs
@@ -2,53 +2,73 @@
using System.Collections.Generic;
using UnityEngine;
using NUnit.Framework;
+using System.Linq;
-[TestFixture]
-public class ListTest
+namespace MtC.Tools.QuadtreeCollider.Test
{
- ///
- /// 测试List和LLinkedList的foreach速度
- ///
- [Test]
- public void ForeachSpeed()
+ [TestFixture]
+ public class ListTest
{
- List list = new List();
- LinkedList linkedList = new LinkedList();
-
- for (int i = 0; i < 1000000; i++)
+ ///
+ /// 测试List和LLinkedList的foreach速度
+ ///
+ [Test]
+ public void ForeachSpeed()
{
- list.Add(i);
- linkedList.AddLast(i);
- }
+ List list = new List();
+ LinkedList linkedList = new LinkedList();
- System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
+ for (int i = 0; i < 1000000; i++)
+ {
+ list.Add(i);
+ linkedList.AddLast(i);
+ }
- stopwatch.Start();
+ System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
- foreach (int value in list)
- continue;
+ stopwatch.Start();
- stopwatch.Stop();
+ foreach (int value in list)
+ continue;
- Debug.Log("list:" + stopwatch.ElapsedMilliseconds);
+ stopwatch.Stop();
- stopwatch.Start();
+ Debug.Log("list:" + stopwatch.ElapsedMilliseconds);
- foreach (int value in linkedList)
- continue;
+ stopwatch.Start();
- stopwatch.Stop();
+ foreach (int value in linkedList)
+ continue;
- Debug.Log("linkedlist:" + stopwatch.ElapsedMilliseconds);
- }
+ stopwatch.Stop();
- [Test]
- public void RemoveCount()
- {
- List list = new List { 1, 2, 3 };
+ Debug.Log("linkedlist:" + stopwatch.ElapsedMilliseconds);
+ }
+
+ ///
+ /// 测试 List 的 Remove 方法会不会导致总数减少
+ ///
+ [Test]
+ public void RemoveCount()
+ {
+ List list = new List { 1, 2, 3 };
- list.Remove(1);
+ list.Remove(1);
- Debug.Log(list.Count == 2 ? "List.Remove 会导致总数减少" : "List.Remove不会导致总数减少");
+ Debug.Log(list.Count == 2 ? "List.Remove 会导致总数减少" : "List.Remove不会导致总数减少");
+ }
+
+ ///
+ /// 测试 Distinct 方法会不会导致原列表变化
+ ///
+ [Test]
+ public void Distinct()
+ {
+ List list = new List { "Hello", "World", "Hello" };
+
+ List distinctList = new List(list.Distinct());
+
+ Debug.Log(list.Count == 2 ? "list.Distinct 会改变原列表" : "list.Distinct 不会改变原列表");
+ }
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Overload Test/OverloadTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Overload Test/OverloadTest.cs
index f0dc54c..98b5527 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Overload Test/OverloadTest.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Overload Test/OverloadTest.cs
@@ -3,42 +3,45 @@
using UnityEngine;
using NUnit.Framework;
-///
-/// 用于测试C#的重载功能的测试类
-///
-public class OverloadTest
+namespace MtC.Tools.QuadtreeCollider.Test
{
///
- /// 测试当存在父子级
+ /// 用于测试C#的重载功能的测试类
///
- [Test]
- public void ParentTypeChildObject()
+ public class OverloadTest
{
- ParentClass child = new ChildClass();
- ParentClass brother = new BrotherClass();
-
- Log(child);
- Log(brother);
- }
-
- private void Log(ParentClass parent)
- {
- Debug.Log("父类Log,对象 = " + parent);
- }
-
- private void Log(ChildClass child)
- {
- Debug.Log("子类Log,对象 = " + child);
+ ///
+ /// 测试当存在父子级
+ ///
+ [Test]
+ public void ParentTypeChildObject()
+ {
+ ParentClass child = new ChildClass();
+ ParentClass brother = new BrotherClass();
+
+ Log(child);
+ Log(brother);
+ }
+
+ private void Log(ParentClass parent)
+ {
+ Debug.Log("父类Log,对象 = " + parent);
+ }
+
+ private void Log(ChildClass child)
+ {
+ Debug.Log("子类Log,对象 = " + child);
+ }
+
+ private void Log(BrotherClass brother)
+ {
+ Debug.Log("子类兄弟Log,对象 = " + brother);
+ }
+
+ class ParentClass { }
+
+ class ChildClass : ParentClass { }
+
+ class BrotherClass : ParentClass { }
}
-
- private void Log(BrotherClass brother)
- {
- Debug.Log("子类兄弟Log,对象 = " + brother);
- }
-
- class ParentClass { }
-
- class ChildClass : ParentClass { }
-
- class BrotherClass : ParentClass { }
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecCenterTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecCenterTest.cs
new file mode 100644
index 0000000..50ffdb9
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecCenterTest.cs
@@ -0,0 +1,30 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using NUnit.Framework;
+
+namespace MtC.Tools.QuadtreeCollider.Test
+{
+ [TestFixture]
+ public class RecCenterTest
+ {
+ [Test]
+ public void CenterTest()
+ {
+ Rect rect = new Rect(-1, -1, 2, 2);
+
+ if (rect.center == Vector2.zero)
+ {
+ Debug.Log("Rect 的 Center 默认返回视觉上的中心,即 x y 各一半");
+ }
+ else if (rect.center == -Vector2.one)
+ {
+ Debug.Log("Rect 的 Center 默认返回一个角,即 x,y 各一半");
+ }
+ else
+ {
+ Debug.Log("数值为 " + rect.ToString() + " 的 Rect 的 Center 返回是 " + rect.center);
+ }
+ }
+ }
+}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecContainstTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecContainstTest.cs
index 00b6cf8..c4c27af 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecContainstTest.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RecContainstTest.cs
@@ -1,33 +1,36 @@
using NUnit.Framework;
using UnityEngine;
-///
-/// 测试Rect的Contains的效果测试类
-///
-[TestFixture]
-public class RectContainsTest
+namespace MtC.Tools.QuadtreeCollider.Test
{
- private const float WIDTH = 10f;
- private const float HEIGHT = 25f;
- private const float X = 10f;
- private const float Y = 2f;
-
- private Rect _rect;
-
- [SetUp]
- public void SetUp()
- {
- _rect = new Rect(X, Y, WIDTH, HEIGHT);
- }
-
///
- /// 测试Rect的Contains,最右边的点是否不包含在Rect中
+ /// 测试Rect的Contains的效果测试类
///
- [Test]
- public void Contains_RightBorder_False()
+ [TestFixture]
+ public class RectContainsTest
{
- Vector2 right = new Vector2(X + WIDTH, (Y + HEIGHT) / 2);
+ private const float WIDTH = 10f;
+ private const float HEIGHT = 25f;
+ private const float X = 10f;
+ private const float Y = 2f;
+
+ private Rect rect;
+
+ [SetUp]
+ public void SetUp()
+ {
+ rect = new Rect(X, Y, WIDTH, HEIGHT);
+ }
+
+ ///
+ /// 测试Rect的Contains,最右边的点是否不包含在Rect中
+ ///
+ [Test]
+ public void Contains_RightBorder_False()
+ {
+ Vector2 right = new Vector2(X + WIDTH, (Y + HEIGHT) / 2);
- Assert.IsFalse(_rect.Contains(right));
+ Assert.IsFalse(rect.Contains(right));
+ }
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RectNewSetSpeedTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RectNewSetSpeedTest.cs
index 94172d1..0666ffb 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RectNewSetSpeedTest.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/API Tests/Rect Test/RectNewSetSpeedTest.cs
@@ -1,38 +1,41 @@
using NUnit.Framework;
using UnityEngine;
-///
-/// 测试Rect的new和set两个方法的速度
-///
-public class RectNewSetSpeedTest
+namespace MtC.Tools.QuadtreeCollider.Test
{
- [Test]
- public void NewSetSpeed()
+ ///
+ /// 测试Rect的new和set两个方法的速度
+ ///
+ public class RectNewSetSpeedTest
{
- const int LOOP_TIME = 10000000;
+ [Test]
+ public void NewSetSpeed()
+ {
+ const int LOOP_TIME = 10000000;
- long newTime;
- long setTime;
+ long newTime;
+ long setTime;
- System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
- Rect rect = new Rect();
+ System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
+ Rect rect = new Rect();
- stopwatch.Start();
- for (int i = 0; i < LOOP_TIME; i++)
- rect = new Rect(i, i, i, i);
- stopwatch.Stop();
- newTime = stopwatch.ElapsedMilliseconds;
- Debug.Log("循环创建Rect " + LOOP_TIME + " 次,耗时 " + newTime + " 毫秒");
+ stopwatch.Start();
+ for (int i = 0; i < LOOP_TIME; i++)
+ rect = new Rect(i, i, i, i);
+ stopwatch.Stop();
+ newTime = stopwatch.ElapsedMilliseconds;
+ Debug.Log("循环创建Rect " + LOOP_TIME + " 次,耗时 " + newTime + " 毫秒");
- stopwatch.Reset();
+ stopwatch.Reset();
- stopwatch.Start();
- for (int i = 0; i < LOOP_TIME; i++)
- rect.Set(i, i, i, i);
- stopwatch.Stop();
- setTime = stopwatch.ElapsedMilliseconds;
- Debug.Log("向Rect存值 " + LOOP_TIME + " 次,耗时 " + setTime + " 毫秒");
+ stopwatch.Start();
+ for (int i = 0; i < LOOP_TIME; i++)
+ rect.Set(i, i, i, i);
+ stopwatch.Stop();
+ setTime = stopwatch.ElapsedMilliseconds;
+ Debug.Log("向Rect存值 " + LOOP_TIME + " 次,耗时 " + setTime + " 毫秒");
- Debug.Log(newTime > setTime ? "向已有Rect存值比创建新Rect快" : "创建新Rect比向已有Rect存值要快");
+ Debug.Log(newTime > setTime ? "向已有Rect存值比创建新Rect快" : "创建新Rect比向已有Rect存值要快");
+ }
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/Quadtree Collider Tests/QuadTreeTest.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/Quadtree Collider Tests/QuadTreeTest.cs
deleted file mode 100644
index 11e74c2..0000000
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Editor/Quadtree Collider Tests/QuadTreeTest.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-//using System.Collections;
-//using System.Collections.Generic;
-//using UnityEngine;
-//using NUnit.Framework;
-//using System.Reflection;
-//using System;
-//using MtC.Tools.QuadtreeCollider;
-
-// 此测试依赖于旧版本四叉树,测试结果正确,测试的代码不会更新
-
-//[TestFixture]
-//public class QuadTreeTest
-//{
-// ///
-// /// 测试四叉树创建子节点方法创建的子节点的中央分隔线是否紧贴,如果上下左右子节点的范围的边缘没有重合,则代表四叉树有空隙,落入空隙的碰撞器将无法存入树
-// ///
-// [Test]
-// [TestCase(1f, 2f, 4f, 3f)]
-// [TestCase(2.0649f, 4.97412f, 264.94125f, 23.64985f)]
-// [TestCase(0.0001f, 0.0001f, 0.001f, 0.0001f)]
-// public void CreateChildren_Half(float x, float y, float width, float height)
-// {
-// QuadtreeNode quadtree = new QuadtreeNode(new Rect(x, y, width, height));
-
-// InvokeCreateChildren(quadtree);
-
-// List children = GetChildren(quadtree);
-
-// Assert.AreEqual(GetArea(children[3]).xMax, GetArea(children[0]).xMin);
-// Assert.AreEqual(GetArea(children[1]).yMax, GetArea(children[0]).yMin);
-// }
-
-// private void InvokeCreateChildren(QuadtreeNode quadtree)
-// {
-// string createChildrenMathodName = "CreateChildren";
-
-// MethodInfo method = quadtree.GetType().GetMethod(createChildrenMathodName, BindingFlags.Instance | BindingFlags.NonPublic);
-
-// method.Invoke(quadtree, new object[0]);
-// }
-
-// private List GetChildren(QuadtreeNode quadtree)
-// {
-// string childrenName = "_children";
-
-// FieldInfo childrenField = quadtree.GetType().GetField(childrenName, BindingFlags.NonPublic | BindingFlags.Instance);
-
-// return (List)childrenField.GetValue(quadtree);
-// }
-
-// private Rect GetArea(QuadtreeNode quadtree)
-// {
-// string fieldName = "_area";
-
-// FieldInfo childrenField = quadtree.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
-
-// return (Rect)childrenField.GetValue(quadtree);
-// }
-
-// ///
-// /// 测试四叉树创建子节点方法创建的子节点的边缘部分是否和父节点一致,如果不同,则四叉树有可能出现空隙,导致在空隙中的碰撞器无法存入四叉树
-// ///
-// [Test]
-// [TestCase(1f, 2f, 4f, 3f)]
-// [TestCase(2.0649f, 4.97412f, 264.94125f, 23.64985f)]
-// [TestCase(0.0001f, 0.0001f, 0.001f, 0.0001f)]
-// public void CreateChildren_Edge(float x, float y, float width, float height)
-// {
-// QuadtreeNode quadtree = new QuadtreeNode(new Rect(x, y, width, height));
-
-// InvokeCreateChildren(quadtree);
-
-// List children = GetChildren(quadtree);
-
-// Assert.AreEqual(x + width, GetArea(children[0]).xMax);
-// Assert.AreEqual(y + height, GetArea(children[0]).yMax);
-// Assert.AreEqual(x, GetArea(children[2]).xMin);
-// Assert.AreEqual(y, GetArea(children[2]).yMin);
-// }
-//}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute Time.unity b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute Time.unity
index 20895cf..7773a35 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute Time.unity
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute Time.unity
@@ -43,7 +43,7 @@ RenderSettings:
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
- serializedVersion: 11
+ serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
@@ -94,10 +94,12 @@ LightmapSettings:
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 810f6e5ac8c55e942bcba15ec6b025c7,
+ type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
@@ -117,6 +119,8 @@ NavMeshSettings:
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
@@ -148,7 +152,7 @@ MonoBehaviour:
m_GameObject: {fileID: 11868090}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
@@ -165,7 +169,7 @@ MonoBehaviour:
m_GameObject: {fileID: 11868090}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
@@ -265,17 +269,17 @@ MonoBehaviour:
m_GameObject: {fileID: 44991393}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 40
@@ -327,7 +331,7 @@ MonoBehaviour:
m_GameObject: {fileID: 355988631}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 00a6b92f57745754e953dd074de27dad, type: 3}
+ m_Script: {fileID: 11500000, guid: eabba575ab51f974580e2a9bc8deb032, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!58 &355988633
@@ -381,6 +385,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -392,6 +398,7 @@ SpriteRenderer:
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
@@ -561,6 +568,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -572,6 +581,7 @@ SpriteRenderer:
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute TimeSettings.lighting b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute TimeSettings.lighting
new file mode 100644
index 0000000..f4c4a9c
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Enter Execute TimeSettings.lighting
@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Enter Execute TimeSettings
+ serializedVersion: 2
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRRussianRouletteStartBounce: 2
+ m_PVREnvironmentMIS: 1
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/EnterLoger.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/EnterLoger.cs
new file mode 100644
index 0000000..29a1843
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/EnterLoger.cs
@@ -0,0 +1,15 @@
+using UnityEngine;
+
+namespace MtC.Tools.QuadtreeCollider.Test
+{
+ public class EnterLoger : MonoBehaviour
+ {
+ private float lastTime;
+
+ private void OnTriggerEnter2D(Collider2D collision)
+ {
+ Debug.Log("TriggerEnter,与上一次时间间隔:" + (Time.time - lastTime));
+ lastTime = Time.time;
+ }
+ }
+}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Loger.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Loger.cs
deleted file mode 100644
index cf12c6d..0000000
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/Loger.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using UnityEngine;
-
-namespace MtC.Tools.QuadtreeCollider.Test.API.OnTriggerEnterExecuteTime
-{
- public class Loger : MonoBehaviour
- {
- private float _lastTime;
-
- private void OnTriggerEnter2D(Collider2D collision)
- {
- Debug.Log("TriggerEnter,与上一次时间间隔:" + (Time.time - _lastTime));
- _lastTime = Time.time;
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/TriggetMove.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/TriggetMove.cs
index 7c7a0f8..ce1c0c1 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/TriggetMove.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/OnTriggerEnterExecuteTime/TriggetMove.cs
@@ -1,19 +1,19 @@
using UnityEngine;
-namespace MtC.Tools.QuadtreeCollider.Test.API.OnTriggerEnterExecuteTime
+namespace MtC.Tools.QuadtreeCollider.Test
{
public class TriggetMove : MonoBehaviour
{
- public Vector3 _triggerPosition;
- public Vector3 _outOfTriggerPosition;
- public int _moveTime;
+ public Vector3 triggerPosition;
+ public Vector3 outOfTriggerPosition;
+ public int moveTime;
private void Update()
{
- for(int i = 0; i < _moveTime; i++)
+ for(int i = 0; i < moveTime; i++)
{
- transform.position = _triggerPosition;
- transform.position = _outOfTriggerPosition;
+ transform.position = triggerPosition;
+ transform.position = outOfTriggerPosition;
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Loger.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Loger.cs
index 1484ab2..5797322 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Loger.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Loger.cs
@@ -1,15 +1,15 @@
using UnityEngine;
-namespace MtC.Tools.QuadtreeCollider.Test.API.TriggerExecuteTime
+namespace MtC.Tools.QuadtreeCollider.Test
{
public class Loger : MonoBehaviour
{
- private float _lastTriggerTime;
+ private float lastTriggerTime;
private void OnTriggerStay2D(Collider2D collision)
{
- Debug.Log("发生触发,与上一次触发的间隔为:" + (Time.time - _lastTriggerTime));
- _lastTriggerTime = Time.time;
+ Debug.Log("发生触发,与上一次触发的间隔为:" + (Time.time - lastTriggerTime));
+ lastTriggerTime = Time.time;
}
}
}
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test Scene.unity b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test Scene.unity
index 24ca107..bac4ef5 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test Scene.unity
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test Scene.unity
@@ -43,7 +43,7 @@ RenderSettings:
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
- serializedVersion: 11
+ serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
@@ -94,10 +94,12 @@ LightmapSettings:
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
+ m_LightingSettings: {fileID: 4890085278179872738, guid: a3974b67abc381942ba5493a74ef3138,
+ type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
@@ -117,6 +119,8 @@ NavMeshSettings:
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
@@ -192,6 +196,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -203,6 +209,7 @@ SpriteRenderer:
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
@@ -249,7 +256,7 @@ MonoBehaviour:
m_GameObject: {fileID: 639801381}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: e8423cc5485849546a6e34d75f558fd7, type: 3}
+ m_Script: {fileID: 11500000, guid: 0fc55de9a385a2845a79b2c0aac19c39, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &639801387
@@ -261,7 +268,7 @@ MonoBehaviour:
m_GameObject: {fileID: 639801381}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 65d45d91a09afa54db54d40e2d1a1d7d, type: 3}
+ m_Script: {fileID: 11500000, guid: 6f14b6fcf126fa74887f2214304b0f0e, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &872608341
@@ -291,7 +298,7 @@ MonoBehaviour:
m_GameObject: {fileID: 872608341}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
@@ -310,7 +317,7 @@ MonoBehaviour:
m_GameObject: {fileID: 872608341}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
@@ -358,7 +365,7 @@ MonoBehaviour:
m_GameObject: {fileID: 1054764611}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
@@ -375,7 +382,7 @@ MonoBehaviour:
m_GameObject: {fileID: 1054764611}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
@@ -560,6 +567,8 @@ SpriteRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -571,6 +580,7 @@ SpriteRenderer:
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
@@ -654,17 +664,17 @@ MonoBehaviour:
m_GameObject: {fileID: 2090503379}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 40
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test SceneSettings.lighting b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test SceneSettings.lighting
new file mode 100644
index 0000000..99bc1c6
--- /dev/null
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Test SceneSettings.lighting
@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Test SceneSettings
+ serializedVersion: 2
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRRussianRouletteStartBounce: 2
+ m_PVREnvironmentMIS: 1
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
diff --git a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Waiter.cs b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Waiter.cs
index c7ea573..028a2d9 100644
--- a/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Waiter.cs
+++ b/Assets/Quadtree Collider Detection/QuadtreeCollider/Tests/Trigger Execute Time Test/Waiter.cs
@@ -1,6 +1,6 @@
using UnityEngine;
-namespace MtC.Tools.QuadtreeCollider.Test.API.TriggerExecuteTime
+namespace MtC.Tools.QuadtreeCollider.Test
{
///
/// 通过等待时间的循环达到降低Update频率的效果的脚本
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/Example Scene.unity b/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/Example Scene.unity
deleted file mode 100644
index 11d05aa..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/Example Scene.unity
+++ /dev/null
@@ -1,3925 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_OcclusionBakeSettings:
- smallestOccluder: 5
- smallestHole: 0.25
- backfaceThreshold: 100
- m_SceneGUID: 00000000000000000000000000000000
- m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 9
- m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- m_FogMode: 3
- m_FogDensity: 0.01
- m_LinearFogStart: 0
- m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
- m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
- m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
- m_AmbientIntensity: 1
- m_AmbientMode: 0
- m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
- m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
- m_HaloStrength: 0.5
- m_FlareStrength: 1
- m_FlareFadeSpeed: 3
- m_HaloTexture: {fileID: 0}
- m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
- m_DefaultReflectionMode: 0
- m_DefaultReflectionResolution: 128
- m_ReflectionBounces: 1
- m_ReflectionIntensity: 1
- m_CustomReflection: {fileID: 0}
- m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.37311992, g: 0.38074034, b: 0.35872713, a: 1}
- m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 11
- m_GIWorkflowMode: 0
- m_GISettings:
- serializedVersion: 2
- m_BounceScale: 1
- m_IndirectOutputScale: 1
- m_AlbedoBoost: 1
- m_EnvironmentLightingMode: 0
- m_EnableBakedLightmaps: 1
- m_EnableRealtimeLightmaps: 1
- m_LightmapEditorSettings:
- serializedVersion: 12
- m_Resolution: 2
- m_BakeResolution: 40
- m_AtlasSize: 1024
- m_AO: 0
- m_AOMaxDistance: 1
- m_CompAOExponent: 1
- m_CompAOExponentDirect: 0
- m_ExtractAmbientOcclusion: 0
- m_Padding: 2
- m_LightmapParameters: {fileID: 0}
- m_LightmapsBakeMode: 1
- m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
- m_ReflectionCompression: 2
- m_MixedBakeMode: 2
- m_BakeBackend: 0
- m_PVRSampling: 1
- m_PVRDirectSampleCount: 32
- m_PVRSampleCount: 500
- m_PVRBounces: 2
- m_PVREnvironmentSampleCount: 500
- m_PVREnvironmentReferencePointCount: 2048
- m_PVRFilteringMode: 2
- m_PVRDenoiserTypeDirect: 0
- m_PVRDenoiserTypeIndirect: 0
- m_PVRDenoiserTypeAO: 0
- m_PVRFilterTypeDirect: 0
- m_PVRFilterTypeIndirect: 0
- m_PVRFilterTypeAO: 0
- m_PVREnvironmentMIS: 0
- m_PVRCulling: 1
- m_PVRFilteringGaussRadiusDirect: 1
- m_PVRFilteringGaussRadiusIndirect: 5
- m_PVRFilteringGaussRadiusAO: 2
- m_PVRFilteringAtrousPositionSigmaDirect: 0.5
- m_PVRFilteringAtrousPositionSigmaIndirect: 2
- m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
- m_ExportTrainingData: 0
- m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
---- !u!196 &4
-NavMeshSettings:
- serializedVersion: 2
- m_ObjectHideFlags: 0
- m_BuildSettings:
- serializedVersion: 2
- agentTypeID: 0
- agentRadius: 0.5
- agentHeight: 2
- agentSlope: 45
- agentClimb: 0.4
- ledgeDropHeight: 0
- maxJumpAcrossDistance: 0
- minRegionArea: 2
- manualCellSize: 0
- cellSize: 0.16666667
- manualTileSize: 0
- tileSize: 256
- accuratePlacement: 0
- debug:
- m_Flags: 0
- m_NavMeshData: {fileID: 0}
---- !u!1 &6625853
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 6625855}
- - component: {fileID: 6625854}
- m_Layer: 0
- m_Name: Collider (39)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &6625854
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6625853}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &6625855
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 6625853}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 30
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &29366547
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 29366548}
- - component: {fileID: 29366549}
- m_Layer: 0
- m_Name: Collider (65)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &29366548
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 29366547}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 915, y: 1600, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 53
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &29366549
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 29366547}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &62486224
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 62486225}
- - component: {fileID: 62486226}
- m_Layer: 0
- m_Name: Collider (73)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &62486225
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 62486224}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 900.5, y: 1614.3, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 63
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &62486226
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 62486224}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &79933485
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 79933487}
- - component: {fileID: 79933486}
- m_Layer: 0
- m_Name: Collider (28)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &79933486
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 79933485}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &79933487
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 79933485}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 180, y: 560, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 23
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &106968428
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 106968429}
- - component: {fileID: 106968430}
- m_Layer: 0
- m_Name: Collider (45)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &106968429
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 106968428}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 756, y: 1580, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 36
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &106968430
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 106968428}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &194083925
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 194083926}
- - component: {fileID: 194083927}
- m_Layer: 0
- m_Name: Collider (80)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &194083926
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 194083925}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 310.8, y: 1685.8, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 70
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &194083927
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 194083925}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &208251600
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 208251601}
- - component: {fileID: 208251602}
- m_Layer: 0
- m_Name: Collider (48)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &208251601
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 208251600}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 886.4, y: 1592.1, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 55
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &208251602
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 208251600}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &208646123
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 208646124}
- - component: {fileID: 208646125}
- m_Layer: 0
- m_Name: Collider (77)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &208646124
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 208646123}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 897.7, y: 1619.2, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 67
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &208646125
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 208646123}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &215959903
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 215959904}
- - component: {fileID: 215959905}
- m_Layer: 0
- m_Name: Collider (75)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &215959904
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 215959903}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 895.7, y: 1614.1, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 65
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &215959905
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 215959903}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &277161006
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 277161008}
- - component: {fileID: 277161007}
- m_Layer: 0
- m_Name: Collider (17)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &277161007
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 277161006}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &277161008
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 277161006}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 575, y: 1617, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 13
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &282854659
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 282854661}
- - component: {fileID: 282854660}
- m_Layer: 0
- m_Name: Collider (5)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &282854660
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 282854659}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &282854661
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 282854659}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 702, y: 272, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &318323221
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 318323222}
- - component: {fileID: 318323223}
- m_Layer: 0
- m_Name: Collider (76)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &318323222
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 318323221}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 895.4, y: 1617.5, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 66
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &318323223
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 318323221}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &367910742
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 367910743}
- - component: {fileID: 367910744}
- m_Layer: 0
- m_Name: Collider (82)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &367910743
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 367910742}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 307.39996, y: 1683.3, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 72
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &367910744
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 367910742}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &373068638
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 373068640}
- - component: {fileID: 373068639}
- m_Layer: 0
- m_Name: Collider (27)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &373068639
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 373068638}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &373068640
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 373068638}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 1044, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 22
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &440853067
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 440853068}
- - component: {fileID: 440853069}
- m_Layer: 0
- m_Name: Collider (40)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &440853068
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 440853067}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 298, y: 1659, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 31
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &440853069
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 440853067}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &460205790
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 460205791}
- - component: {fileID: 460205792}
- m_Layer: 0
- m_Name: Collider (51)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &460205791
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 460205790}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 861, y: 1693, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 40
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &460205792
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 460205790}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &496513800
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 496513801}
- - component: {fileID: 496513803}
- - component: {fileID: 496513802}
- m_Layer: 5
- m_Name: Text
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &496513801
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 496513800}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1513167038}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0.5, y: 0.5}
- m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 1200, y: 400}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &496513802
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 496513800}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0, g: 0, b: 0, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 0
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u8FD0\u884C\u540E\u5728Scene\uFF08\u573A\u666F\uFF09\u7A97\u53E3\u4E2D\u89C2\u770B\u6548\u679C\n\u7EA2\u8272\u7684\u8FB9\u6846\u662F\u56DB\u53C9\u6811\u7684\u6709\u6548\u533A\u57DF\n\u84DD\u8272\u7684\u77E9\u5F62\u662F\u56DB\u53C9\u6811\u7684\u53F6\u5B50\u8282\u70B9\u6240\u62E5\u6709\u7684\u533A\u57DF\n\u7EFF\u8272\u5706\u5708\u662F\u88AB\u68C0\u6D4B\u7684\u78B0\u649E\u5668\uFF0C\u6CE8\u610F\u8FD9\u4E00\u6B65\u7684\u78B0\u649E\u5668\u6CA1\u6709\u4F53\u79EF\uFF0C\u56E0\u6B64\u53EA\u6709\u78B0\u649E\u5230\u5706\u5FC3\u624D\u89C6\u4E3A\u78B0\u649E\n\u9EC4\u8272\u7684\u5706\u5708\u662F\u68C0\u6D4B\u78B0\u649E\u7684\u78B0\u649E\u5668\uFF0C\u53EF\u4EE5\u79FB\u52A8\u8FD9\u4E2A\u78B0\u649E\u5668\u89C2\u770B\u6548\u679C\n\u68C0\u6D4B\u78B0\u649E\u5668\u548C\u88AB\u68C0\u6D4B\u78B0\u649E\u5668\u901A\u8FC7\u9EC4\u8272\u7684\u7EBF\u8FDE\u63A5\u65F6\uFF0C\u8868\u793A\u8FD9\u4E24\u4E2A\u78B0\u649E\u5668\u53D1\u751F\u4E86\u78B0\u649E"
---- !u!222 &496513803
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 496513800}
- m_CullTransparentMesh: 0
---- !u!1 &537640761
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 537640762}
- - component: {fileID: 537640763}
- m_Layer: 0
- m_Name: Collider (44)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &537640762
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 537640761}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 811, y: 1666, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 35
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &537640763
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 537640761}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &538859732
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 538859734}
- - component: {fileID: 538859733}
- m_Layer: 0
- m_Name: Collider (15)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &538859733
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 538859732}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &538859734
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 538859732}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 167, y: 1613, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 11
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &545734439
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 545734440}
- - component: {fileID: 545734441}
- m_Layer: 0
- m_Name: Collider (49)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &545734440
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 545734439}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 819.8, y: 1593.3, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 56
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &545734441
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 545734439}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &550617714
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 550617716}
- - component: {fileID: 550617715}
- m_Layer: 0
- m_Name: Collider (16)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &550617715
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 550617714}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &550617716
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 550617714}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 941, y: 1727, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 12
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &676975317
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 676975318}
- - component: {fileID: 676975319}
- m_Layer: 0
- m_Name: Collider (64)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &676975318
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 676975317}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 936, y: 1626, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 52
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &676975319
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 676975317}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &677515189
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 677515191}
- - component: {fileID: 677515190}
- m_Layer: 0
- m_Name: Collider (10)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &677515190
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 677515189}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &677515191
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 677515189}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 204, y: 889, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 8
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &685529773
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 685529774}
- - component: {fileID: 685529775}
- m_Layer: 0
- m_Name: Collider (53)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &685529774
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 685529773}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 847, y: 1503, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 41
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &685529775
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 685529773}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &693527826
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 693527827}
- - component: {fileID: 693527828}
- m_Layer: 0
- m_Name: Collider (46)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &693527827
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 693527826}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 652, y: 1518, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 37
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &693527828
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 693527826}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &704225948
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 704225950}
- - component: {fileID: 704225949}
- m_Layer: 0
- m_Name: Collider (32)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &704225949
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 704225948}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &704225950
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 704225948}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 172, y: 1117, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 25
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &707860055
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 707860057}
- - component: {fileID: 707860056}
- m_Layer: 0
- m_Name: Collider (22)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &707860056
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 707860055}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &707860057
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 707860055}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 935, y: 554, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 17
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &748148865
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 748148867}
- - component: {fileID: 748148866}
- m_Layer: 0
- m_Name: Collider (21)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &748148866
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 748148865}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &748148867
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 748148865}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 998, y: 1054, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 16
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &758784560
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 758784561}
- - component: {fileID: 758784562}
- m_Layer: 0
- m_Name: Collider (50)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &758784561
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 758784560}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 809, y: 1835, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 39
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &758784562
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 758784560}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &767782001
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 767782003}
- - component: {fileID: 767782002}
- m_Layer: 0
- m_Name: Collider (3)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &767782002
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 767782001}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &767782003
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 767782001}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 300, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &774431447
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 774431448}
- - component: {fileID: 774431449}
- m_Layer: 0
- m_Name: Collider (71)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &774431448
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 774431447}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 897.1, y: 1615.2, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 61
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &774431449
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 774431447}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &808775576
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 808775578}
- - component: {fileID: 808775577}
- m_Layer: 0
- m_Name: Collider (23)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &808775577
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 808775576}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &808775578
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 808775576}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 1421, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 18
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &810616696
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 810616697}
- - component: {fileID: 810616698}
- m_Layer: 0
- m_Name: Collider (84)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &810616697
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 810616696}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 305.7, y: 1687.3, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 74
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &810616698
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 810616696}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &831338212
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 831338213}
- - component: {fileID: 831338214}
- m_Layer: 0
- m_Name: Collider (68)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &831338213
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 831338212}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 874.4, y: 1622.1, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 58
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &831338214
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 831338212}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &832775882
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 832775883}
- - component: {fileID: 832775884}
- m_Layer: 0
- m_Name: Collider (79)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &832775883
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 832775882}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 307.39996, y: 1685, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 69
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &832775884
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 832775882}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &859350009
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 859350010}
- - component: {fileID: 859350011}
- m_Layer: 0
- m_Name: Collider (57)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &859350010
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 859350009}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 217, y: 1906, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 45
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &859350011
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 859350009}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &860084098
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 860084099}
- - component: {fileID: 860084100}
- m_Layer: 0
- m_Name: Collider (81)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &860084099
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860084098}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 310.8, y: 1684.1001, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 71
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &860084100
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 860084098}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &864300053
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 864300055}
- - component: {fileID: 864300054}
- m_Layer: 0
- m_Name: Collider (36)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &864300054
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 864300053}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &864300055
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 864300053}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 889, y: 1253, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 27
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &910450180
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 910450181}
- - component: {fileID: 910450182}
- m_Layer: 0
- m_Name: Collider (56)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &910450181
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 910450180}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 189, y: 1764, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 44
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &910450182
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 910450180}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &923906862
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 923906863}
- - component: {fileID: 923906864}
- m_Layer: 0
- m_Name: Collider (83)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &923906863
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 923906862}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 306, y: 1683.9, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 73
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &923906864
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 923906862}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &940509575
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 940509577}
- - component: {fileID: 940509576}
- m_Layer: 0
- m_Name: Collider (1)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &940509576
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 940509575}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &940509577
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 940509575}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 146, y: 1365, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &949412362
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 949412363}
- - component: {fileID: 949412364}
- m_Layer: 0
- m_Name: Collider (60)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &949412363
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 949412362}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 917, y: 1510, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 48
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &949412364
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 949412362}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &990893420
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 990893422}
- - component: {fileID: 990893421}
- m_Layer: 0
- m_Name: Collider (33)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &990893421
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 990893420}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &990893422
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 990893420}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 446, y: 572, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 26
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1120947955
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1120947957}
- - component: {fileID: 1120947956}
- m_Layer: 0
- m_Name: Collider (13)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1120947956
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1120947955}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1120947957
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1120947955}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 9
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1121989369
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1121989371}
- - component: {fileID: 1121989370}
- m_Layer: 0
- m_Name: Collider (24)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1121989370
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1121989369}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1121989371
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1121989369}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 801, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 19
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1132382033
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1132382035}
- - component: {fileID: 1132382034}
- m_Layer: 0
- m_Name: Collider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1132382034
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1132382033}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1132382035
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1132382033}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1174197943
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1174197944}
- - component: {fileID: 1174197945}
- m_Layer: 0
- m_Name: Collider (66)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1174197944
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1174197943}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 934, y: 1590, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 54
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1174197945
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1174197943}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1204616541
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1204616543}
- - component: {fileID: 1204616542}
- m_Layer: 0
- m_Name: Collider (37)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1204616542
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1204616541}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1204616543
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1204616541}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 697, y: 1780, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 28
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1246714055
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1246714056}
- - component: {fileID: 1246714057}
- m_Layer: 0
- m_Name: Collider (78)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1246714056
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1246714055}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 305.09998, y: 1687, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 68
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1246714057
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1246714055}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1265367532
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1265367535}
- - component: {fileID: 1265367534}
- - component: {fileID: 1265367533}
- m_Layer: 0
- m_Name: EventSystem
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1265367533
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1265367532}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_HorizontalAxis: Horizontal
- m_VerticalAxis: Vertical
- m_SubmitButton: Submit
- m_CancelButton: Cancel
- m_InputActionsPerSecond: 10
- m_RepeatDelay: 0.5
- m_ForceModuleActive: 0
---- !u!114 &1265367534
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1265367532}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_FirstSelected: {fileID: 0}
- m_sendNavigationEvents: 1
- m_DragThreshold: 10
---- !u!4 &1265367535
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1265367532}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1275825528
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1275825529}
- - component: {fileID: 1275825530}
- m_Layer: 0
- m_Name: Collider (58)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1275825529
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1275825528}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 469, y: 1858, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 46
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1275825530
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1275825528}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1316825364
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1316825365}
- - component: {fileID: 1316825366}
- m_Layer: 0
- m_Name: Collider (55)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1316825365
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1316825364}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 68, y: 1895, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 43
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1316825366
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1316825364}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1405537660
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1405537662}
- - component: {fileID: 1405537661}
- m_Layer: 0
- m_Name: Collider (6)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1405537661
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1405537660}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1405537662
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1405537660}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 500, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1425571343
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1425571345}
- - component: {fileID: 1425571344}
- m_Layer: 0
- m_Name: QuadtreeObject
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1425571344
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1425571343}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: dfeb54cc9a2b12047a324879c5216e32, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _top: 1960
- _right: 1080
- _bottom: 0
- _left: 0
- _maxLeafsNumber: 5
- _minSideLength: 10
---- !u!4 &1425571345
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1425571343}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1434576432
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1434576433}
- - component: {fileID: 1434576434}
- m_Layer: 0
- m_Name: Collider (47)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1434576433
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1434576432}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 872, y: 1101, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 38
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1434576434
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1434576432}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1489755424
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1489755425}
- - component: {fileID: 1489755426}
- m_Layer: 0
- m_Name: Collider (72)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1489755425
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1489755424}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 900.5, y: 1616, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 62
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1489755426
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1489755424}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1513167034
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1513167038}
- - component: {fileID: 1513167037}
- - component: {fileID: 1513167036}
- - component: {fileID: 1513167035}
- m_Layer: 5
- m_Name: Canvas
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1513167035
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1513167034}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_IgnoreReversedGraphics: 1
- m_BlockingObjects: 0
- m_BlockingMask:
- serializedVersion: 2
- m_Bits: 4294967295
---- !u!114 &1513167036
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1513167034}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_UiScaleMode: 1
- m_ReferencePixelsPerUnit: 100
- m_ScaleFactor: 1
- m_ReferenceResolution: {x: 1920, y: 1080}
- m_ScreenMatchMode: 0
- m_MatchWidthOrHeight: 0
- m_PhysicalUnit: 3
- m_FallbackScreenDPI: 96
- m_DefaultSpriteDPI: 96
- m_DynamicPixelsPerUnit: 1
---- !u!223 &1513167037
-Canvas:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1513167034}
- m_Enabled: 1
- serializedVersion: 3
- m_RenderMode: 0
- m_Camera: {fileID: 0}
- m_PlaneDistance: 100
- m_PixelPerfect: 0
- m_ReceivesEvents: 1
- m_OverrideSorting: 0
- m_OverridePixelPerfect: 0
- m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 0
- m_SortingLayerID: 0
- m_SortingOrder: 0
- m_TargetDisplay: 0
---- !u!224 &1513167038
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1513167034}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0, y: 0, z: 0}
- m_Children:
- - {fileID: 496513801}
- m_Father: {fileID: 0}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0, y: 0}
---- !u!1 &1524439221
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1524439223}
- - component: {fileID: 1524439222}
- m_Layer: 0
- m_Name: Collider (18)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1524439222
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1524439221}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1524439223
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1524439221}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 809, y: 1418, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 14
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1530635115
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1530635117}
- - component: {fileID: 1530635116}
- m_Layer: 0
- m_Name: Collider (25)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1530635116
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1530635115}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1530635117
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1530635115}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 423, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 20
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1582353662
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1582353663}
- - component: {fileID: 1582353664}
- m_Layer: 0
- m_Name: Collider (67)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1582353663
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1582353662}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 865.4, y: 1566.1, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 57
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1582353664
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1582353662}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1586306542
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1586306543}
- - component: {fileID: 1586306544}
- m_Layer: 0
- m_Name: Collider (54)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1586306543
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1586306542}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 324, y: 301, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 42
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1586306544
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1586306542}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1589599346
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1589599347}
- - component: {fileID: 1589599348}
- m_Layer: 0
- m_Name: Collider (61)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1589599347
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1589599346}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 877, y: 1547, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 49
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1589599348
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1589599346}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1605819926
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1605819927}
- - component: {fileID: 1605819928}
- m_Layer: 0
- m_Name: Collider (62)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1605819927
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1605819926}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 927, y: 1570, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 50
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1605819928
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1605819926}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1612960082
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1612960083}
- - component: {fileID: 1612960084}
- m_Layer: 0
- m_Name: Collider (70)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1612960083
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1612960082}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 894.8, y: 1617.2, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 60
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1612960084
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1612960082}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1619388885
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1619388886}
- - component: {fileID: 1619388887}
- m_Layer: 0
- m_Name: Collider (42)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1619388886
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1619388885}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 905, y: 1636, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 33
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1619388887
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1619388885}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1642103893
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1642103895}
- - component: {fileID: 1642103894}
- m_Layer: 0
- m_Name: Detector
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1642103894
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1642103893}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 354d700c6b7cc7f4c9b2641394c1a696, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 500
---- !u!4 &1642103895
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1642103893}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 485, y: 1155, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1653076107
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1653076109}
- - component: {fileID: 1653076108}
- m_Layer: 0
- m_Name: Collider (8)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1653076108
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1653076107}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1653076109
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1653076107}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 865, y: 1786, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 6
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1668344714
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1668344718}
- - component: {fileID: 1668344717}
- - component: {fileID: 1668344716}
- - component: {fileID: 1668344715}
- m_Layer: 0
- m_Name: Main Camera
- m_TagString: MainCamera
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!81 &1668344715
-AudioListener:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1668344714}
- m_Enabled: 1
---- !u!124 &1668344716
-Behaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1668344714}
- m_Enabled: 1
---- !u!20 &1668344717
-Camera:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1668344714}
- m_Enabled: 1
- serializedVersion: 2
- m_ClearFlags: 2
- m_BackGroundColor: {r: 0.6273585, g: 1, b: 0.87883854, a: 0}
- m_projectionMatrixMode: 1
- m_GateFitMode: 2
- m_FOVAxisMode: 0
- m_SensorSize: {x: 36, y: 24}
- m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
- m_NormalizedViewPortRect:
- serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
- near clip plane: 0.3
- far clip plane: 1000
- field of view: 60
- orthographic: 0
- orthographic size: 5
- m_Depth: -1
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
- m_TargetDisplay: 0
- m_TargetEye: 3
- m_HDR: 1
- m_AllowMSAA: 1
- m_AllowDynamicResolution: 0
- m_ForceIntoRT: 0
- m_OcclusionCulling: 1
- m_StereoConvergence: 10
- m_StereoSeparation: 0.022
---- !u!4 &1668344718
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1668344714}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 1, z: -10}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1741257724
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1741257725}
- - component: {fileID: 1741257726}
- m_Layer: 0
- m_Name: Collider (41)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1741257725
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1741257724}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 948, y: 1596, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 32
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1741257726
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1741257724}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1749669974
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1749669975}
- m_Layer: 0
- m_Name: Colliders
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1749669975
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1749669974}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 1132382035}
- - {fileID: 940509577}
- - {fileID: 767782003}
- - {fileID: 282854661}
- - {fileID: 1405537662}
- - {fileID: 1809938452}
- - {fileID: 1653076109}
- - {fileID: 1753578398}
- - {fileID: 677515191}
- - {fileID: 1120947957}
- - {fileID: 2068685282}
- - {fileID: 538859734}
- - {fileID: 550617716}
- - {fileID: 277161008}
- - {fileID: 1524439223}
- - {fileID: 2021403205}
- - {fileID: 748148867}
- - {fileID: 707860057}
- - {fileID: 808775578}
- - {fileID: 1121989371}
- - {fileID: 1530635117}
- - {fileID: 1809725499}
- - {fileID: 373068640}
- - {fileID: 79933487}
- - {fileID: 1901884983}
- - {fileID: 704225950}
- - {fileID: 990893422}
- - {fileID: 864300055}
- - {fileID: 1204616543}
- - {fileID: 1770857353}
- - {fileID: 6625855}
- - {fileID: 440853068}
- - {fileID: 1741257725}
- - {fileID: 1619388886}
- - {fileID: 2061593967}
- - {fileID: 537640762}
- - {fileID: 106968429}
- - {fileID: 693527827}
- - {fileID: 1434576433}
- - {fileID: 758784561}
- - {fileID: 460205791}
- - {fileID: 685529774}
- - {fileID: 1586306543}
- - {fileID: 1316825365}
- - {fileID: 910450181}
- - {fileID: 859350010}
- - {fileID: 1275825529}
- - {fileID: 1866657897}
- - {fileID: 949412363}
- - {fileID: 1589599347}
- - {fileID: 1605819927}
- - {fileID: 2094855765}
- - {fileID: 676975318}
- - {fileID: 29366548}
- - {fileID: 1174197944}
- - {fileID: 208251601}
- - {fileID: 545734440}
- - {fileID: 1582353663}
- - {fileID: 831338213}
- - {fileID: 1935401765}
- - {fileID: 1612960083}
- - {fileID: 774431448}
- - {fileID: 1489755425}
- - {fileID: 62486225}
- - {fileID: 1926795160}
- - {fileID: 215959904}
- - {fileID: 318323222}
- - {fileID: 208646124}
- - {fileID: 1246714056}
- - {fileID: 832775883}
- - {fileID: 194083926}
- - {fileID: 860084099}
- - {fileID: 367910743}
- - {fileID: 923906863}
- - {fileID: 810616697}
- - {fileID: 2019281532}
- m_Father: {fileID: 0}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1753578396
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1753578398}
- - component: {fileID: 1753578397}
- m_Layer: 0
- m_Name: Collider (9)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1753578397
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1753578396}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1753578398
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1753578396}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 712, y: 1110, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 7
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1770857351
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1770857353}
- - component: {fileID: 1770857352}
- m_Layer: 0
- m_Name: Collider (38)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1770857352
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1770857351}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1770857353
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1770857351}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 29
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1809725497
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1809725499}
- - component: {fileID: 1809725498}
- m_Layer: 0
- m_Name: Collider (26)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1809725498
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1809725497}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1809725499
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1809725497}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 1447, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 21
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1809938450
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1809938452}
- - component: {fileID: 1809938451}
- m_Layer: 0
- m_Name: Collider (7)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1809938451
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1809938450}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1809938452
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1809938450}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 938, y: 1536, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1866657896
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1866657897}
- - component: {fileID: 1866657898}
- m_Layer: 0
- m_Name: Collider (59)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1866657897
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1866657896}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 752, y: 1879, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 47
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1866657898
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1866657896}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1901884981
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1901884983}
- - component: {fileID: 1901884982}
- m_Layer: 0
- m_Name: Collider (31)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &1901884982
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1901884981}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &1901884983
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1901884981}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 372, y: 1580, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 24
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1926795159
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1926795160}
- - component: {fileID: 1926795161}
- m_Layer: 0
- m_Name: Collider (74)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1926795160
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1926795159}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 897.1, y: 1613.5, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 64
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1926795161
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1926795159}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &1935401764
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1935401765}
- - component: {fileID: 1935401766}
- m_Layer: 0
- m_Name: Collider (69)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1935401765
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1935401764}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 853.4, y: 1596.1, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 59
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1935401766
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1935401764}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &2019281531
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2019281532}
- - component: {fileID: 2019281533}
- m_Layer: 0
- m_Name: Collider (85)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &2019281532
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2019281531}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 308, y: 1689, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 75
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2019281533
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2019281531}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &2021403203
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2021403205}
- - component: {fileID: 2021403204}
- m_Layer: 0
- m_Name: Collider (19)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &2021403204
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2021403203}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &2021403205
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2021403203}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 492, y: 1382, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 15
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &2061593966
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2061593967}
- - component: {fileID: 2061593968}
- m_Layer: 0
- m_Name: Collider (43)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &2061593967
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2061593966}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 725, y: 1721, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 34
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2061593968
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2061593966}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &2068685280
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2068685282}
- - component: {fileID: 2068685281}
- m_Layer: 0
- m_Name: Collider (14)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &2068685281
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2068685280}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!4 &2068685282
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2068685280}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 366, y: 1777, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 10
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &2094855764
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2094855765}
- - component: {fileID: 2094855766}
- m_Layer: 0
- m_Name: Collider (63)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &2094855765
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2094855764}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 284, y: 1696, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1749669975}
- m_RootOrder: 51
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2094855766
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2094855764}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b6dbb6fa54997d848bf136ab3253b31c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeBasic.cs b/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeBasic.cs
deleted file mode 100644
index b590e24..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeBasic.cs
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * 碰撞检测听起来很高端实际上一点科技含量都没有。
- * 用圆形碰撞器举例:碰撞检测就是计算两个碰撞器的圆心距离和半径和哪个大,半径和大就说明碰撞了。
- * 如果是更复杂的碰撞器则可能需要计算边的碰撞,但原理上都逃不脱一个步骤:把所有碰撞器暴力遍历一遍。
- *
- * 但是纯暴力遍历会有一个很大的问题:假设碰撞器太多了遍历计算量太大怎么办?
- * 于是一种新的思路出现了:先找出可能发生碰撞的碰撞器,之后再遍历。
- * 四叉树就是基于这种思路产生的。
- *
- * 四叉树通过将空间划分为一个个的小区域来逐步找到真正可能发生碰撞的碰撞器。
- * 四叉树的原理核心在于“分割”:当一个节点的空间里有过多的碰撞器时,就把这个节点分成四个子节点,每个子节点拥有父节点1/4的空间,这个空间里的碰撞器也传给子节点,这样需要遍历的碰撞器就会变少。
- *
- *
- *
- * 这个脚本里的是最基础的四叉树,由节点和叶子两部分构成。
- * 节点是四叉树的每个分支,节点组成树本身。
- * 叶子是碰撞器在树立的映射,树通过叶子判断是否发生碰撞。
- *
- * 这个四叉树的功能只有插入、检测、移除,碰撞器没有半径是一个个点,并且如果碰撞器移动检测结果不会随之变化
- *
- * 只有这个脚本是不能使用的,因此还有两个脚本是 QuadtreeBasicCollider 和 QuadtreeBasicObject
- * QuadtreeBasicCollider 是碰撞器,挂载在物体上
- * QuadtreeBasicObject 是四叉树物体,用来在场景加载时建立四叉树,之后才能进行碰撞检测
- */
-
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step0Basic
-{
- /*
- * 这个是“泛型”,有泛型的类和方法可以在调用的时候指定类型,Unity的 GetComponent<> 就应用了泛型
- */
- public class QuadtreeLeafBasic
- {
- /*
- * get,set访问器,C#的常用封装方式,看起来是这样的:
- *
- * 修饰符 类型 访问器名
- * {
- * get
- * {
- * 这里面需要return
- * }
- * set
- * {
- * 这里存入的量用 value 表示
- * }
- * }
- *
- * 假设有一个访问器是这样的:
- * public int age
- * {
- * get
- * {
- * return _age;
- * }
- * set
- * {
- * _age = value;
- * }
- * }
- * int _age
- *
- * 赋值会调用 set 进行赋值,赋值在 set 里就是那个 value
- * 取值会调用 get 进行返回
- */
- public T obj
- {
- get { return _obj; }
- }
- T _obj; //叶子映射的对象,在检测碰撞的时候会以数组形式返回出去
-
- public Vector2 position
- {
- get { return _position; }
- set { _position = value; }
- }
- Vector2 _position;
-
- public QuadtreeLeafBasic(T obj, Vector2 position)
- {
- _obj = obj;
- _position = position;
- }
- }
-
-
-
- public class QuadtreeBasic
- {
- QuadtreeBasicField _field; //这个类在下面
-
- QuadtreeBasic _upperRightChild; //四个子节点
- QuadtreeBasic _lowerRightChild;
- QuadtreeBasic _lowerLeftChild;
- QuadtreeBasic _upperLeftChild;
-
- List> _leafs = new List>(); //叶子List,用来存储这个节点里的叶子
-
- int _maxLeafsNumber; //这个节点里最多能容纳多少叶子,如果超过了这个值则要分割节点
- float _minSideLength; //可以分割到的最小边长,如果节点的宽或高已经小于这个值,那么不管有多少叶子都不能分割
- /*
- * 最小边长的设计是应对一种极端情况的:假设有大量的碰撞器他们的位置完全一样,那么无论怎么分割节点都不会把他们分隔开,分割将会无限循环下去
- * 增加最小边长之后就可以应对这种情况:就算是最极端情况也只会一口气分割到最小大小,不会无限分割下去
- */
-
-
- public QuadtreeBasic(float top, float right, float bottom, float left, int maxLeafsNumber, float minSideLength)
- {
- _field = new QuadtreeBasicField(top, right, bottom, left);
-
- _maxLeafsNumber = maxLeafsNumber;
- _minSideLength = minSideLength;
-
- DrawField(); //在 Scene 面板绘制四叉树范围,删掉不影响功能
- }
-
- /*
- * 存入叶子
- *
- * 首先来解决一个用词混乱的问题:
- * 在二叉树里没有子节点的节点称为“叶子节点”或“叶子”,因为他们处于树的末端,在树的结构看来就是叶子一样。这样命名后就得到了子节点的节点是“树枝”、没有子节点的节点是“叶子”的形象命名。
- * 但在四叉树里这个命名方式行不通————四叉树里的“叶子”指的是联系碰撞器和树之间的映射对象,是和节点完全不同的类。
- * 因此我们将四叉树里有子节点的节点称为“树枝”或“树干”他们只负责构成四叉树,不负责储存叶子;处于四叉树末端的没有子节点的节点称为“树梢”,他们负责存储叶子;“叶子”则是映射对象,这样就形成了“树干”连接“树梢”,“树梢”连接“叶子”的形象命名。
- * 而没有父节点的那个节点和二叉树一样称为“根”或“根节点”
- *
- * 存入叶子的流程是:
- * 先判断这个节点有没有子节点,没有的话说明是树梢,直接存入叶子就行。
- * 如果这个节点有子节点,则说明这是树枝,要向下寻找可以存入这个叶子的子节点。
- * 寻找可以存入子节点的叶子的方法很简单:如果叶子的位置到在子节点的区域里,则说明可以存进去。
- * 如此向下递归知道树梢再存进去就可以了。
- */
- public void SetLeaf(QuadtreeLeafBasic leaf)
- {
- if (DontHaveChildren())
- SetLeafToSelf(leaf);
- else
- SetLeafToChildren(leaf);
- }
- bool DontHaveChildren()
- {
- return _upperRightChild == null || _lowerRightChild == null || _lowerLeftChild == null || _upperLeftChild == null; //四个子节点是一起创建的,原理上说一个不存在另外三个也不存在,但假设只有一个不存在插入的叶子又在这个位置就要出事了
- }
-
- void SetLeafToSelf(QuadtreeLeafBasic leaf)
- {
- _leafs.Add(leaf);
- CheckAndDoSplit();
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树梢节点存入位置在" + leaf.position + "的叶子");
- }
-
- void CheckAndDoSplit()
- {
- if (_leafs.Count > _maxLeafsNumber && _field.width > _minSideLength && _field.height > _minSideLength)
- Split();
- }
-
- void SetLeafToChildren(QuadtreeLeafBasic leaf)
- {
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树枝节点向子节点存入位置在" + leaf.position + "的叶子");
- /*
- * 如果叶子在子节点的范围里,向这个子节点里存入叶子
- * 用 else if 的原因是 Field.Contains 把边缘处的点也算在范围里,这如果一个叶子在两个节点的交界处只用一个 if 就会重复存入
- */
- if (_upperRightChild._field.Contains(leaf.position))
- _upperRightChild.SetLeaf(leaf);
- else if (_lowerRightChild._field.Contains(leaf.position))
- _lowerRightChild.SetLeaf(leaf);
- else if (_lowerLeftChild._field.Contains(leaf.position))
- _lowerLeftChild.SetLeaf(leaf);
- else if (_upperLeftChild._field.Contains(leaf.position))
- _upperLeftChild.SetLeaf(leaf);
- }
-
- /*
- * 分割,四叉树的核心来了
- *
- * 分割就是先把这个节点的范围分成四份,分别给四个子节点,之后把这个节点里的所有叶子按位置存进四个子节点里。
- * 分割完成后这个节点就从树梢变成了树枝,而四个子节点成为了新的树梢。
- */
- void Split()
- {
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树梢节点达到分割条件,进行分割");
-
- //计算出横竖的中心坐标
- float xCenter = (_field.left + _field.right) / 2;
- float yCenter = (_field.bottom + _field.top) / 2;
-
- //用上面计算的中心坐标和原本的区域组合出四个子节点的区域来,并且把最大叶子数、最小宽高一起传给子节点
- _upperRightChild = new QuadtreeBasic(_field.top, _field.right, yCenter, xCenter, _maxLeafsNumber, _minSideLength);
- _lowerRightChild = new QuadtreeBasic(yCenter, _field.right, _field.bottom, xCenter, _maxLeafsNumber, _minSideLength);
- _lowerLeftChild = new QuadtreeBasic(yCenter, xCenter, _field.bottom, _field.left, _maxLeafsNumber, _minSideLength);
- _upperLeftChild = new QuadtreeBasic(_field.top, xCenter, yCenter, _field.left, _maxLeafsNumber, _minSideLength);
-
- //生成完子节点后把这个节点里的所有叶子分给子节点
- foreach (QuadtreeLeafBasic leaf in _leafs) //假设你不会用 foreach ,请看 QuadtreeBasicDetector
- SetLeafToChildren(leaf);
- _leafs = null; //将叶子分给子节点后这个节点就不需要继续保留叶子了,把叶子List设为null,让C#的清理器来清理掉节省内存
- }
-
- /*
- * 碰撞检测
- *
- * 四叉树的碰撞检测同样分两部分:
- * 树梢部分非常无脑:暴力检测全部叶子是否碰撞
- * 树枝部分则十分巧妙,需要一些解说:
- * 首先根据四叉树的设计,每个节点都有一个区域,不论是树枝还是树梢。
- * 树梢里存在着数量不固定的叶子,可以分布在树梢范围内的任何一个位置。
- * 树枝本身虽然不保存叶子,但树枝的区域和他的子节点树梢的范围是重合的,也就是说在树枝的范围里同样有数量不固定的叶子,可能分布在任意一个位置。
- * 再看四叉树碰撞检测的流程: 找出可能有叶子发生碰撞的节点 -> 在这个节点的四个子节点里找出可能发生碰撞的节点 -> 在这个节点的四个子节点里找出可能发生碰撞的节点 -> ... -> 找到可能有叶子发生碰撞的树梢节点 -> 暴力检测这个树梢下面的叶子
- *
- * 这样可以得出一个结论:如果检测的范围与节点的范围有重合,那么这个节点下面就有可能有叶子会发生碰撞。
- * 又因为检测范围是一个圆,所以通过比较检测点到节点区域的距离和检测半径就能判断出这个节点是否可能发生碰撞。
- */
- public T[] CheckCollision(Vector2 checkPosition, float checkRadius)
- {
- if (DontHaveChildren())
- return GetCollisionObjectsFromSelf(checkPosition, checkRadius);
- else
- return GetCollisionObjectsFromChildren(checkPosition, checkRadius);
- }
-
- T[] GetCollisionObjectsFromSelf(Vector2 checkPosition, float checkRadius)
- {
- List objs = new List();
-
- foreach (QuadtreeLeafBasic leaf in _leafs)
- if (Vector2.Distance(checkPosition, leaf.position) <= checkRadius) //开头说的没有一丁点技术含量的距离检测, Vector2.Distance可以计算出两个点的距离,之后和检测半径一比较就知道有没有检测到了
- objs.Add(leaf.obj);
-
- return objs.ToArray();
- }
-
- T[] GetCollisionObjectsFromChildren(Vector2 checkPosition, float checkRadius)
- {
- List objs = new List();
-
- if (_upperRightChild._field.PointToFieldDistance(checkPosition) <= checkRadius)
- objs.AddRange(_upperRightChild.CheckCollision(checkPosition, checkRadius)); //这里用的不是 if else 而是连续存入,因为检测的范围是一个圆,基本不可能只在一个节点范围里,因此要把每个子节点都考虑到
- if (_lowerRightChild._field.PointToFieldDistance(checkPosition) <= checkRadius)
- objs.AddRange(_lowerRightChild.CheckCollision(checkPosition, checkRadius));
- if (_lowerLeftChild._field.PointToFieldDistance(checkPosition) <= checkRadius)
- objs.AddRange(_lowerLeftChild.CheckCollision(checkPosition, checkRadius));
- if (_upperLeftChild._field.PointToFieldDistance(checkPosition) <= checkRadius)
- objs.AddRange(_upperLeftChild.CheckCollision(checkPosition, checkRadius));
-
- return objs.ToArray();
- }
-
- /*
- * 移除叶子
- *
- * 移除叶子很简单,先是跟插入叶子时一样根据坐标找到叶子所在的树梢,之后直接移除就可以了。
- */
- public void RemoveLeaf(QuadtreeLeafBasic leaf)
- {
- if (DontHaveChildren())
- RemoveLeafFromSelf(leaf);
- else
- RemoveLeafFromChildren(leaf);
- }
-
- void RemoveLeafFromSelf(QuadtreeLeafBasic leaf)
- {
- _leafs.Remove(leaf);
-
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树梢节点移除位置在" + leaf.position + "的叶子");
- }
-
- void RemoveLeafFromChildren(QuadtreeLeafBasic leaf)
- {
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树枝节点从子节点移除位置在" + leaf.position + "的叶子");
-
- if (_upperRightChild._field.Contains(leaf.position))
- _upperRightChild.RemoveLeaf(leaf);
- if (_lowerRightChild._field.Contains(leaf.position))
- _lowerRightChild.RemoveLeaf(leaf);
- if (_lowerLeftChild._field.Contains(leaf.position))
- _lowerLeftChild.RemoveLeaf(leaf);
- if (_upperLeftChild._field.Contains(leaf.position))
- _upperLeftChild.RemoveLeaf(leaf);
- }
-
- //从这开始是Debug代码,删掉不影响功能
- //绘制四叉树节点的范围
- void DrawField()
- {
- Vector3 upperRight = new Vector3(_field.right, _field.top, 0);
- Vector3 lowerRight = new Vector3(_field.right, _field.bottom, 0);
- Vector3 lowerLeft = new Vector3(_field.left, _field.bottom, 0);
- Vector3 upperLeft = new Vector3(_field.left, _field.top, 0);
-
- Debug.DrawLine(upperRight, lowerRight, Color.blue * 0.8f, Mathf.Infinity); //Mathf.Infinity:正无穷,显示时间设置为正无穷就会一直显示
- Debug.DrawLine(lowerRight, lowerLeft, Color.blue * 0.8f, Mathf.Infinity); //Color:颜色类,Color.blue:自带的蓝色
- Debug.DrawLine(lowerLeft, upperLeft, Color.blue * 0.8f, Mathf.Infinity);
- Debug.DrawLine(upperLeft, upperRight, Color.blue * 0.8f, Mathf.Infinity);
- //Debug.DrawLine(Vector3 start, Vector3 end, Color color, float duration):画线,参数依次是:起点、终点、颜色、显示时间
- //【注意】这个方法的持续时间是基于 Time.deltaTime 实现的,也就是说只有在游戏运行模式下才有效,如果在编辑模式下使用,绘制的线不管经过多长时间都不会消失
- }
- }
-
- public class QuadtreeBasicField
- {
- public float top
- {
- get { return _top; }
- }
- float _top;
- public float right
- {
- get { return _right; }
- }
- float _right;
- public float bottom
- {
- get { return _bottom; }
- }
- float _bottom;
- public float left
- {
- get { return _left; }
- }
- float _left;
- public float width
- {
- get { return _width; }
- }
- float _width;
- public float height
- {
- get { return _height; }
- }
- float _height;
-
- public QuadtreeBasicField(float top, float right, float bottom, float left)
- {
- _top = top;
- _right = right;
- _bottom = bottom;
- _left = left;
-
- _width = _right - _left;
- _height = _top - _bottom;
- }
-
- //检测一个点是否在区域里
- public bool Contains(Vector2 point)
- {
- return point.x >= _left && point.x <= _right && point.y >= _bottom && point.y <= _top;
- }
-
- //计算一个点到区域的距离,如果在区域里则返回0
- public float PointToFieldDistance(Vector2 point)
- {
- float xDistance = Mathf.Max(0, point.x - _right, _left - point.x); //这一步是这样的:如果点在左边,则左边坐标 - 点是正数,返回距离;如果在右边,则点 - 右边坐标是正数,返回距离;如果在中间,则两个计算都是负数,返回0
- float yDistance = Mathf.Max(0, point.y - _top, _bottom - point.y);
- return Mathf.Sqrt(xDistance * xDistance + yDistance * yDistance); //三角函数,别说这个你不会
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeColliderBasic.cs b/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeColliderBasic.cs
deleted file mode 100644
index 54aca20..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeColliderBasic.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 四叉树的碰撞器,挂载在需要参与碰撞检测的物体上
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step0Basic
-{
- public class QuadtreeColliderBasic : MonoBehaviour
- {
- QuadtreeLeafBasic _leaf;
-
- private void Awake()
- {
- _leaf = new QuadtreeLeafBasic(gameObject, GetLeafPosition());
- }
- Vector2 GetLeafPosition()
- {
- return new Vector2(transform.position.x, transform.position.y);
- /*
- * 阅读下面部分时请将碰撞器想成是固定的不能移动的。
- *
- * 先来学一个词:
- * 映射:数学术语,指两个元素的集之间元素相互“对应”的关系。
- * 开发里也有“映射”这个概念,碰撞器和叶子的一一对应就是映射,可以说“叶子是碰撞器在四叉树里的映射”。
- *
- * 新人在遇到“映射”这个概念的时候经常会被绕进去,比如这个四叉树检测的映射就有一个可能搞蒙新人的地方:
- * 四叉树是二维的,Unity的三维的,那么四叉树的xy两个轴对应的是Unity的xy轴还是xz轴呢?也就是说这个四叉树是用在“竖起来”的平面上还是“平放着”的平面上呢?
- *
- * 实际上四叉树到底是哪个平面是可以设置的。
- *
- * 首先我们要理解的一点是:
- * 四叉树的平面和Unity的世界空间是分离的,四叉树实际上不知道Unity的世界空间里各个碰撞器到底在哪半径多少,他只能根据存入的叶子来做判断。
- * 这也是为什么在Unity里移动碰撞器检测的结果不会随之变化————四叉树里的叶子没有一起变化,叶子里的数据还是碰撞器刚生成的时候存入的数据。
- *
- * 理解了这一点后向下就简单了。
- *
- * 看上面的代码,这个代码将碰撞器的Unity世界坐标的x,y坐标设为叶子的坐标,也就是说四叉树平面的xy轴和Unity的xy轴对应,四叉树平面是竖起来的。
- * 那么如果是把Unity世界坐标的 x,z 设为叶子坐标呢?当然是四叉树平面的xy轴对应Unity的xz轴,四叉树平面是躺倒的。
- *
- * 也就是说四叉树的平面是什么方向实际上取决于存入叶子的时候的设置,四叉树自己根本不知道Unity的世界里发生了什么,他只会在他自己的二维世界里任劳任怨的完成他的任务。
- * 这种
- *
- *
- * 可能有朋友要问了:如果我有的碰撞器是xy,有的碰撞器是xz,有的则是yz,甚至是斜着存的会怎么样?
- * 这个问题接近了映射这个概念的本质了,映射的关键就是“对应”,在这个四叉树里就是把Unity空间里的碰撞器和四叉树里的叶子对应,这样四叉树就可以通过对叶子进行碰撞检测得出碰撞器的碰撞情况。
- * 那么假设有一个叶子和碰撞器没有对应好呢?比如碰撞器已经改变了位置但叶子里记录的位置还是原来的位置。结果当然是检测出错。
- *
- * 知道了对应关系和对应出错之后再看前面的问题:同一场景里有多种映射规则会怎么样?
- * 答案是:其实也不会怎么样。只要不怕乱尽管用。
- *
- * 咸鱼作者以前玩过一个游戏,地图是上下两部分,下面的部分是倒影,有意思的是上下两部分都只显示一部分物体,两边加起来才是真的地图,这种功能就可以上面的物体正着映射,下面的物体反着映射。
- * 开发本来就是随意发挥成分很多的,只要自己控制得住就尽管放手去用。
- *
- * 万一玩脱了不要找咸鱼作者撒气→_→
- */
- }
-
-
- /*
- * 在 OnEnble 和 OnDisable 里写存入和移除叶子方法。
- * OnEnable 是Unity自带的在脚本激活的时候自动调用的方法,脚本激活后向四叉树存入叶子,碰撞器生效。
- * OnDisable 则是在脚本禁用的时候自动调用的,脚本禁用后从四叉树里移除叶子,碰撞器失效。
- *
- * 一个脚本实现一个功能,脚本激活则功能生效,脚本禁用则功能失效,这是面向组件的编程方式,也是Unity所使用的方式,这段话主要是给新朋友写的,老手看了别笑话我。
- */
- private void OnEnable()
- {
- QuadtreeObjectBasic.SetLeaf(_leaf);
- }
-
- private void OnDisable()
- {
- QuadtreeObjectBasic.RemoveLeaf(_leaf);
- }
-
- //关于 OnDrawGizmos 请看 QuadtreeBaiscObject
- private void OnDrawGizmos()
- {
- if (!enabled) return; //在更新到正式第二版之后才发现OnDrawGizmos就算是停用了组件也会运行,于是加上这个组件停用直接返回
-
- Gizmos.color = Color.green;
-
- MyGizmos.DrawCircle(transform.position, 10, 20); //Mygizmos是一个自写的类,位置在 QuadtreeCollider 里,这个方法是画圆圈的
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeDetectorBasic.cs b/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeDetectorBasic.cs
deleted file mode 100644
index 6a09a45..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeDetectorBasic.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 四叉树检测脚本,仅有显示发生碰撞的功能。
- *
- * 使用方式是挂载到需要检测碰撞的物体上,之后开始运行,在 Scene 面板里拖动物体,如果发生了碰撞的话在 Console 面板里会看到碰撞信息。
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step0Basic
-{
- public class QuadtreeDetectorBasic : MonoBehaviour
- {
-#pragma warning disable 0649
- [SerializeField] //关于[SerializeField]请看 QuadtreeBasicObject
- float _radius;
-
- //关于 OnDrawGizmo 请看 QuadtreeBasicObject
- private void OnDrawGizmos()
- {
- DrawRadius();
- DrawCollision();
- }
-
- void DrawRadius()
- {
- Gizmos.color = Color.yellow * 0.8f;
- MyGizmos.DrawCircle(transform.position, _radius, 60); //Mygizmos是一个自写的类,位置在 QuadtreeCollider 里,这个方法是画圆圈的
- }
-
- void DrawCollision()
- {
- Gizmos.color = Color.yellow;
-
- GameObject[] colliders = QuadtreeObjectBasic.CheckCollision(transform.position, _radius);
-
- foreach (GameObject collider in colliders)
- Gizmos.DrawLine(transform.position, collider.transform.position); //Gizmos.DrawLine:绘制一条线,参数是两个Vector3,就是线的两端
- /*
- * 假设你不会用foreach,它的格式是:
- * foreach(类型 变量名A in 同类型的数组或List或其他集合类的变量B)
- * {
- * 这个大括号会遍历那个变量B里的每个元素,每次遍历都会用前面的变量名A,可以理解为一个简写版的for循环
- *
- * 假设你连“遍历”这个词都不知道,遍历的意思是从头到尾把每个元素都过一遍
- * }
- */
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeObjectBasic.cs b/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeObjectBasic.cs
deleted file mode 100644
index 327f377..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/0_Basic/QuadtreeObjectBasic.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 四叉树物体脚本,使用时挂载在需要进行四叉树碰撞检测的场景里的物体上并写上需要的参数。
- *
- * 注意这个脚本的执行顺序必须在 QuadtreeBasicCollider 前面,设置方式是 Edit -> Project Settings -> Script Excution Order,点"+"选择要设置执行顺序的脚本,上下拖动,越靠上执行越早
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step0Basic
-{
- public class QuadtreeObjectBasic : MonoBehaviour
- {
-#pragma warning disable 0649
- [SerializeField] //加了这个的变量可以不写public就在 Inspector 面板展示,如果有变量需要在 Inspector 面板展示但又不需要public则应该用[SerializeField]
- float _top;
-#pragma warning disable 0649
- [SerializeField]
- float _right;
-#pragma warning disable 0649
- [SerializeField]
- float _bottom;
-#pragma warning disable 0649
- [SerializeField]
- float _left;
-#pragma warning disable 0649
- [SerializeField]
- int _maxLeafsNumber;
-#pragma warning disable 0649
- [SerializeField]
- float _minSideLength;
-
- static QuadtreeBasic _quadtree; //static方法必须要static变量,所以这里设为static
-
-
- private void Awake()
- {
- _quadtree = new QuadtreeBasic(_top, _right, _bottom, _left, _maxLeafsNumber, _minSideLength);
- }
-
- /*
- * 存入。移除。检测三个方法都是 static ,因为static方法可以通过类名调用,这样就省去了每个检测器都要 Find 一次四叉树物体的工作
- */
- public static void SetLeaf(QuadtreeLeafBasic leaf)
- {
- _quadtree.SetLeaf(leaf);
- }
-
- public static void RemoveLeaf(QuadtreeLeafBasic leaf)
- {
- _quadtree.RemoveLeaf(leaf);
- }
-
- public static GameObject[] CheckCollision(Vector2 checkPosition, float radius)
- {
- return _quadtree.CheckCollision(checkPosition, radius);
- }
-
- /*
- * OnDrawGizmos:Unity自带方法之一,在绘制Gizmo的时候调用,一般来说只要在Scene面板上做了操作就会绘制Gizmo
- * Gizmo是个很难解释的词汇,它直译叫“小工具”,Unity自带碰撞器的体积的线是Gizmo,移动、缩放。旋转物体的那几个工具同样是Gizmo,就是直译里说的“工具”
- * Gizmo在Unity里是一次次的“绘制”出来的,在绘制Unity自带Gizmo的同时也可以通过 OnDrawGizmo 自己设定需要绘制的Gizmo
- * 一般来说Gizmo只能在 Scene 面板里看到,在 Game 面板里看不到,因为这是为了方便开发才写的工具,在实际游戏过程里是没有用的
- *
- * 虽然不会写Gizmo也不会对功能有什么影响,但会写Gizmo可以让开发过程更舒服
- */
- private void OnDrawGizmos()
- {
- Vector3 upperRight = new Vector3(_right, _top, transform.position.z);
- Vector3 lowerRight = new Vector3(_right, _bottom, transform.position.z);
- Vector3 lowerLeft = new Vector3(_left, _bottom, transform.position.z);
- Vector3 upperLeft = new Vector3(_left, _top, transform.position.z);
-
- Gizmos.color = Color.red * 0.8f; //Gizmos.color:绘制Gizmo的颜色
-
- Gizmos.DrawLine(upperRight, lowerRight);
- Gizmos.DrawLine(lowerRight, lowerLeft);
- Gizmos.DrawLine(lowerLeft, upperLeft);
- Gizmos.DrawLine(upperLeft, upperRight);
- }
-
- /*
- * OnValidate:Unity自带方法之一,当 Inspector 面板的数值变化时调用,一般用来限制数据的调整,防止误操作导致的bug
- */
- private void OnValidate()
- {
- if (_top < _bottom)
- _top = _bottom;
- if (_right < _left)
- _right = _left;
- if (_maxLeafsNumber < 1)
- _maxLeafsNumber = 1;
- if (_minSideLength < 0.001f)
- _minSideLength = 0.001f;
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/Example Scene.unity b/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/Example Scene.unity
deleted file mode 100644
index 0ab2c85..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/Example Scene.unity
+++ /dev/null
@@ -1,1346 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_OcclusionBakeSettings:
- smallestOccluder: 5
- smallestHole: 0.25
- backfaceThreshold: 100
- m_SceneGUID: 00000000000000000000000000000000
- m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 9
- m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- m_FogMode: 3
- m_FogDensity: 0.01
- m_LinearFogStart: 0
- m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
- m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
- m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
- m_AmbientIntensity: 1
- m_AmbientMode: 0
- m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
- m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
- m_HaloStrength: 0.5
- m_FlareStrength: 1
- m_FlareFadeSpeed: 3
- m_HaloTexture: {fileID: 0}
- m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
- m_DefaultReflectionMode: 0
- m_DefaultReflectionResolution: 128
- m_ReflectionBounces: 1
- m_ReflectionIntensity: 1
- m_CustomReflection: {fileID: 0}
- m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.37311992, g: 0.38074034, b: 0.35872713, a: 1}
- m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 11
- m_GIWorkflowMode: 0
- m_GISettings:
- serializedVersion: 2
- m_BounceScale: 1
- m_IndirectOutputScale: 1
- m_AlbedoBoost: 1
- m_EnvironmentLightingMode: 0
- m_EnableBakedLightmaps: 1
- m_EnableRealtimeLightmaps: 1
- m_LightmapEditorSettings:
- serializedVersion: 12
- m_Resolution: 2
- m_BakeResolution: 40
- m_AtlasSize: 1024
- m_AO: 0
- m_AOMaxDistance: 1
- m_CompAOExponent: 1
- m_CompAOExponentDirect: 0
- m_ExtractAmbientOcclusion: 0
- m_Padding: 2
- m_LightmapParameters: {fileID: 0}
- m_LightmapsBakeMode: 1
- m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
- m_ReflectionCompression: 2
- m_MixedBakeMode: 2
- m_BakeBackend: 0
- m_PVRSampling: 1
- m_PVRDirectSampleCount: 32
- m_PVRSampleCount: 500
- m_PVRBounces: 2
- m_PVREnvironmentSampleCount: 500
- m_PVREnvironmentReferencePointCount: 2048
- m_PVRFilteringMode: 2
- m_PVRDenoiserTypeDirect: 0
- m_PVRDenoiserTypeIndirect: 0
- m_PVRDenoiserTypeAO: 0
- m_PVRFilterTypeDirect: 0
- m_PVRFilterTypeIndirect: 0
- m_PVRFilterTypeAO: 0
- m_PVREnvironmentMIS: 0
- m_PVRCulling: 1
- m_PVRFilteringGaussRadiusDirect: 1
- m_PVRFilteringGaussRadiusIndirect: 5
- m_PVRFilteringGaussRadiusAO: 2
- m_PVRFilteringAtrousPositionSigmaDirect: 0.5
- m_PVRFilteringAtrousPositionSigmaIndirect: 2
- m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
- m_ExportTrainingData: 0
- m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
---- !u!196 &4
-NavMeshSettings:
- serializedVersion: 2
- m_ObjectHideFlags: 0
- m_BuildSettings:
- serializedVersion: 2
- agentTypeID: 0
- agentRadius: 0.5
- agentHeight: 2
- agentSlope: 45
- agentClimb: 0.4
- ledgeDropHeight: 0
- maxJumpAcrossDistance: 0
- minRegionArea: 2
- manualCellSize: 0
- cellSize: 0.16666667
- manualTileSize: 0
- tileSize: 256
- accuratePlacement: 0
- debug:
- m_Flags: 0
- m_NavMeshData: {fileID: 0}
---- !u!1 &33324924
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 33324925}
- - component: {fileID: 33324926}
- m_Layer: 0
- m_Name: Collider (13)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &33324925
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 33324924}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1007, y: 1539, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 13
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &33324926
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 33324924}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 400
---- !u!1 &139665278
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 139665279}
- - component: {fileID: 139665280}
- m_Layer: 0
- m_Name: Collider (2)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &139665279
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 139665278}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &139665280
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 139665278}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &170996237
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 170996238}
- - component: {fileID: 170996239}
- m_Layer: 0
- m_Name: Collider (11)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &170996238
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 170996237}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 68, y: 1120, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 11
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &170996239
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 170996237}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &248682647
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 248682649}
- - component: {fileID: 248682648}
- m_Layer: 0
- m_Name: CheckCollider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &248682648
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 248682647}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b9d1ca10fe0105f49b08c43c3a59889c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 300
---- !u!4 &248682649
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 248682647}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 565, y: 1095, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &266105606
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 266105608}
- - component: {fileID: 266105607}
- m_Layer: 0
- m_Name: QuadtreeObject
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &266105607
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 266105606}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 078845f8024501145a971f9edacdc503, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _top: 1960
- _right: 1080
- _bottom: 0
- _left: 0
- _maxLeafsNumber: 5
- _minSideLength: 10
---- !u!4 &266105608
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 266105606}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &289372340
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 289372341}
- - component: {fileID: 289372342}
- m_Layer: 0
- m_Name: Collider (7)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &289372341
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 289372340}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 467, y: 72, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 7
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &289372342
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 289372340}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &303927712
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 303927713}
- - component: {fileID: 303927714}
- m_Layer: 0
- m_Name: Collider (8)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &303927713
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 303927712}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 211, y: 308, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 8
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &303927714
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 303927712}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &509511000
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 509511002}
- - component: {fileID: 509511001}
- m_Layer: 0
- m_Name: Collider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!114 &509511001
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 509511000}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!4 &509511002
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 509511000}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &560824379
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 560824380}
- - component: {fileID: 560824381}
- m_Layer: 0
- m_Name: Collider (4)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &560824380
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 560824379}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 289, y: 1588, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &560824381
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 560824379}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &612013895
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 612013899}
- - component: {fileID: 612013898}
- - component: {fileID: 612013897}
- - component: {fileID: 612013896}
- m_Layer: 5
- m_Name: Canvas
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &612013896
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 612013895}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_IgnoreReversedGraphics: 1
- m_BlockingObjects: 0
- m_BlockingMask:
- serializedVersion: 2
- m_Bits: 4294967295
---- !u!114 &612013897
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 612013895}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_UiScaleMode: 1
- m_ReferencePixelsPerUnit: 100
- m_ScaleFactor: 1
- m_ReferenceResolution: {x: 1920, y: 1080}
- m_ScreenMatchMode: 0
- m_MatchWidthOrHeight: 0
- m_PhysicalUnit: 3
- m_FallbackScreenDPI: 96
- m_DefaultSpriteDPI: 96
- m_DynamicPixelsPerUnit: 1
---- !u!223 &612013898
-Canvas:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 612013895}
- m_Enabled: 1
- serializedVersion: 3
- m_RenderMode: 0
- m_Camera: {fileID: 0}
- m_PlaneDistance: 100
- m_PixelPerfect: 0
- m_ReceivesEvents: 1
- m_OverrideSorting: 0
- m_OverridePixelPerfect: 0
- m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 0
- m_SortingLayerID: 0
- m_SortingOrder: 0
- m_TargetDisplay: 0
---- !u!224 &612013899
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 612013895}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0, y: 0, z: 0}
- m_Children:
- - {fileID: 1088345187}
- m_Father: {fileID: 0}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0, y: 0}
---- !u!1 &853884843
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 853884844}
- - component: {fileID: 853884845}
- m_Layer: 0
- m_Name: Collider (9)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &853884844
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 853884843}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 530, y: 580, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 9
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &853884845
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 853884843}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1088345186
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1088345187}
- - component: {fileID: 1088345189}
- - component: {fileID: 1088345188}
- m_Layer: 5
- m_Name: Text
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1088345187
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1088345186}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 612013899}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0.5, y: 0.5}
- m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 1200, y: 400}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1088345188
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1088345186}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0, g: 0, b: 0, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 0
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u8FD0\u884C\u540E\u5728Scene\uFF08\u573A\u666F\uFF09\u7A97\u53E3\u4E2D\u89C2\u770B\u6548\u679C\n\u7EA2\u8272\u7684\u8FB9\u6846\u662F\u56DB\u53C9\u6811\u7684\u6709\u6548\u533A\u57DF\n\u84DD\u8272\u7684\u77E9\u5F62\u662F\u56DB\u53C9\u6811\u7684\u53F6\u5B50\u8282\u70B9\u6240\u62E5\u6709\u7684\u533A\u57DF\n\u7EFF\u8272\u5706\u5708\u662F\u88AB\u68C0\u6D4B\u7684\u78B0\u649E\u5668\n\u9EC4\u8272\u7684\u5706\u5708\u662F\u68C0\u6D4B\u78B0\u649E\u7684\u78B0\u649E\u5668\uFF0C\u53EF\u4EE5\u79FB\u52A8\u8FD9\u4E2A\u78B0\u649E\u5668\u89C2\u770B\u6548\u679C\n\u68C0\u6D4B\u78B0\u649E\u5668\u548C\u88AB\u68C0\u6D4B\u78B0\u649E\u5668\u901A\u8FC7\u9EC4\u8272\u7684\u7EBF\u8FDE\u63A5\u65F6\uFF0C\u8868\u793A\u8FD9\u4E24\u4E2A\u78B0\u649E\u5668\u53D1\u751F\u4E86\u78B0\u649E"
---- !u!222 &1088345189
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1088345186}
- m_CullTransparentMesh: 0
---- !u!1 &1120101590
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1120101591}
- m_Layer: 0
- m_Name: Colliders
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1120101591
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1120101590}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 509511002}
- - {fileID: 1271169237}
- - {fileID: 139665279}
- - {fileID: 1266525819}
- - {fileID: 560824380}
- - {fileID: 1602456315}
- - {fileID: 1149304231}
- - {fileID: 289372341}
- - {fileID: 303927713}
- - {fileID: 853884844}
- - {fileID: 1350610265}
- - {fileID: 170996238}
- - {fileID: 1310574760}
- - {fileID: 33324925}
- - {fileID: 1488995687}
- - {fileID: 2083982323}
- - {fileID: 1613095278}
- m_Father: {fileID: 0}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1149304230
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1149304231}
- - component: {fileID: 1149304232}
- m_Layer: 0
- m_Name: Collider (6)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1149304231
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1149304230}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 897, y: 219, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 6
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1149304232
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1149304230}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &1266525818
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1266525819}
- - component: {fileID: 1266525820}
- m_Layer: 0
- m_Name: Collider (3)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1266525819
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1266525818}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1266525820
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1266525818}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &1271169236
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1271169237}
- - component: {fileID: 1271169238}
- m_Layer: 0
- m_Name: Collider (1)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1271169237
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1271169236}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1271169238
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1271169236}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &1294188676
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1294188680}
- - component: {fileID: 1294188679}
- - component: {fileID: 1294188678}
- - component: {fileID: 1294188677}
- m_Layer: 0
- m_Name: Main Camera
- m_TagString: MainCamera
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!81 &1294188677
-AudioListener:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294188676}
- m_Enabled: 1
---- !u!124 &1294188678
-Behaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294188676}
- m_Enabled: 1
---- !u!20 &1294188679
-Camera:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294188676}
- m_Enabled: 1
- serializedVersion: 2
- m_ClearFlags: 2
- m_BackGroundColor: {r: 0.7311321, g: 1, b: 0.9341393, a: 0}
- m_projectionMatrixMode: 1
- m_GateFitMode: 2
- m_FOVAxisMode: 0
- m_SensorSize: {x: 36, y: 24}
- m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
- m_NormalizedViewPortRect:
- serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
- near clip plane: 0.3
- far clip plane: 1000
- field of view: 60
- orthographic: 0
- orthographic size: 5
- m_Depth: -1
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
- m_TargetDisplay: 0
- m_TargetEye: 3
- m_HDR: 1
- m_AllowMSAA: 1
- m_AllowDynamicResolution: 0
- m_ForceIntoRT: 0
- m_OcclusionCulling: 1
- m_StereoConvergence: 10
- m_StereoSeparation: 0.022
---- !u!4 &1294188680
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1294188676}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 1, z: -10}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1310574759
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1310574760}
- - component: {fileID: 1310574761}
- m_Layer: 0
- m_Name: Collider (12)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1310574760
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1310574759}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 262, y: 842, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 12
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1310574761
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1310574759}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &1350610264
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1350610265}
- - component: {fileID: 1350610266}
- m_Layer: 0
- m_Name: Collider (10)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1350610265
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1350610264}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 11, y: 664, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 10
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1350610266
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1350610264}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1358137647
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1358137650}
- - component: {fileID: 1358137649}
- - component: {fileID: 1358137648}
- m_Layer: 0
- m_Name: EventSystem
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1358137648
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1358137647}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_HorizontalAxis: Horizontal
- m_VerticalAxis: Vertical
- m_SubmitButton: Submit
- m_CancelButton: Cancel
- m_InputActionsPerSecond: 10
- m_RepeatDelay: 0.5
- m_ForceModuleActive: 0
---- !u!114 &1358137649
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1358137647}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_FirstSelected: {fileID: 0}
- m_sendNavigationEvents: 1
- m_DragThreshold: 10
---- !u!4 &1358137650
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1358137647}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1488995686
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1488995687}
- - component: {fileID: 1488995688}
- m_Layer: 0
- m_Name: Collider (14)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1488995687
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1488995686}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1002, y: 1151, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 14
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1488995688
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1488995686}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1602456314
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1602456315}
- - component: {fileID: 1602456316}
- m_Layer: 0
- m_Name: Collider (5)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1602456315
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1602456314}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 677, y: 1871, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1602456316
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1602456314}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1613095277
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1613095278}
- - component: {fileID: 1613095279}
- m_Layer: 0
- m_Name: Collider (16)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &1613095278
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1613095277}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 614, y: 1219, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 16
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1613095279
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1613095277}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 500
---- !u!1 &2083982322
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2083982323}
- - component: {fileID: 2083982324}
- m_Layer: 0
- m_Name: Collider (15)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 4294967295
- m_IsActive: 1
---- !u!4 &2083982323
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2083982322}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 881, y: 763, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1120101591}
- m_RootOrder: 15
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2083982324
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2083982322}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: db899b5bef48b0546a139d74de8edb18, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeColliderRadius.cs b/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeColliderRadius.cs
deleted file mode 100644
index 7706ff4..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeColliderRadius.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 增加了半径的碰撞器,跟第零步的碰撞器基本没区别
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step1Radius
-{
- public class QuadtreeColliderRadius : MonoBehaviour
- {
- public float radius
- {
- get { return _radius; }
- set { _radius = value; }
- }
- [SerializeField]
- float _radius = 1;
-
- Transform _transform;
- QuadtreeLeafRadius _leaf;
-
- private void Awake()
- {
- _transform = transform;
- _leaf = new QuadtreeLeafRadius(gameObject, GetLeafPosition(), _radius);
- }
-
- Vector2 GetLeafPosition()
- {
- return new Vector2(_transform.position.x, _transform.position.y);
- }
-
- private void OnEnable()
- {
- QuadtreeObjectRadius.SetLeaf(_leaf);
- }
-
- private void OnDisable()
- {
- QuadtreeObjectRadius.RemoveLeaf(_leaf);
- }
-
- private void OnDrawGizmos()
- {
- if (!enabled) return;
-
- Gizmos.color = Color.green * 0.8f;
-
- MyGizmos.DrawCircle(transform.position, _radius * Mathf.Max(transform.localScale.x, transform.localScale.y), 60);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeDetectorRadius.cs b/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeDetectorRadius.cs
deleted file mode 100644
index 99b323b..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeDetectorRadius.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step1Radius
-{
- public class QuadtreeDetectorRadius : MonoBehaviour
- {
-#pragma warning disable 0649
- [SerializeField]
- float _radius;
-
- private void OnDrawGizmos()
- {
- DrawRadius();
- DrawCollision();
- }
-
- void DrawRadius()
- {
- Gizmos.color = Color.yellow * 0.8f;
- MyGizmos.DrawCircle(transform.position, _radius, 60);
- }
-
- void DrawCollision()
- {
- foreach (GameObject collider in QuadtreeObjectRadius.CheckCollision(transform.position, _radius))
- Gizmos.DrawLine(transform.position, collider.transform.position);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeObjectRadius.cs b/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeObjectRadius.cs
deleted file mode 100644
index 85d9fa2..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeObjectRadius.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 四叉树脚本,挂载在需要四叉树碰撞检测的场景里的物体上,设置好数值后就能进行检测了。
- *
- * 执行顺序要在 QuadtreeCollider 之前
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step1Radius
-{
- public class QuadtreeObjectRadius : MonoBehaviour
- {
-#pragma warning disable 0649
- [SerializeField]
- float _top;
-#pragma warning disable 0649
- [SerializeField]
- float _right;
-#pragma warning disable 0649
- [SerializeField]
- float _bottom;
-#pragma warning disable 0649
- [SerializeField]
- float _left;
-#pragma warning disable 0649
- [SerializeField]
- int _maxLeafsNumber;
-#pragma warning disable 0649
- [SerializeField]
- float _minSideLength;
-
- static QuadtreeRadius _quadtree;
-
- private void Awake()
- {
- _quadtree = new QuadtreeRadius(_top, _right, _bottom, _left, _maxLeafsNumber, _minSideLength);
- }
-
- public static void SetLeaf(QuadtreeLeafRadius leaf)
- {
- _quadtree.SetLeaf(leaf);
- }
-
- public static void RemoveLeaf(QuadtreeLeafRadius leaf)
- {
- _quadtree.RemoveLeaf(leaf);
- }
-
- public static GameObject[] CheckCollision(Vector2 checkPosition, float radius)
- {
- return _quadtree.CheckCollision(checkPosition, radius);
- }
-
- private void OnDrawGizmos()
- {
- Vector3 upperRight = new Vector3(_right, _top, transform.position.z);
- Vector3 lowerRight = new Vector3(_right, _bottom, transform.position.z);
- Vector3 lowerLeft = new Vector3(_left, _bottom, transform.position.z);
- Vector3 upperLeft = new Vector3(_left, _top, transform.position.z);
-
- Gizmos.color = Color.red * 0.8f;
-
- Gizmos.DrawLine(upperRight, lowerRight);
- Gizmos.DrawLine(lowerRight, lowerLeft);
- Gizmos.DrawLine(lowerLeft, upperLeft);
- Gizmos.DrawLine(upperLeft, upperRight);
- }
-
- private void OnValidate()
- {
- if (_top < _bottom)
- _top = _bottom;
- if (_right < _left)
- _right = _left;
- if (_maxLeafsNumber < 1)
- _maxLeafsNumber = 1;
- if (_minSideLength < 0.001f)
- _minSideLength = 0.001f;
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeRadius.cs b/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeRadius.cs
deleted file mode 100644
index b6294d2..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/1_Radius/QuadtreeRadius.cs
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * 增加了半径的四叉树,同样有配合使用的 QuadtreeWithRadiusObject 和 QuadtreeWithRadiusCollider
- *
- * 增加了半径后存入、检测、移除的步骤都有所改变
- *
- * 先从检测开始:
- * 在第零步里面已经写过如何判断,原理是自上到下找到树梢之后计算距离和检测半径。
- * 在增加了碰撞器半径后向下找到树梢的步骤出现了变化:
- * 第零步的叶子没有半径,不管叶子在节点区域里的哪个位置,叶子的碰撞范围都不会超出节点范围。
- * 这一步的叶子有了半径,如果叶子的位置比较靠近节点区域边缘,这个叶子的碰撞范围就会超出节点区域。
- * 这样向下检测一个子节点有没有可能发生碰撞时就需要考虑到这个子节点区域里半径最大的那个节点可能已经处于边缘处。
- * 当然我们可以通过遍历节点里所有的叶子得出最大半径,但这样暴力解决计算量比不用四叉树还大。
- * 为了减少计算量我们可以给每个节点存一个最大半径,这样就只需要查看一次最大半径就可以判断出结果。
- * 也就是说需要增加最大半径。
- *
- * 之后看存入:
- * 第零步光存入就算完,但增加了最大半径这个值后就不一样了,需要每次存入的时候都更新最大半径。
- * 光是自身更新还不够,还要向上更新,否则会出现这样一种情况:
- * 在左上角有一个树梢里有一个叶子半径巨大无比,碰撞区域比整个四叉树的区域还要大。
- * 测试点在右下角。
- * 在根节点向下找的时候法线左上方的子节点的最大半径很小,以为他不会发生碰撞,没有向下寻找。
- * 这样这个不管检测哪都会碰到的叶子就因为有一节数值的最大半径太小而被忽略掉了。
- * 为了应对这种情况必须要向上更新最大半径。
- *
- * 最后是移除
- * 第零步的移除也是移除就算完了,这一步的移除则要计算新的最大半径。
- * 当然也要向上更新,不然最大的叶子已经没了还计算过来会浪费计算量。
- *
- * 附带增加了存入和移除叶子的是否成功的bool返回
- */
-
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step1Radius
-{
- public class QuadtreeLeafRadius
- {
- public T obj
- {
- get { return _obj; }
- }
- T _obj;
-
- public Vector2 position
- {
- get { return _position; }
- set { _position = value; }
- }
- Vector2 _position;
-
- public float radius
- {
- get { return _radius; }
- set { _radius = value; }
- }
- float _radius;
-
- public QuadtreeLeafRadius(T obj, Vector2 position, float radius)
- {
- _obj = obj;
- _position = position;
- _radius = radius;
- }
- }
-
-
-
- public class QuadtreeRadius
- {
- QuadtreeWithRadiusField _field;
-
- float _maxRadius = Mathf.NegativeInfinity;
- /*
- * 这个值代表着这个节点里半径最大的那个叶子的半径,节点里没有叶子时设为0或者任何负数都不影响正确性,设为负无穷的原因如下:
- *
- * 由于这个四叉树在第零步的基础上增加了叶子的半径,碰撞检测向下递归时判断子节点有没有可能有叶子发生碰撞就变得复杂了:
- * 一个节点里可以有好多种半径的叶子,每个叶子可能在任意位置,因此要判断一个子节点里有没有叶子可能发生碰撞的方法变成了 计算检测点到子节点区域的距离,如果这个距离小于测试半径和子节点最大半径的叶子的半径,则说明这个子节点里有可能有叶子会碰撞到。
- *
- * 根据这个方法,如果一个子节点的最大半径是负数,则判断会发生有趣的现象:检测范围已经覆盖到了这个节点的范围,但因为节点半径是负数,判断上要减去这个值。
- * 那么如果一个子节点的最大半径是负无穷,那么即使测试半径再怎么大,这个节点也不会被判断为可能发生碰撞。(除非测试半径是正无穷,设为正无穷肯定不是正常流程,至少不是这个四叉树的正常流程)
- * 如果将没有叶子的节点的最大半径设为负无穷,则碰撞检测时这个节点判断为不会发生碰撞,就不会向下迭代这个节点,可以节省一点计算量。
- */
-
- QuadtreeRadius _parent;
- /*
- * 父节点,用来向上更新最大半径
- */
-
- QuadtreeRadius _upperRightChild;
- QuadtreeRadius _lowerRightChild;
- QuadtreeRadius _lowerLeftChild;
- QuadtreeRadius _upperLeftChild;
-
- List> _leafs = new List>();
-
- int _maxLeafsNumber;
- float _minSideLength;
-
- /*
- * 构造方法增加一个父节点参数,默认值是null。
- * 创建四叉树时不传参数,分割时传当前节点,这样根节点就没有父节点,其他节点都有父节点,向上更新半径就可以进行。
- */
- public QuadtreeRadius(float top, float right, float bottom, float left, int maxLeafNumber, float minSideLength, QuadtreeRadius parent = null)
- {
- _field = new QuadtreeWithRadiusField(top, right, bottom, left);
-
- _maxLeafsNumber = maxLeafNumber;
- _minSideLength = minSideLength;
-
- _parent = parent;
-
- DrawField(); //绘制节点范围,删除不影响功能
- }
-
- /*
- * 存入叶子
- * 在第零步的基础上增加了更新半径功能和返回存入是否成功功能
- */
- public bool SetLeaf(QuadtreeLeafRadius leaf)
- {
- if (DontHaveChildren())
- return SetLeafToSelf(leaf);
- else
- return SetLeafToChildren(leaf);
- }
-
- bool DontHaveChildren()
- {
- return _upperRightChild == null || _lowerRightChild == null || _lowerLeftChild == null || _upperLeftChild == null; //四个子节点是一起创建的,原理上说一个不存在另外三个也不存在,但假设只有一个不存在插入的叶子又在这个位置就要出事了
- }
-
- bool SetLeafToSelf(QuadtreeLeafRadius leaf)
- {
- _leafs.Add(leaf);
- UpdateMaxRadiusWhenSetLeaf(leaf);
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树梢节点存入位置在" + leaf.position + "半径是" + leaf.radius + "的叶子,存入后的最大半径是" + _maxRadius);
- CheckAndDoSplit();
- return true;
- }
-
- void UpdateMaxRadiusWhenSetLeaf(QuadtreeLeafRadius leaf)
- {
- if (leaf.radius > _maxRadius) //只有存入的叶子的半径超过了现在节点的最大半径才需要更新最大半径,存入更小的叶子并不会影响到检测。
- {
- _maxRadius = leaf.radius;
-
- CallParentUpdateMaxRadius();
- }
- }
-
- void CallParentUpdateMaxRadius()
- {
- if (_parent != null)
- _parent.UpwardUpdateMaxRadius();
- }
-
- void UpwardUpdateMaxRadius()
- {
- float newMaxRaiuds = GetChildrenMaxRadius();
- if (newMaxRaiuds != _maxRadius)
- {
- _maxRadius = newMaxRaiuds;
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树枝节点更新最大半径,更新后的最大半径是" + _maxRadius);
- CallParentUpdateMaxRadius();
- }
- }
-
- float GetChildrenMaxRadius()
- {
- return Mathf.Max(_upperRightChild._maxRadius, _lowerRightChild._maxRadius, _lowerLeftChild._maxRadius, _upperLeftChild._maxRadius);
- }
-
- bool SetLeafToChildren(QuadtreeLeafRadius leaf)
- {
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树枝节点向子节点存入位置在" + leaf.position + "半径是" + leaf.radius + "的叶子");
-
- if (_upperRightChild._field.Contains(leaf.position))
- return _upperRightChild.SetLeaf(leaf);
- if (_lowerRightChild._field.Contains(leaf.position))
- return _lowerRightChild.SetLeaf(leaf);
- if (_lowerLeftChild._field.Contains(leaf.position))
- return _lowerLeftChild.SetLeaf(leaf);
- if (_upperLeftChild._field.Contains(leaf.position))
- return _upperLeftChild.SetLeaf(leaf);
-
- Debug.LogError("向位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的节点存入叶子时发生错误:叶子不在所有子节点的范围里。"); //Debug.LogError:在Console面板输出Error,就是红色那种消息
- return false;
- }
-
- /*
- * 分割跟第零步完全一样
- */
- void CheckAndDoSplit()
- {
- if (_leafs.Count > _maxLeafsNumber && _field.width > _minSideLength && _field.height > _minSideLength)
- Split();
- }
-
- void Split()
- {
- Debug.Log("位置在((" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "))的树梢节点达到分割条件,进行分割");
-
- float xCenter = (_field.left + _field.right) / 2;
- float yCenter = (_field.bottom + _field.top) / 2;
-
- _upperRightChild = new QuadtreeRadius(_field.top, _field.right, yCenter, xCenter, _maxLeafsNumber, _minSideLength, this);
- _lowerRightChild = new QuadtreeRadius(yCenter, _field.right, _field.bottom, xCenter, _maxLeafsNumber, _minSideLength, this);
- _lowerLeftChild = new QuadtreeRadius(yCenter, xCenter, _field.bottom, _field.left, _maxLeafsNumber, _minSideLength, this);
- _upperLeftChild = new QuadtreeRadius(_field.top, xCenter, yCenter, _field.left, _maxLeafsNumber, _minSideLength, this);
-
- foreach (QuadtreeLeafRadius leaf in _leafs) //因为这里向子节点存入所有叶子,最大半径的叶子依然在范围里,不需要对最大半径做特别处理
- SetLeafToChildren(leaf);
- _leafs = null;
- }
-
- /*
- * 碰撞检测,比第零步多了个叶子半径,原理还是根据距离做判断
- */
- public T[] CheckCollision(Vector2 checkPoint, float checkRadius)
- {
- if (DontHaveChildren())
- return GetCollisionObjectsFromSelf(checkPoint, checkRadius);
- else
- return GetCollisionObjectsFromChildren(checkPoint, checkRadius);
- }
-
- T[] GetCollisionObjectsFromSelf(Vector2 checkPoint, float checkRadius)
- {
- List objs = new List();
-
- foreach (QuadtreeLeafRadius leaf in _leafs)
- if (Vector2.Distance(checkPoint, leaf.position) <= checkRadius + leaf.radius)
- objs.Add(leaf.obj);
-
- return objs.ToArray();
- }
-
- T[] GetCollisionObjectsFromChildren(Vector2 checkPoint, float checkRadius)
- {
- List objs = new List();
-
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _upperRightChild));
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _lowerRightChild));
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _lowerLeftChild));
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _upperLeftChild));
-
- return objs.ToArray();
- }
-
- T[] GetCollisionObjectsFromAChild(Vector2 checkPoint, float checkRadius, QuadtreeRadius child)
- {
- if (child._field.PointToFieldDistance(checkPoint) <= _maxRadius + checkRadius) //这里不光要考虑到检测半径,还要考虑到节点最大半径
- return child.CheckCollision(checkPoint, checkRadius);
- return new T[0];
- }
-
- /*
- * 移除叶子,比第零步多了更新最大半径的步骤和移除是否成功的返回
- */
- public bool RemoveLeaf(QuadtreeLeafRadius leaf)
- {
- if (DontHaveChildren())
- return RemoveLeafFromSelf(leaf);
- else
- return RemoveLeafFromChildren(leaf);
- }
-
- bool RemoveLeafFromSelf(QuadtreeLeafRadius leaf)
- {
- bool removeLeafBool = _leafs.Remove(leaf);
- UpdateMaxRadiusWhenRemoveLeaf();
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树梢节点移除位置在" + leaf.position + "半径是" + leaf.radius + "的叶子,移除后的最大半径是" + _maxRadius);
- return removeLeafBool;
- }
-
- void UpdateMaxRadiusWhenRemoveLeaf()
- {
- float newMaxRadius = GetLeafsMaxRadiusOnRemoveLeaf();
- if (_maxRadius != newMaxRadius) //只有在最大半径变化的时候才需要更新半径。
- {
- _maxRadius = newMaxRadius;
- CallParentUpdateMaxRadius();
- }
- }
-
- float GetLeafsMaxRadiusOnRemoveLeaf()
- {
- float newMaxRadius = Mathf.NegativeInfinity; //默认值设置为负无穷,原理在开头就说过,是为了在没有叶子的时候可以直接跳过节省计算量。
-
- foreach (QuadtreeLeafRadius leaf in _leafs)
- if (leaf.radius > newMaxRadius)
- if (leaf.radius == _maxRadius) //首先节点最大半径就是所有叶子里最大的半径,所以如果遍历到了和节点最大半径相同的叶子,就不会有更大的叶子了,直接return,节省计算量。
- return _maxRadius;
- else
- newMaxRadius = leaf.radius;
-
- return newMaxRadius;
- }
-
- bool RemoveLeafFromChildren(QuadtreeLeafRadius leaf)
- {
- Debug.Log("位置在((" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "))的树枝节点从子节点移除位置在" + leaf.position + "半径是" + leaf.radius + "的叶子");
-
- if (_upperRightChild._field.Contains(leaf.position))
- return _upperRightChild.RemoveLeaf(leaf);
- if (_lowerRightChild._field.Contains(leaf.position))
- return _lowerRightChild.RemoveLeaf(leaf);
- if (_lowerLeftChild._field.Contains(leaf.position))
- return _lowerLeftChild.RemoveLeaf(leaf);
- if (_upperLeftChild._field.Contains(leaf.position))
- return _upperLeftChild.RemoveLeaf(leaf);
-
- Debug.LogError("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的节点,移除叶子失败,叶子不在任何一个子节点的区域里");
- return false;
- }
-
- //从这开始是Debug代码,删掉不影响功能
- //绘制四叉树节点的范围
- void DrawField()
- {
- Vector3 upperRight = new Vector3(_field.right, _field.top, 0);
- Vector3 lowerRight = new Vector3(_field.right, _field.bottom, 0);
- Vector3 lowerLeft = new Vector3(_field.left, _field.bottom, 0);
- Vector3 upperLeft = new Vector3(_field.left, _field.top, 0);
-
- Debug.DrawLine(upperRight, lowerRight, Color.blue * 0.8f, Mathf.Infinity);
- Debug.DrawLine(lowerRight, lowerLeft, Color.blue * 0.8f, Mathf.Infinity);
- Debug.DrawLine(lowerLeft, upperLeft, Color.blue * 0.8f, Mathf.Infinity);
- Debug.DrawLine(upperLeft, upperRight, Color.blue * 0.8f, Mathf.Infinity);
- }
- }
-
- public class QuadtreeWithRadiusField
- {
- public float top
- {
- get { return _top; }
- }
- float _top;
- public float right
- {
- get { return _right; }
- }
- float _right;
- public float bottom
- {
- get { return _bottom; }
- }
- float _bottom;
- public float left
- {
- get { return _left; }
- }
- float _left;
- public float width
- {
- get { return _width; }
- }
- float _width;
- public float height
- {
- get { return _height; }
- }
- float _height;
-
- public QuadtreeWithRadiusField(float top, float right, float bottom, float left)
- {
- _top = top;
- _right = right;
- _bottom = bottom;
- _left = left;
-
- _width = _right - _left;
- _height = _top - _bottom;
- }
-
- //检测一个点是否在区域里
- public bool Contains(Vector2 point)
- {
- return point.x >= _left && point.x <= _right && point.y >= _bottom && point.y <= _top;
- }
-
- //计算一个点到区域的距离,如果在区域里则返回0
- public float PointToFieldDistance(Vector2 point)
- {
- float xDistance = Mathf.Max(0, point.x - _right, _left - point.x);
- float yDistance = Mathf.Max(0, point.y - _top, _bottom - point.y);
- return Mathf.Sqrt(xDistance * xDistance + yDistance * yDistance);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/Example Scene.unity b/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/Example Scene.unity
deleted file mode 100644
index 9b22197..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/Example Scene.unity
+++ /dev/null
@@ -1,1436 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_OcclusionBakeSettings:
- smallestOccluder: 5
- smallestHole: 0.25
- backfaceThreshold: 100
- m_SceneGUID: 00000000000000000000000000000000
- m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 9
- m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- m_FogMode: 3
- m_FogDensity: 0.01
- m_LinearFogStart: 0
- m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
- m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
- m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
- m_AmbientIntensity: 1
- m_AmbientMode: 0
- m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
- m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
- m_HaloStrength: 0.5
- m_FlareStrength: 1
- m_FlareFadeSpeed: 3
- m_HaloTexture: {fileID: 0}
- m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
- m_DefaultReflectionMode: 0
- m_DefaultReflectionResolution: 128
- m_ReflectionBounces: 1
- m_ReflectionIntensity: 1
- m_CustomReflection: {fileID: 0}
- m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.37311992, g: 0.38074034, b: 0.35872713, a: 1}
- m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 11
- m_GIWorkflowMode: 0
- m_GISettings:
- serializedVersion: 2
- m_BounceScale: 1
- m_IndirectOutputScale: 1
- m_AlbedoBoost: 1
- m_EnvironmentLightingMode: 0
- m_EnableBakedLightmaps: 1
- m_EnableRealtimeLightmaps: 1
- m_LightmapEditorSettings:
- serializedVersion: 12
- m_Resolution: 2
- m_BakeResolution: 40
- m_AtlasSize: 1024
- m_AO: 0
- m_AOMaxDistance: 1
- m_CompAOExponent: 1
- m_CompAOExponentDirect: 0
- m_ExtractAmbientOcclusion: 0
- m_Padding: 2
- m_LightmapParameters: {fileID: 0}
- m_LightmapsBakeMode: 1
- m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
- m_ReflectionCompression: 2
- m_MixedBakeMode: 2
- m_BakeBackend: 0
- m_PVRSampling: 1
- m_PVRDirectSampleCount: 32
- m_PVRSampleCount: 500
- m_PVRBounces: 2
- m_PVREnvironmentSampleCount: 500
- m_PVREnvironmentReferencePointCount: 2048
- m_PVRFilteringMode: 2
- m_PVRDenoiserTypeDirect: 0
- m_PVRDenoiserTypeIndirect: 0
- m_PVRDenoiserTypeAO: 0
- m_PVRFilterTypeDirect: 0
- m_PVRFilterTypeIndirect: 0
- m_PVRFilterTypeAO: 0
- m_PVREnvironmentMIS: 0
- m_PVRCulling: 1
- m_PVRFilteringGaussRadiusDirect: 1
- m_PVRFilteringGaussRadiusIndirect: 5
- m_PVRFilteringGaussRadiusAO: 2
- m_PVRFilteringAtrousPositionSigmaDirect: 0.5
- m_PVRFilteringAtrousPositionSigmaIndirect: 2
- m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
- m_ExportTrainingData: 0
- m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
---- !u!196 &4
-NavMeshSettings:
- serializedVersion: 2
- m_ObjectHideFlags: 0
- m_BuildSettings:
- serializedVersion: 2
- agentTypeID: 0
- agentRadius: 0.5
- agentHeight: 2
- agentSlope: 45
- agentClimb: 0.4
- ledgeDropHeight: 0
- maxJumpAcrossDistance: 0
- minRegionArea: 2
- manualCellSize: 0
- cellSize: 0.16666667
- manualTileSize: 0
- tileSize: 256
- accuratePlacement: 0
- debug:
- m_Flags: 0
- m_NavMeshData: {fileID: 0}
---- !u!1 &186484556
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 186484557}
- - component: {fileID: 186484558}
- m_Layer: 0
- m_Name: Collider (3)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &186484557
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 186484556}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &186484558
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 186484556}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &274950494
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 274950495}
- - component: {fileID: 274950496}
- m_Layer: 0
- m_Name: QuadtreeObject
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &274950495
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 274950494}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &274950496
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 274950494}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 04d310c0cfab925449c88fb6bc9f9d21, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _top: 1960
- _right: 1080
- _bottom: 0
- _left: 0
- _maxLeafsNumber: 5
- _minSideLength: 10
---- !u!1 &314418536
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 314418537}
- - component: {fileID: 314418538}
- m_Layer: 0
- m_Name: Collider (4)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &314418537
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 314418536}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 29, y: 294, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &314418538
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 314418536}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &365002318
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 365002321}
- - component: {fileID: 365002320}
- - component: {fileID: 365002319}
- m_Layer: 0
- m_Name: EventSystem
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &365002319
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 365002318}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_HorizontalAxis: Horizontal
- m_VerticalAxis: Vertical
- m_SubmitButton: Submit
- m_CancelButton: Cancel
- m_InputActionsPerSecond: 10
- m_RepeatDelay: 0.5
- m_ForceModuleActive: 0
---- !u!114 &365002320
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 365002318}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_FirstSelected: {fileID: 0}
- m_sendNavigationEvents: 1
- m_DragThreshold: 10
---- !u!4 &365002321
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 365002318}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &631734339
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 631734340}
- - component: {fileID: 631734341}
- m_Layer: 0
- m_Name: Collider (10)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &631734340
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 631734339}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 913, y: 1790, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 10
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &631734341
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 631734339}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &639922975
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 639922976}
- - component: {fileID: 639922977}
- m_Layer: 0
- m_Name: Collider (11)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &639922976
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 639922975}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 942, y: 1413, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 11
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &639922977
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 639922975}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &653339185
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 653339186}
- - component: {fileID: 653339187}
- m_Layer: 0
- m_Name: Collider (9)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &653339186
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 653339185}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 33, y: 979, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 9
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &653339187
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 653339185}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &715499024
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 715499025}
- m_Layer: 0
- m_Name: Colliders
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &715499025
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 715499024}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 2003620625}
- - {fileID: 903687110}
- - {fileID: 791188402}
- - {fileID: 186484557}
- - {fileID: 314418537}
- - {fileID: 1898850597}
- - {fileID: 1579233396}
- - {fileID: 1193084236}
- - {fileID: 1109666460}
- - {fileID: 653339186}
- - {fileID: 631734340}
- - {fileID: 639922976}
- - {fileID: 1037778242}
- - {fileID: 1137181614}
- - {fileID: 2139070464}
- - {fileID: 1208643017}
- - {fileID: 1194802015}
- - {fileID: 1234084022}
- - {fileID: 1171149216}
- m_Father: {fileID: 0}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &735751334
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 735751335}
- - component: {fileID: 735751337}
- - component: {fileID: 735751336}
- m_Layer: 5
- m_Name: Text
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &735751335
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 735751334}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 2141977218}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0.5, y: 0.5}
- m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 1200, y: 400}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &735751336
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 735751334}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0, g: 0, b: 0, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 0
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u8FD0\u884C\u540E\u5728Scene\uFF08\u573A\u666F\uFF09\u7A97\u53E3\u4E2D\u89C2\u770B\u6548\u679C\n\u7EA2\u8272\u7684\u8FB9\u6846\u662F\u56DB\u53C9\u6811\u7684\u6709\u6548\u533A\u57DF\n\u84DD\u8272\u7684\u77E9\u5F62\u662F\u56DB\u53C9\u6811\u7684\u53F6\u5B50\u8282\u70B9\u6240\u62E5\u6709\u7684\u533A\u57DF\n\u7EFF\u8272\u5706\u5708\u662F\u88AB\u68C0\u6D4B\u7684\u78B0\u649E\u5668\uFF0C\u53EF\u4EE5\u79FB\u52A8\u78B0\u649E\u5668\u548C\u8C03\u6574\u534A\u5F84\u89C2\u770B\u6548\u679C\n\u9EC4\u8272\u7684\u5706\u5708\u662F\u68C0\u6D4B\u78B0\u649E\u7684\u78B0\u649E\u5668\uFF0C\u53EF\u4EE5\u79FB\u52A8\u8FD9\u4E2A\u78B0\u649E\u5668\u89C2\u770B\u6548\u679C\n\u68C0\u6D4B\u78B0\u649E\u5668\u548C\u88AB\u68C0\u6D4B\u78B0\u649E\u5668\u901A\u8FC7\u9EC4\u8272\u7684\u7EBF\u8FDE\u63A5\u65F6\uFF0C\u8868\u793A\u8FD9\u4E24\u4E2A\u78B0\u649E\u5668\u53D1\u751F\u4E86\u78B0\u649E"
---- !u!222 &735751337
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 735751334}
- m_CullTransparentMesh: 0
---- !u!1 &791188401
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 791188402}
- - component: {fileID: 791188403}
- m_Layer: 0
- m_Name: Collider (2)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &791188402
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 791188401}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &791188403
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 791188401}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &903687109
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 903687110}
- - component: {fileID: 903687111}
- m_Layer: 0
- m_Name: Collider (1)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &903687110
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 903687109}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &903687111
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 903687109}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1037778241
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1037778242}
- - component: {fileID: 1037778243}
- m_Layer: 0
- m_Name: Collider (12)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1037778242
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1037778241}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 195, y: 1589, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 12
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1037778243
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1037778241}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &1109666459
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1109666460}
- - component: {fileID: 1109666461}
- m_Layer: 0
- m_Name: Collider (8)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1109666460
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1109666459}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 688, y: 495, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 8
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1109666461
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1109666459}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &1137181613
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1137181614}
- - component: {fileID: 1137181615}
- m_Layer: 0
- m_Name: Collider (13)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1137181614
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1137181613}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 708, y: 827, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 13
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1137181615
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1137181613}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 300
---- !u!1 &1169039927
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1169039931}
- - component: {fileID: 1169039930}
- - component: {fileID: 1169039929}
- - component: {fileID: 1169039928}
- m_Layer: 0
- m_Name: Main Camera
- m_TagString: MainCamera
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!81 &1169039928
-AudioListener:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1169039927}
- m_Enabled: 1
---- !u!124 &1169039929
-Behaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1169039927}
- m_Enabled: 1
---- !u!20 &1169039930
-Camera:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1169039927}
- m_Enabled: 1
- serializedVersion: 2
- m_ClearFlags: 2
- m_BackGroundColor: {r: 0.79607844, g: 1, b: 0.9454705, a: 0}
- m_projectionMatrixMode: 1
- m_GateFitMode: 2
- m_FOVAxisMode: 0
- m_SensorSize: {x: 36, y: 24}
- m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
- m_NormalizedViewPortRect:
- serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
- near clip plane: 0.3
- far clip plane: 1000
- field of view: 60
- orthographic: 0
- orthographic size: 5
- m_Depth: -1
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
- m_TargetDisplay: 0
- m_TargetEye: 3
- m_HDR: 1
- m_AllowMSAA: 1
- m_AllowDynamicResolution: 0
- m_ForceIntoRT: 0
- m_OcclusionCulling: 1
- m_StereoConvergence: 10
- m_StereoSeparation: 0.022
---- !u!4 &1169039931
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1169039927}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 1, z: -10}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1171149215
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1171149216}
- - component: {fileID: 1171149217}
- m_Layer: 0
- m_Name: Collider (18)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1171149216
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1171149215}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 987, y: 383, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 18
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1171149217
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1171149215}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1193084235
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1193084236}
- - component: {fileID: 1193084237}
- m_Layer: 0
- m_Name: Collider (7)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1193084236
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1193084235}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 405, y: 1067, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 7
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1193084237
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1193084235}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 400
---- !u!1 &1194802014
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1194802015}
- - component: {fileID: 1194802016}
- m_Layer: 0
- m_Name: Collider (16)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1194802015
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1194802014}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 615, y: 168, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 16
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1194802016
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1194802014}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1208643016
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1208643017}
- - component: {fileID: 1208643018}
- m_Layer: 0
- m_Name: Collider (15)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1208643017
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1208643016}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 327, y: 16, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 15
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1208643018
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1208643016}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &1234084021
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1234084022}
- - component: {fileID: 1234084023}
- m_Layer: 0
- m_Name: Collider (17)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1234084022
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1234084021}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 405, y: 476, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 17
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1234084023
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1234084021}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &1261394674
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1261394676}
- - component: {fileID: 1261394675}
- m_Layer: 0
- m_Name: CheckCollider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1261394675
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1261394674}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 463e8edc2f855ed4d882aca4ad342bae, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 300
---- !u!4 &1261394676
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1261394674}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 543, y: 1388, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1579233395
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1579233396}
- - component: {fileID: 1579233397}
- m_Layer: 0
- m_Name: Collider (6)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1579233396
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1579233395}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 503, y: 1927, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 6
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1579233397
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1579233395}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &1898850596
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1898850597}
- - component: {fileID: 1898850598}
- m_Layer: 0
- m_Name: Collider (5)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1898850597
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1898850596}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1060, y: 964, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1898850598
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1898850596}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
---- !u!1 &2003620624
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2003620625}
- - component: {fileID: 2003620626}
- m_Layer: 0
- m_Name: Collider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2003620625
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2003620624}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2003620626
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2003620624}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
---- !u!1 &2139070463
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2139070464}
- - component: {fileID: 2139070465}
- m_Layer: 0
- m_Name: Collider (14)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2139070464
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2139070463}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 210, y: 695, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 715499025}
- m_RootOrder: 14
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2139070465
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2139070463}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 1d6a4f64809c76e4c84b55d4516be79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
---- !u!1 &2141977214
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2141977218}
- - component: {fileID: 2141977217}
- - component: {fileID: 2141977216}
- - component: {fileID: 2141977215}
- m_Layer: 5
- m_Name: Canvas
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &2141977215
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2141977214}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_IgnoreReversedGraphics: 1
- m_BlockingObjects: 0
- m_BlockingMask:
- serializedVersion: 2
- m_Bits: 4294967295
---- !u!114 &2141977216
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2141977214}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_UiScaleMode: 1
- m_ReferencePixelsPerUnit: 100
- m_ScaleFactor: 1
- m_ReferenceResolution: {x: 1920, y: 1080}
- m_ScreenMatchMode: 0
- m_MatchWidthOrHeight: 0
- m_PhysicalUnit: 3
- m_FallbackScreenDPI: 96
- m_DefaultSpriteDPI: 96
- m_DynamicPixelsPerUnit: 1
---- !u!223 &2141977217
-Canvas:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2141977214}
- m_Enabled: 1
- serializedVersion: 3
- m_RenderMode: 0
- m_Camera: {fileID: 0}
- m_PlaneDistance: 100
- m_PixelPerfect: 0
- m_ReceivesEvents: 1
- m_OverrideSorting: 0
- m_OverridePixelPerfect: 0
- m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 0
- m_SortingLayerID: 0
- m_SortingOrder: 0
- m_TargetDisplay: 0
---- !u!224 &2141977218
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2141977214}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0, y: 0, z: 0}
- m_Children:
- - {fileID: 735751335}
- m_Father: {fileID: 0}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0, y: 0}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeColliderUpdate.cs b/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeColliderUpdate.cs
deleted file mode 100644
index 41f1ce9..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeColliderUpdate.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 碰撞器也要对应增加更新叶子数据的功能
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step2Update
-{
- public class QuadtreeColliderUpdate : MonoBehaviour
- {
- public float radius
- {
- get { return _radius; }
- set { _radius = value; }
- }
- [SerializeField]
- float _radius = 1;
-
- Transform _transform;
- QuadtreeLeafUpdate _leaf;
-
- private void Awake()
- {
- _transform = transform;
- _leaf = new QuadtreeLeafUpdate(gameObject, GetLeafPosition(), _radius);
- }
-
- Vector2 GetLeafPosition()
- {
- return new Vector2(_transform.position.x, _transform.position.y);
- }
-
- private void OnEnable()
- {
- UpdateLeaf(); //存入叶子之前先更新一次叶子数据确保存入无误。实际上前两步也应该在存入前更新一次叶子数据,但前两步因为没有更新干脆把碰撞器当做固定的处理了
- QuadtreeObjectUpdate.SetLeaf(_leaf);
- }
-
- private void Update()
- {
- UpdateLeaf();
- }
-
- void UpdateLeaf()
- {
- UpdateLeafPosition();
- UpdateLeafRadius();
- }
-
- void UpdateLeafPosition()
- {
- _leaf.position = GetLeafPosition();
- }
-
- void UpdateLeafRadius()
- {
- _leaf.radius = Mathf.Max(_transform.lossyScale.x, _transform.lossyScale.y) * _radius; //注意是 lossyScale 不是localScale,lossyScale 是全局缩放,可以应对父物体缩放后碰撞器一起缩放的情况
- /*
- * 加了个应对缩放的功能,因为四叉树是不知道物体的缩放的。
- * 不过因为是圆形碰撞器所以不能变成椭圆碰撞区域,只能选缩放比较大的那个轴做基准。
- * 你要是喜欢的话也可以改成小的。
- */
- }
-
- private void OnDisable()
- {
- QuadtreeObjectUpdate.RemoveLeaf(_leaf);
- }
-
- private void OnDrawGizmos()
- {
- if (!enabled) return;
-
- Gizmos.color = Color.green * 0.8f;
-
- MyGizmos.DrawCircle(transform.position, _radius * Mathf.Max(transform.lossyScale.x, transform.lossyScale.y), 60);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeDetectorUpdate.cs b/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeDetectorUpdate.cs
deleted file mode 100644
index 175c644..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeDetectorUpdate.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step2Update
-{
- public class QuadtreeDetectorUpdate : MonoBehaviour
- {
-#pragma warning disable 0649
- [SerializeField]
- float _radius;
-
- List _colliders;
-
- private void OnDrawGizmos()
- {
- DrawCheckRadius();
- DrawCollision();
- }
-
- void DrawCheckRadius()
- {
- Gizmos.color = Color.yellow * 0.8f;
- MyGizmos.DrawCircle(transform.position, _radius, 60);
- }
-
- void DrawCollision()
- {
- Gizmos.color = Color.yellow;
- foreach (GameObject collider in QuadtreeObjectUpdate.CheckCollision(transform.position, _radius))
- Gizmos.DrawLine(transform.position, collider.transform.position);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeObjectUpdate.cs b/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeObjectUpdate.cs
deleted file mode 100644
index 7631469..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeObjectUpdate.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 还是那个四叉树物体,就是加了个更新,还是要设置执行顺序在碰撞器之前。
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step2Update
-{
- public class QuadtreeObjectUpdate : MonoBehaviour
- {
-#pragma warning disable 0649
- [SerializeField]
- float _top;
-#pragma warning disable 0649
- [SerializeField]
- float _right;
-#pragma warning disable 0649
- [SerializeField]
- float _bottom;
-#pragma warning disable 0649
- [SerializeField]
- float _left;
-#pragma warning disable 0649
- [SerializeField]
- int _maxLeafsNumber;
-#pragma warning disable 0649
- [SerializeField]
- float _minSideLength;
-
- static QuadtreeUpdate _quadtree;
-
- private void Awake()
- {
- _quadtree = new QuadtreeUpdate(_top, _right, _bottom, _left, _maxLeafsNumber, _minSideLength);
- }
-
- public static bool SetLeaf(QuadtreeLeafUpdate leaf)
- {
- return _quadtree.SetLeaf(leaf);
- }
-
- /*
- * 每帧更新一次四叉树
- */
- private void Update()
- {
- _quadtree.Update();
- }
-
- public static GameObject[] CheckCollision(Vector2 checkPoint, float checkRadius)
- {
- return _quadtree.CheckCollision(checkPoint, checkRadius);
- }
-
- public static bool RemoveLeaf(QuadtreeLeafUpdate leaf)
- {
- return _quadtree.RemoveLeaf(leaf);
- }
-
- private void OnDrawGizmos()
- {
- Vector3 upperRight = new Vector3(_right, _top, transform.position.z);
- Vector3 lowerRight = new Vector3(_right, _bottom, transform.position.z);
- Vector3 lowerLeft = new Vector3(_left, _bottom, transform.position.z);
- Vector3 upperLeft = new Vector3(_left, _top, transform.position.z);
-
- Gizmos.color = Color.red * 0.8f;
-
- Gizmos.DrawLine(upperRight, lowerRight);
- Gizmos.DrawLine(lowerRight, lowerLeft);
- Gizmos.DrawLine(lowerLeft, upperLeft);
- Gizmos.DrawLine(upperLeft, upperRight);
- }
-
- private void OnValidate()
- {
- if (_top < _bottom)
- _top = _bottom;
- if (_right < _left)
- _right = _left;
- if (_maxLeafsNumber < 1)
- _maxLeafsNumber = 1;
- if (_minSideLength < 0.001f)
- _minSideLength = 0.001f;
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeUpdate.cs b/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeUpdate.cs
deleted file mode 100644
index f0c887f..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/2_Update/QuadtreeUpdate.cs
+++ /dev/null
@@ -1,531 +0,0 @@
-/*
- * 经过艰难险阻终于到这一步了:四叉树的更新
- *
- * 前面两步的四叉树都没有更新功能,只要一移动碰撞器就会出错,就是因为缺了一个更新叶子的功能,这一步就来完成这个功能。
- *
- * 更新分为两部分:叶子位置的更新和叶子半径的更新。
- * 叶子位置的更新是这样的:
- * 首先由根节点发起更新
- * 更新顺着树枝节点递归传递给每一个树梢节点
- * 树梢节点检测所有的叶子的位置
- * 如果叶子还在树梢节点的范围里就不用管它
- * 但如果叶子已经离开了树梢的范围则需要重新从根节点插入叶子,这样叶子就会自动到正确的树梢去
- *
- * 半径更新是这样的:
- * 还是根节点发出
- * 还是递归到每个树梢
- * 之后树梢要遍历所有叶子,找出新的最大半径
- * 如果这个新的最大半径和原本的最大半径一样那就什么都不用干
- * 但如果这个新的最大半径和原来的最大半径不一样,就要向上更新最大半径
- *
- * 看了上面两个之后我们可以考虑一下更新顺序:
- *
- * 是先位置后半径?还是先半径后位置?或者同时进行好像也不错,只用遍历一遍。
- *
- * 这个坑我已经踩过了,要先更新位置,因为叶子可以从一个树梢的范围移动到另一个树梢的范围,但在位置更新之前所有叶子都被视为在原来的树梢上,这样更新半径的时候就会把半径算到错误的树梢上。
- */
-
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step2Update
-{
- public class QuadtreeLeafUpdate
- {
- public T obj
- {
- get { return _obj; }
- }
- T _obj;
-
- public Vector2 position
- {
- get { return _position; }
- set { _position = value; }
- }
- Vector2 _position;
-
- public float radius
- {
- get { return _radius; }
- set { _radius = value; }
- }
- float _radius;
-
-
- public QuadtreeLeafUpdate(T obj, Vector2 position, float radius)
- {
- _obj = obj;
- _position = position;
- _radius = radius;
- }
- }
-
- public class QuadtreeUpdate
- {
- QuadtreeWithUpdateField _field;
-
- float _maxRadius = Mathf.NegativeInfinity;
-
- QuadtreeUpdate _root;
- /*
- * 根节点,前面已经说到更新位置时需要从根节点再次存入叶子。
- * 虽然可以通过向上递归父节点查到根节点但找个字段存下来计算量小。
- */
-
- QuadtreeUpdate _parent;
- QuadtreeUpdate _upperRightChild;
- QuadtreeUpdate _lowerRightChild;
- QuadtreeUpdate _lowerLeftChild;
- QuadtreeUpdate _upperLeftChild;
-
- List> _leafs = new List>();
-
- int _maxLeafsNumber;
- float _minSideLength;
-
- //构造,构造方法增加根节点参数,如果不传参则设为自身(只有创建根节点时不传参)
- public QuadtreeUpdate(float top, float right, float bottom, float left, int maxLeafNumber, float minSideLength, QuadtreeUpdate root = null, QuadtreeUpdate parent = null)
- {
- _field = new QuadtreeWithUpdateField(top, right, bottom, left);
-
- _maxLeafsNumber = maxLeafNumber;
- _minSideLength = minSideLength;
-
- _root = root != null ? root : this;
- /*
- * ? : 运算符,英文冒号(:)是运算符的一部分。
- * ? :运算符是唯一的三参数运算符(暂时的,但几十年都没有出第二个),所以很多人直接叫他“三目运算符”
- * 他的格式是这样的:
- * 条件 ? 参数1 : 参数2
- * 如果条件为真,返回参数1,条件为假,返回参数2。
- *
- * 特别方便,本来要if else四行的代码只要一行就搞定了
- */
-
- _parent = parent;
- }
-
- /*
- * 存入增加存入叶子不在整个四叉树范围内的情况的判断
- *
- * 这个判断在最开始就应该写上,但在前面并不会造成特别严重的后果,为了降低知识密度就没写,但在增加了更新之后,一旦有一个叶子的位置不在整个树的范围内,马上就会导致死循环
- */
- public bool SetLeaf(QuadtreeLeafUpdate leaf)
- {
- if (DontHaveChildren())
- return SetLeafToSelf(leaf);
- else
- return SetLeafToChildren(leaf);
- }
-
- bool DontHaveChildren()
- {
- return _upperRightChild == null || _lowerRightChild == null || _lowerLeftChild == null || _upperLeftChild == null; //四个子节点是一起创建的,原理上说一个不存在另外三个也不存在,但假设只有一个不存在插入的叶子又在这个位置就要出事了
- }
-
- bool SetLeafToSelf(QuadtreeLeafUpdate leaf)
- {
- if (this == _root && !_field.Contains(leaf.position))
- {
- Debug.LogError("存入叶子失败,叶子不在四叉树范围内");
- return false;
- }
-
- _leafs.Add(leaf);
- UpdateMaxRadiusWhenSetLeaf(leaf);
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树梢节点存入位置在" + leaf.position + "半径是" + leaf.radius + "的叶子,存入后的最大半径是" + _maxRadius);
- CheckAndDoSplit();
- return true;
- }
-
- void UpdateMaxRadiusWhenSetLeaf(QuadtreeLeafUpdate leaf)
- {
- if (leaf.radius > _maxRadius) //只有存入的叶子的半径超过了现在节点的最大半径才需要更新最大半径,存入更小的叶子并不会影响到检测。
- {
- _maxRadius = leaf.radius;
-
- CallParentUpdateMaxRadius();
- }
- }
-
- void CallParentUpdateMaxRadius()
- {
- if (_parent != null)
- _parent.UpwardUpdateMaxRadius();
- }
-
- void UpwardUpdateMaxRadius()
- {
- float newManRaiuds = GetChildrenMaxRadius();
- if (newManRaiuds != _maxRadius)
- {
- _maxRadius = newManRaiuds;
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树枝节点更新最大半径,更新后的最大半径是" + _maxRadius);
- CallParentUpdateMaxRadius();
- }
- }
-
- float GetChildrenMaxRadius()
- {
- return Mathf.Max(_upperRightChild._maxRadius, _lowerRightChild._maxRadius, _lowerLeftChild._maxRadius, _upperLeftChild._maxRadius);
- }
-
- bool SetLeafToChildren(QuadtreeLeafUpdate leaf)
- {
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树枝节点向子节点存入位置在" + leaf.position + "半径是" + leaf.radius + "的叶子");
-
- if (_upperRightChild._field.Contains(leaf.position))
- return _upperRightChild.SetLeaf(leaf);
- if (_lowerRightChild._field.Contains(leaf.position))
- return _lowerRightChild.SetLeaf(leaf);
- if (_lowerLeftChild._field.Contains(leaf.position))
- return _lowerLeftChild.SetLeaf(leaf);
- if (_upperLeftChild._field.Contains(leaf.position))
- return _upperLeftChild.SetLeaf(leaf);
-
- Debug.LogError("向位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的节点存入叶子时发生错误:叶子不在所有子节点的范围里。"); //Debug.LogError:在Console面板输出Error,就是红色那种消息
- return false;
- }
-
- /*
- * 【非常重要】在分割之前先进行一次更新,从这一步开始叶子可以移动,因此有可能在分割的时候有的叶子已经移出了这个树梢的范围,那么在分割完后重新存入叶子的过程中就会出现叶子不在所有子节点范围里的bug,为此在分割之前先进行一次更新
- *
- * 次要:在分割子节点时存入根节点,便于重新存入叶子
- */
- void CheckAndDoSplit()
- {
- if (_leafs.Count > _maxLeafsNumber && _field.width > _minSideLength && _field.height > _minSideLength)
- Split();
- }
-
- void Split()
- {
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树梢节点达到分割条件,进行分割");
-
- Update(); //这一步非常重要!隐形巨坑!有时候有的叶子已经脱离了他所在的树梢的范围但还没有更新,在分割完成后重新存入叶子的时候就会发生错误,在分割前先进行一次更新,因为只有自己的叶子要重新存入,所以自己调用更新自己就行,不需要根节点进行全部更新
-
- float xCenter = (_field.left + _field.right) / 2;
- float yCenter = (_field.bottom + _field.top) / 2;
-
- _upperRightChild = new QuadtreeUpdate(_field.top, _field.right, yCenter, xCenter, _maxLeafsNumber, _minSideLength, _root, this);
- _lowerRightChild = new QuadtreeUpdate(yCenter, _field.right, _field.bottom, xCenter, _maxLeafsNumber, _minSideLength, _root, this);
- _lowerLeftChild = new QuadtreeUpdate(yCenter, xCenter, _field.bottom, _field.left, _maxLeafsNumber, _minSideLength, _root, this);
- _upperLeftChild = new QuadtreeUpdate(_field.top, xCenter, yCenter, _field.left, _maxLeafsNumber, _minSideLength, _root, this);
-
- foreach (QuadtreeLeafUpdate leaf in _leafs)
- SetLeafToChildren(leaf);
- _leafs = null;
- }
-
- //更新
- public void Update()
- {
- UpdatePosition();
- UpdateMaxRadius();
-
- DrawField(); //绘制节点范围,删除不影响功能,移到更新是因为之前用无限时长绘制的线在场景切换后还是存在,但场景切换时四叉树已经销毁了
- }
-
- void UpdatePosition()
- {
- if (DontHaveChildren())
- UpdatePositionSelf();
- else
- UpdateChildrensPosition();
- }
-
- void UpdatePositionSelf()
- {
- List> resetLeafs = new List>();
- /*
- * 需要重新存入的叶子List,如果检测的同时进行重新存入有可能会导致有的叶子检测好几次,有的叶子没检测到。
- * 先遍历一次找到需要重新存入的叶子,之后再一起重新存入。
- */
-
- foreach (QuadtreeLeafUpdate leaf in _leafs)
- if (!_field.Contains(leaf.position))
- resetLeafs.Add(leaf);
-
- foreach (QuadtreeLeafUpdate leaf in resetLeafs)
- ResetLeaf(leaf);
- }
-
- void ResetLeaf(QuadtreeLeafUpdate leaf)
- {
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树梢节点移除位置在" + leaf.position + "半径是" + leaf.radius + "的叶子,重新存入树");
- RemoveLeafFromSelf(leaf);
- _root.SetLeaf(leaf);
- }
-
- void UpdateChildrensPosition()
- {
- _upperRightChild.UpdatePosition();
- _lowerRightChild.UpdatePosition();
- _lowerLeftChild.UpdatePosition();
- _upperLeftChild.UpdatePosition();
- }
-
- void UpdateMaxRadius()
- {
- if (DontHaveChildren())
- UpdateMaxRadiusSelf();
- else
- UpdateChildrensMaxRadius();
- }
-
- void UpdateMaxRadiusSelf()
- {
- float newMaxRadius = GetLeafsMaxRadiusOnUpdate();
- if (newMaxRadius != _maxRadius)
- {
- _maxRadius = newMaxRadius;
- CallParentUpdateMaxRadius();
- }
- }
-
- float GetLeafsMaxRadiusOnUpdate()
- {
- float newMaxRadius = Mathf.NegativeInfinity;
-
- foreach (QuadtreeLeafUpdate leaf in _leafs)
- if (leaf.radius > newMaxRadius)
- newMaxRadius = leaf.radius;
-
- return newMaxRadius;
- /*
- * 看起来和移除叶子时候的那个获取最大叶子最大半径的方法很像。
- * 但因为碰撞器的半径可能会增大,所以不能遇到现在的最大半径就返回。
- */
- }
-
- void UpdateChildrensMaxRadius()
- {
- _upperRightChild.UpdateMaxRadius();
- _lowerRightChild.UpdateMaxRadius();
- _lowerLeftChild.UpdateMaxRadius();
- _upperLeftChild.UpdateMaxRadius();
- }
-
- //检测
- public T[] CheckCollision(Vector2 checkPoint, float checkRadius)
- {
- if (DontHaveChildren())
- return GetCollisionObjectsFromSelf(checkPoint, checkRadius);
- else
- return GetCollisionObjectsFromChildren(checkPoint, checkRadius);
- }
-
- T[] GetCollisionObjectsFromSelf(Vector2 checkPoint, float checkRadius)
- {
- List objs = new List();
-
- foreach (QuadtreeLeafUpdate leaf in _leafs)
- if (Vector2.Distance(checkPoint, leaf.position) <= checkRadius + leaf.radius)
- objs.Add(leaf.obj);
-
- return objs.ToArray();
- }
-
- T[] GetCollisionObjectsFromChildren(Vector2 checkPoint, float checkRadius)
- {
- List objs = new List();
-
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _upperRightChild));
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _lowerRightChild));
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _lowerLeftChild));
- objs.AddRange(GetCollisionObjectsFromAChild(checkPoint, checkRadius, _upperLeftChild));
-
- return objs.ToArray();
- }
- T[] GetCollisionObjectsFromAChild(Vector2 checkPoint, float checkRadius, QuadtreeUpdate child)
- {
- if (child._field.PointToFieldDistance(checkPoint) <= _maxRadius + checkRadius) //这里不光要考虑到检测半径,还要考虑到节点最大半径
- return child.CheckCollision(checkPoint, checkRadius);
- return new T[0];
- }
-
- //移除,增加了全树移除
- public bool RemoveLeaf(QuadtreeLeafUpdate leaf)
- {
- if (DontHaveChildren())
- return RemoveLeafFromSelf(leaf);
- else
- return RemoveLeafFromChildren(leaf);
- }
-
- bool RemoveLeafFromSelf(QuadtreeLeafUpdate leaf)
- {
- if (DoRemoveLeafFromSelf(leaf))
- return true;
- return _root.RemoveLeafInTotalTree(leaf);
- }
-
- bool DoRemoveLeafFromSelf(QuadtreeLeafUpdate leaf)
- {
- if (_leafs.Remove(leaf)) //List的Remove返回有没有成功从List里移除要移除的元素,元素不存在的时候返回是 false,有了这个返回值就可以非常轻松的判断出这个树梢是不是成功移除了叶子
- {
- UpdateMaxRadiusWhenRemoveLeaf();
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树梢节点移除位置在" + leaf.position + "半径是" + leaf.radius + "的叶子,移除后的最大半径是" + _maxRadius);
- return true;
- }
- return false;
- }
-
- void UpdateMaxRadiusWhenRemoveLeaf()
- {
- float newMaxRadius = GetLeafsMaxRadiusOnRemoveLeaf();
- if (_maxRadius != newMaxRadius)
- {
- _maxRadius = newMaxRadius;
- Debug.Log("位置在" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + "的树梢节点半径发生变化,新半径是" + _maxRadius);
- CallParentUpdateMaxRadius();
- }
- }
-
- float GetLeafsMaxRadiusOnRemoveLeaf()
- {
- float newMaxRadius = Mathf.NegativeInfinity;
-
- foreach (QuadtreeLeafUpdate leaf in _leafs)
- if (leaf.radius > newMaxRadius)
- if (leaf.radius == _maxRadius)
- return _maxRadius;
- else
- newMaxRadius = leaf.radius;
-
- return newMaxRadius;
- }
-
- bool RemoveLeafFromChildren(QuadtreeLeafUpdate leaf)
- {
- Debug.Log("位置在(" + _field.top + "," + _field.right + "," + _field.bottom + "," + _field.left + ")的树枝节点从子节点移除位置在" + leaf.position + "半径是" + leaf.radius + "的叶子");
- if (_upperRightChild._field.Contains(leaf.position))
- return _upperRightChild.RemoveLeaf(leaf);
- if (_lowerRightChild._field.Contains(leaf.position))
- return _lowerRightChild.RemoveLeaf(leaf);
- if (_lowerLeftChild._field.Contains(leaf.position))
- return _lowerLeftChild.RemoveLeaf(leaf);
- if (_upperLeftChild._field.Contains(leaf.position))
- return _upperLeftChild.RemoveLeaf(leaf);
- return _root.RemoveLeafInTotalTree(leaf);
- }
-
- /*
- * 全树移除,不通过位置判断而是直接遍历整棵树移除叶子
- *
- * 实际上在上一步就应该增加全树移除,但考虑到上一步没有实用性为了降低知识密度就没加。
- *
- * 前面的移除都是根据叶子位置找到树梢之后进行删除,但这个寻找方式是有缺陷的,在几种情况下都会失效
- * 1.叶子移出了树梢范围,叶子不在原本的树梢上按照位置当然找不到正确的树梢,不要以这种情况为有了更新就不会发生,更新每帧只进行一次,叶子的移动则是不限量的
- * 2.叶子移出了整棵树的范围,情况更严重,从根节点开始就不可能找得到叶子所在的树梢
- * 3.叶子根本不在树里,几乎找茬的情况,无论在哪个树梢都不可能找到这个叶子,更不可能移除掉
- *
- * 如果是情况1,可以通过更新树或全树移除来解决,但对于2和3更新无异于自寻死路,这样唯一的解就是不通过位置寻找树梢而是遍历整棵树找到这个叶子删掉他
- */
- bool RemoveLeafInTotalTree(QuadtreeLeafUpdate leaf)
- {
- if (DontHaveChildren())
- return DoRemoveLeafFromSelf(leaf);
- else
- return RemoveLeafInTotalTreeFromChildren(leaf);
- }
-
- bool RemoveLeafInTotalTreeFromChildren(QuadtreeLeafUpdate leaf)
- {
- if (_upperRightChild.RemoveLeafInTotalTree(leaf))
- return true; //如果子节点移除成功了,那就说明不需要继续遍历剩下的节点了,直接返回 true
- if (_lowerRightChild.RemoveLeafInTotalTree(leaf))
- return true;
- if (_lowerLeftChild.RemoveLeafInTotalTree(leaf))
- return true;
- if (_upperLeftChild.RemoveLeafInTotalTree(leaf))
- return true;
- return false;
- }
-
- //从这开始是Debug代码,删掉不影响功能
- //绘制四叉树节点的范围
- void DrawField()
- {
- if (DontHaveChildren())
- {
- Vector3 upperRight = new Vector3(_field.right, _field.top, 0);
- Vector3 lowerRight = new Vector3(_field.right, _field.bottom, 0);
- Vector3 lowerLeft = new Vector3(_field.left, _field.bottom, 0);
- Vector3 upperLeft = new Vector3(_field.left, _field.top, 0);
-
- Debug.DrawLine(upperRight, lowerRight, Color.blue * 0.8f, 0);
- Debug.DrawLine(lowerRight, lowerLeft, Color.blue * 0.8f, 0);
- Debug.DrawLine(lowerLeft, upperLeft, Color.blue * 0.8f, 0);
- Debug.DrawLine(upperLeft, upperRight, Color.blue * 0.8f, 0);
- }
- else
- {
- _upperRightChild.DrawField();
- _lowerRightChild.DrawField();
- _lowerLeftChild.DrawField();
- _upperLeftChild.DrawField();
- }
- }
- }
-
- public class QuadtreeWithUpdateField
- {
- public float top
- {
- get { return _top; }
- }
- float _top;
- public float right
- {
- get { return _right; }
- }
- float _right;
- public float bottom
- {
- get { return _bottom; }
- }
- float _bottom;
- public float left
- {
- get { return _left; }
- }
- float _left;
- public float width
- {
- get { return _width; }
- }
- float _width;
- public float height
- {
- get { return _height; }
- }
- float _height;
-
- public QuadtreeWithUpdateField(float top, float right, float bottom, float left)
- {
- _top = top;
- _right = right;
- _bottom = bottom;
- _left = left;
-
- _width = _right - _left;
- _height = _top - _bottom;
- }
-
- //检测一个点是否在区域里
- public bool Contains(Vector2 point)
- {
- return point.x >= _left && point.x <= _right && point.y >= _bottom && point.y <= _top;
- }
-
- //计算一个点到区域的距离,如果在区域里则返回0
- public float PointToFieldDistance(Vector2 point)
- {
- float xDistance = Mathf.Max(0, point.x - _right, _left - point.x);
- float yDistance = Mathf.Max(0, point.y - _top, _bottom - point.y);
- return Mathf.Sqrt(xDistance * xDistance + yDistance * yDistance);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/Example Scene.unity b/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/Example Scene.unity
deleted file mode 100644
index 0e8c8b2..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/Example Scene.unity
+++ /dev/null
@@ -1,1653 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_OcclusionBakeSettings:
- smallestOccluder: 5
- smallestHole: 0.25
- backfaceThreshold: 100
- m_SceneGUID: 00000000000000000000000000000000
- m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 9
- m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- m_FogMode: 3
- m_FogDensity: 0.01
- m_LinearFogStart: 0
- m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
- m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
- m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
- m_AmbientIntensity: 1
- m_AmbientMode: 0
- m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
- m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
- m_HaloStrength: 0.5
- m_FlareStrength: 1
- m_FlareFadeSpeed: 3
- m_HaloTexture: {fileID: 0}
- m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
- m_DefaultReflectionMode: 0
- m_DefaultReflectionResolution: 128
- m_ReflectionBounces: 1
- m_ReflectionIntensity: 1
- m_CustomReflection: {fileID: 0}
- m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.37311992, g: 0.38074034, b: 0.35872713, a: 1}
- m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 11
- m_GIWorkflowMode: 0
- m_GISettings:
- serializedVersion: 2
- m_BounceScale: 1
- m_IndirectOutputScale: 1
- m_AlbedoBoost: 1
- m_EnvironmentLightingMode: 0
- m_EnableBakedLightmaps: 1
- m_EnableRealtimeLightmaps: 1
- m_LightmapEditorSettings:
- serializedVersion: 12
- m_Resolution: 2
- m_BakeResolution: 40
- m_AtlasSize: 1024
- m_AO: 0
- m_AOMaxDistance: 1
- m_CompAOExponent: 1
- m_CompAOExponentDirect: 0
- m_ExtractAmbientOcclusion: 0
- m_Padding: 2
- m_LightmapParameters: {fileID: 0}
- m_LightmapsBakeMode: 1
- m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
- m_ReflectionCompression: 2
- m_MixedBakeMode: 2
- m_BakeBackend: 0
- m_PVRSampling: 1
- m_PVRDirectSampleCount: 32
- m_PVRSampleCount: 500
- m_PVRBounces: 2
- m_PVREnvironmentSampleCount: 500
- m_PVREnvironmentReferencePointCount: 2048
- m_PVRFilteringMode: 2
- m_PVRDenoiserTypeDirect: 0
- m_PVRDenoiserTypeIndirect: 0
- m_PVRDenoiserTypeAO: 0
- m_PVRFilterTypeDirect: 0
- m_PVRFilterTypeIndirect: 0
- m_PVRFilterTypeAO: 0
- m_PVREnvironmentMIS: 0
- m_PVRCulling: 1
- m_PVRFilteringGaussRadiusDirect: 1
- m_PVRFilteringGaussRadiusIndirect: 5
- m_PVRFilteringGaussRadiusAO: 2
- m_PVRFilteringAtrousPositionSigmaDirect: 0.5
- m_PVRFilteringAtrousPositionSigmaIndirect: 2
- m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
- m_ExportTrainingData: 0
- m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
---- !u!196 &4
-NavMeshSettings:
- serializedVersion: 2
- m_ObjectHideFlags: 0
- m_BuildSettings:
- serializedVersion: 2
- agentTypeID: 0
- agentRadius: 0.5
- agentHeight: 2
- agentSlope: 45
- agentClimb: 0.4
- ledgeDropHeight: 0
- maxJumpAcrossDistance: 0
- minRegionArea: 2
- manualCellSize: 0
- cellSize: 0.16666667
- manualTileSize: 0
- tileSize: 256
- accuratePlacement: 0
- debug:
- m_Flags: 0
- m_NavMeshData: {fileID: 0}
---- !u!1 &28088249
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 28088250}
- - component: {fileID: 28088251}
- m_Layer: 0
- m_Name: Collider (14)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &28088250
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 28088249}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 22, y: 354, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 14
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &28088251
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 28088249}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
- _checkCollision: 0
---- !u!1 &166172533
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 166172534}
- - component: {fileID: 166172535}
- - component: {fileID: 166172536}
- m_Layer: 0
- m_Name: CheckCollider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &166172534
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 166172533}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 540, y: 980, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &166172535
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 166172533}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 300
- _checkCollision: 1
---- !u!114 &166172536
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 166172533}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 79fc20c78cae83b49ab56682ee4f4ef8, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!1 &225063062
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 225063063}
- - component: {fileID: 225063064}
- m_Layer: 0
- m_Name: Collider (12)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &225063063
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 225063062}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 137, y: 1622, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 12
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &225063064
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 225063062}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &267807784
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 267807785}
- - component: {fileID: 267807786}
- m_Layer: 0
- m_Name: Collider (7)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &267807785
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 267807784}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 292, y: 1892, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 7
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &267807786
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 267807784}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
- _checkCollision: 0
---- !u!1 &277191813
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 277191815}
- - component: {fileID: 277191814}
- m_Layer: 0
- m_Name: Collider
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &277191814
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 277191813}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
- _checkCollision: 0
---- !u!4 &277191815
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 277191813}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &475800165
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 475800166}
- m_Layer: 0
- m_Name: Colliders
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &475800166
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 475800165}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 277191815}
- - {fileID: 1224400594}
- - {fileID: 1588951571}
- - {fileID: 1105880774}
- - {fileID: 2101465706}
- - {fileID: 1168797284}
- - {fileID: 845522111}
- - {fileID: 267807785}
- - {fileID: 1978251081}
- - {fileID: 702274662}
- - {fileID: 760352672}
- - {fileID: 1210468478}
- - {fileID: 225063063}
- - {fileID: 747963148}
- - {fileID: 28088250}
- - {fileID: 588042407}
- - {fileID: 1809400056}
- - {fileID: 743454856}
- - {fileID: 2068523312}
- - {fileID: 782024763}
- - {fileID: 1150319562}
- - {fileID: 823974404}
- - {fileID: 1752678073}
- m_Father: {fileID: 0}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &588042406
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 588042407}
- - component: {fileID: 588042408}
- m_Layer: 0
- m_Name: Collider (15)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &588042407
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 588042406}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 332, y: 21, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 15
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &588042408
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 588042406}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &702274661
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 702274662}
- - component: {fileID: 702274663}
- m_Layer: 0
- m_Name: Collider (9)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &702274662
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 702274661}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 835, y: 350, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 9
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &702274663
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 702274661}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &743454855
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 743454856}
- - component: {fileID: 743454857}
- m_Layer: 0
- m_Name: Collider (17)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &743454856
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 743454855}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 551, y: 1663, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 17
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &743454857
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 743454855}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &747963147
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 747963148}
- - component: {fileID: 747963149}
- m_Layer: 0
- m_Name: Collider (13)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &747963148
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 747963147}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 766, y: 1814, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 13
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &747963149
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 747963147}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
- _checkCollision: 0
---- !u!1 &760352671
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 760352672}
- - component: {fileID: 760352673}
- m_Layer: 0
- m_Name: Collider (10)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &760352672
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 760352671}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1027, y: 628, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 10
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &760352673
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 760352671}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &782024762
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 782024763}
- - component: {fileID: 782024764}
- m_Layer: 0
- m_Name: Collider (19)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &782024763
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 782024762}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 774, y: 765, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 19
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &782024764
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 782024762}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &823974403
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 823974404}
- - component: {fileID: 823974405}
- m_Layer: 0
- m_Name: Collider (21)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &823974404
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 823974403}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 432, y: 1312, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 21
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &823974405
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 823974403}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 400
- _checkCollision: 0
---- !u!1 &845522110
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 845522111}
- - component: {fileID: 845522112}
- m_Layer: 0
- m_Name: Collider (6)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &845522111
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 845522110}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 607, y: 35, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 6
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &845522112
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 845522110}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &1036592704
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1036592707}
- - component: {fileID: 1036592706}
- - component: {fileID: 1036592705}
- m_Layer: 0
- m_Name: EventSystem
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1036592705
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1036592704}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_HorizontalAxis: Horizontal
- m_VerticalAxis: Vertical
- m_SubmitButton: Submit
- m_CancelButton: Cancel
- m_InputActionsPerSecond: 10
- m_RepeatDelay: 0.5
- m_ForceModuleActive: 0
---- !u!114 &1036592706
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1036592704}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_FirstSelected: {fileID: 0}
- m_sendNavigationEvents: 1
- m_DragThreshold: 10
---- !u!4 &1036592707
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1036592704}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1105880773
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1105880774}
- - component: {fileID: 1105880775}
- m_Layer: 0
- m_Name: Collider (3)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1105880774
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1105880773}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1105880775
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1105880773}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
- _checkCollision: 0
---- !u!1 &1150319561
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1150319562}
- - component: {fileID: 1150319563}
- m_Layer: 0
- m_Name: Collider (20)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1150319562
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1150319561}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 391, y: 874, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 20
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1150319563
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1150319561}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 300
- _checkCollision: 0
---- !u!1 &1168797283
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1168797284}
- - component: {fileID: 1168797285}
- m_Layer: 0
- m_Name: Collider (5)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1168797284
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1168797283}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 32, y: 792, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1168797285
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1168797283}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
- _checkCollision: 0
---- !u!1 &1210468477
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1210468478}
- - component: {fileID: 1210468479}
- m_Layer: 0
- m_Name: Collider (11)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1210468478
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1210468477}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 493, y: 322, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 11
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1210468479
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1210468477}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
- _checkCollision: 0
---- !u!1 &1222364886
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1222364887}
- - component: {fileID: 1222364889}
- - component: {fileID: 1222364888}
- m_Layer: 5
- m_Name: Text
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1222364887
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1222364886}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 2019460803}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0.5, y: 0.5}
- m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 1200, y: 400}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1222364888
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1222364886}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0, g: 0, b: 0, a: 1}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
- Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 0
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u8FD0\u884C\u540E\u5728Scene\uFF08\u573A\u666F\uFF09\u7A97\u53E3\u4E2D\u89C2\u770B\u6548\u679C\n\u7EA2\u8272\u7684\u8FB9\u6846\u662F\u56DB\u53C9\u6811\u7684\u6709\u6548\u533A\u57DF\n\u84DD\u8272\u7684\u77E9\u5F62\u662F\u56DB\u53C9\u6811\u7684\u53F6\u5B50\u8282\u70B9\u6240\u62E5\u6709\u7684\u533A\u57DF\n\u7EFF\u8272\u5706\u5708\u662F\u88AB\u68C0\u6D4B\u7684\u78B0\u649E\u5668\uFF0C\u53EF\u4EE5\u79FB\u52A8\u78B0\u649E\u5668\u548C\u8C03\u6574\u534A\u5F84\u89C2\u770B\u6548\u679C\n\u9EC4\u8272\u7684\u5706\u5708\u662F\u68C0\u6D4B\u78B0\u649E\u7684\u78B0\u649E\u5668\uFF0C\u53EF\u4EE5\u79FB\u52A8\u8FD9\u4E2A\u78B0\u649E\u5668\u89C2\u770B\u6548\u679C\n\u68C0\u6D4B\u78B0\u649E\u5668\u548C\u88AB\u68C0\u6D4B\u78B0\u649E\u5668\u901A\u8FC7\u9EC4\u8272\u7684\u7EBF\u8FDE\u63A5\u65F6\uFF0C\u8868\u793A\u8FD9\u4E24\u4E2A\u78B0\u649E\u5668\u53D1\u751F\u4E86\u78B0\u649E"
---- !u!222 &1222364889
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1222364886}
- m_CullTransparentMesh: 0
---- !u!1 &1224400593
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1224400594}
- - component: {fileID: 1224400595}
- m_Layer: 0
- m_Name: Collider (1)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1224400594
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1224400593}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1224400595
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1224400593}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
- _checkCollision: 0
---- !u!1 &1243215199
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1243215203}
- - component: {fileID: 1243215202}
- - component: {fileID: 1243215201}
- - component: {fileID: 1243215200}
- m_Layer: 0
- m_Name: Main Camera
- m_TagString: MainCamera
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!81 &1243215200
-AudioListener:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1243215199}
- m_Enabled: 1
---- !u!124 &1243215201
-Behaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1243215199}
- m_Enabled: 1
---- !u!20 &1243215202
-Camera:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1243215199}
- m_Enabled: 1
- serializedVersion: 2
- m_ClearFlags: 2
- m_BackGroundColor: {r: 0.7216981, g: 1, b: 0.97969437, a: 0}
- m_projectionMatrixMode: 1
- m_GateFitMode: 2
- m_FOVAxisMode: 0
- m_SensorSize: {x: 36, y: 24}
- m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
- m_NormalizedViewPortRect:
- serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
- near clip plane: 0.3
- far clip plane: 1000
- field of view: 60
- orthographic: 0
- orthographic size: 5
- m_Depth: -1
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
- m_TargetDisplay: 0
- m_TargetEye: 3
- m_HDR: 1
- m_AllowMSAA: 1
- m_AllowDynamicResolution: 0
- m_ForceIntoRT: 0
- m_OcclusionCulling: 1
- m_StereoConvergence: 10
- m_StereoSeparation: 0.022
---- !u!4 &1243215203
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1243215199}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 1, z: -10}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &1588951570
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1588951571}
- - component: {fileID: 1588951572}
- m_Layer: 0
- m_Name: Collider (2)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1588951571
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1588951570}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1080, y: 1960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1588951572
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1588951570}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 100
- _checkCollision: 0
---- !u!1 &1670821779
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1670821780}
- - component: {fileID: 1670821781}
- m_Layer: 0
- m_Name: QuadtreeObject
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1670821780
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1670821779}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1670821781
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1670821779}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b757618e1e39919479d1825501bc86f5, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _top: 1960
- _right: 1080
- _bottom: 0
- _left: 0
- _maxLeafsNumber: 5
- _minSideLength: 10
---- !u!1 &1752678072
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1752678073}
- - component: {fileID: 1752678074}
- m_Layer: 0
- m_Name: Collider (22)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1752678073
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1752678072}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1043, y: 1549, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 22
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1752678074
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1752678072}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 125
- _checkCollision: 0
---- !u!1 &1809400055
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1809400056}
- - component: {fileID: 1809400057}
- m_Layer: 0
- m_Name: Collider (16)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1809400056
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1809400055}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 245, y: 555, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 16
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1809400057
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1809400055}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
- _checkCollision: 0
---- !u!1 &1978251080
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1978251081}
- - component: {fileID: 1978251082}
- m_Layer: 0
- m_Name: Collider (8)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1978251081
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1978251080}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 23, y: 1135, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 8
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1978251082
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1978251080}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
- _checkCollision: 0
---- !u!1 &2019460799
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2019460803}
- - component: {fileID: 2019460802}
- - component: {fileID: 2019460801}
- - component: {fileID: 2019460800}
- m_Layer: 5
- m_Name: Canvas
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &2019460800
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2019460799}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_IgnoreReversedGraphics: 1
- m_BlockingObjects: 0
- m_BlockingMask:
- serializedVersion: 2
- m_Bits: 4294967295
---- !u!114 &2019460801
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2019460799}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_UiScaleMode: 1
- m_ReferencePixelsPerUnit: 100
- m_ScaleFactor: 1
- m_ReferenceResolution: {x: 1920, y: 1080}
- m_ScreenMatchMode: 0
- m_MatchWidthOrHeight: 0
- m_PhysicalUnit: 3
- m_FallbackScreenDPI: 96
- m_DefaultSpriteDPI: 96
- m_DynamicPixelsPerUnit: 1
---- !u!223 &2019460802
-Canvas:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2019460799}
- m_Enabled: 1
- serializedVersion: 3
- m_RenderMode: 0
- m_Camera: {fileID: 0}
- m_PlaneDistance: 100
- m_PixelPerfect: 0
- m_ReceivesEvents: 1
- m_OverrideSorting: 0
- m_OverridePixelPerfect: 0
- m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 0
- m_SortingLayerID: 0
- m_SortingOrder: 0
- m_TargetDisplay: 0
---- !u!224 &2019460803
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2019460799}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0, y: 0, z: 0}
- m_Children:
- - {fileID: 1222364887}
- m_Father: {fileID: 0}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0, y: 0}
---- !u!1 &2068523311
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2068523312}
- - component: {fileID: 2068523313}
- m_Layer: 0
- m_Name: Collider (18)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2068523312
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2068523311}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 1048, y: 1002, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 18
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2068523313
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2068523311}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 200
- _checkCollision: 0
---- !u!1 &2101465705
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2101465706}
- - component: {fileID: 2101465707}
- m_Layer: 0
- m_Name: Collider (4)
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2101465706
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2101465705}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 903, y: 1230, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 475800166}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &2101465707
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2101465705}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7eca38d80d195f7458bde49c04fc0548, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _radius: 150
- _checkCollision: 0
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeColliderEvent.cs b/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeColliderEvent.cs
deleted file mode 100644
index 3325b30..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeColliderEvent.cs
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 碰撞器增加了一个碰撞发生的“事件”,用来实现类似Unity的 OnCollision 的效果。
- *
- * 事件和委托难倒了不少的新人,而且事件委托并不是四叉树的一部分,但她真的太好用了,所以我还是写了这一步。
- *
- * 直接解释事件委托太困难、太难理解,我们先来看一下Unity的“面向组件”风格,有助于理解事件委托。
- *
- * “面向组件”是基于面向对象的编程方式,是为了应对面向对象的大量继承导致的灵活度严重下跌而出现的编程方式。
- * 面向对象的编程思路是把一个对象视为一个整体,所有功能写在一个类里。
- * 面向组件则是把一个对象视为一个组合体,每个功能写成一个类,每个功能可以独立运行。
- *
- * 面向对象可以解决继承的终极问题:树人问题。
- * 树人这个生物,是植物还是动物?
- * 如果他继承自植物,你需要把动物类里的进食等方法复制一份到树人里面,你违反了DRY(Don't repeat yourself)。
- * 如果继承自动物呢?你需要把植物的光合作用、吸收土壤养分、易燃等写进树人里,你又违反了DRY。
- * 如果继承自生物,你双重违反了DRY。
- * 这个问题根本不能用继承解决,要走接口,而在Unity里的解决方式是:把植物和动物的组件都挂上去。
- *
- * 了解面向组件后回到碰撞器的问题上
- *
- * 碰撞器负责检测碰撞,这是只做一件事原则。
- * 你可能想要在碰撞器碰撞时造成减血,或者直接死亡,这并不是碰撞器需要做的事情,这些事情交给生命组件。
- * 之后你可能想要在碰撞时发出闪光,这是个纯视觉效果的功能,与生命值无关。他也可以独立出来,交给碰撞特效组件。
- * 之后你又想要一个在碰撞发生的时候会做一个记录的功能,这样你就能通过数据分析出要不要做些改进。这个功能只在开发过程有用,根本不会发布出去,当然要独立出来,交给碰撞记录组件。
- * 加上记录组件后你又觉得闪光特效太晃眼了要暂时关掉,你只需要把这个组件移除掉就行,等到要用的时候再挂载上去又能正常工作。
- *
- * 在这种轻松的想要什么就加什么想减什么就减什么的开发方式前面有一个障碍:
- * 生命组件、特效组件、记录组件,他们都是在碰撞发生的时候执行自己的方法,但他们自己没有检测碰撞的方法,这活是碰撞器的。
- * 你要怎么样让碰撞器在每次发生碰撞时都能通知到这些组件呢?或许你可以写下好几个调用,一个个的调用,一个都不漏。
- * 但这之后如果你又想再增加一个发生碰撞时会输出Debug信息的组件你要怎么办?你需要准备一个输出信息组件,还需要在碰撞器里再写一个调用,这违反了开放封闭原则。
- * 一个两个你可以写,如果是三五十个你就会疯掉了,这个问题不能用这么暴力的方法解决。
- *
- * 一劳永逸的解决方法是有的:
- * 让碰撞器在每次发生碰撞时发出一个消息,他只做这一件事。
- * 需要在碰撞时做出某些行动的组件则来监听这个消息。
- * 碰撞器检测到碰撞 -> 碰撞器发出消息 -> 其他组件收到消息 -> 其他组件开始行动
- * 这样碰撞器只需要写一次,其他组件也只需要准备一个统一的监听消息功能就行。
- *
- * 要实现这种功能最直接的办法是用C#的事件委托,使用流程大概是这样:
- *
- * 第一步,你需要定义一个委托类型,他负责联系事件和方法。
- * 第二步,你需要定义一个跟他配对的事件,“配对”听起来有点麻烦其实特别简单,你只要写上要配对的委托类型,C#帮你解决剩下的问题。
- * 第三步,你要进行一个叫“订阅”的操作,就是通过委托把某个方法和事件联系起来,这样事件发出时方法就会执行。
- *
- * 上面的三步里,前两步在发出事件的组件里,在这一步里就是碰撞器组件。
- * 第三部是在需要订阅事件的组件里写的,在这一步里写在 QuadtreeWithEventDelegateDetector 里
- */
-
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step3Event
-{
- public delegate void QuadtreeCollisionEventDelegateEvent(GameObject colliderGameObject);
- /*
- * 这是第一部:定义委托类型。
- * 委托类型看起来像是方法,有返回、有参数,只不过多了个 delegate。
- * 要通过这个委托类型订阅事件的方法必须要有和这个委托类型相同的返回和参数。
- */
-
- public class QuadtreeColliderEvent : MonoBehaviour
- {
- public float radius
- {
- get { return _radius; }
- set { _radius = value; }
- }
- [SerializeField]
- float _radius = 1;
-
- public bool checkCollision
- {
- get { return _checkCollision; }
- set { _checkCollision = value; }
- }
- [SerializeField]
- bool _checkCollision;
-
- Transform _transform;
- QuadtreeLeafEvent _leaf;
-
- private void Awake()
- {
- _transform = transform;
- _leaf = new QuadtreeLeafEvent(gameObject, GetLeafPosition(), _radius);
- }
- Vector2 GetLeafPosition()
- {
- return new Vector2(_transform.position.x, _transform.position.y);
- }
-
- private void OnEnable()
- {
- UpdateLeaf();
- QuadtreeObjectEvent.SetLeaf(_leaf);
- }
-
- private void Update()
- {
- UpdateLeaf();
- CheckCollision();
- }
- void UpdateLeaf()
- {
- UpdateLeafPosition();
- UpdateLeafRadius();
- }
- void UpdateLeafPosition()
- {
- _leaf.position = GetLeafPosition();
- }
- void UpdateLeafRadius()
- {
- _leaf.radius = Mathf.Max(_transform.lossyScale.x, _transform.lossyScale.y) * _radius; //注意是 lossyScale 不是localScale,lossyScale 是全局缩放,可以应对父物体缩放后碰撞器一起缩放的情况
- }
-
- void CheckCollision()
- {
- if (_checkCollision)
- DoCheckCollision();
- }
- public event QuadtreeCollisionEventDelegateEvent collisionEvent;
-
- /*
- * 第二步:根据前面的委托类型定义的事件,结构是:
- * event 委托类型 事件名
- */
- void DoCheckCollision()
- {
- if (collisionEvent == null) return;
- /*
- * 首先要检测一下这个事件有没有被订阅,没有订阅的事件是null。
- * 发出没有被订阅的事件卵用没有,谁也不会有行动,实际上你要是真的把没订阅的事件发出了马上就会报错。
- */
-
- GameObject[] colliderGameObjects = QuadtreeObjectEvent.CheckCollision(_leaf);
- foreach (GameObject colliderGameObject in colliderGameObjects)
- {
- if (collisionEvent == null) break;
- collisionEvent(colliderGameObject);
- }
- /*
- * 发出事件很简单:像方法一样用,名字(参数)
- * 很明显能看出来这里的使用方式和前面定义委托类型的时候的参数和返回是相同的。
- *
- * 需要注意这里又进行了一次判断,原因是这里循环多次发出事件,但有时候有的组件接到事件后各种操作最后取消了订阅,如果正巧所有订阅都取消了,这里继续循环的时候就会出错,所以要每发出一次判断一次
- */
- }
-
- private void OnDisable()
- {
- QuadtreeObjectEvent.RemoveLeaf(_leaf);
- }
-
- private void OnDrawGizmos()
- {
- if (!enabled) return;
-
- Gizmos.color = _checkCollision ? Color.yellow * 0.8f : Color.green * 0.8f;
-
- MyGizmos.DrawCircle(transform.position, _radius * Mathf.Max(transform.lossyScale.x, transform.lossyScale.y), 60);
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeDetectorEvent.cs b/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeDetectorEvent.cs
deleted file mode 100644
index d96a68f..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeDetectorEvent.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step3Event
-{
- [RequireComponent(typeof(QuadtreeColliderEvent))]
- public class QuadtreeDetectorEvent : MonoBehaviour
- {
- QuadtreeColliderEvent _quadTreeCollider;
-
- List _colliders = new List();
-
-
- private void Awake()
- {
- _quadTreeCollider = GetComponent();
- }
-
- private void OnEnable()
- {
- _quadTreeCollider.collisionEvent += OnQuadtreeCollision;
- /*
- * 第三步:订阅事件
- *
- * 说起来你可能不信,前面关键字类型互相套的一堆高端操作,最后的订阅竟然是 +=
- * 真的就是那个 += ,事件里面存放的是在事件发生时需要执行的方法,+= 就是把方法存进去。
- *
- * 事件委托的本质是一个半自动的调用!是不是有种又绕回来了的感觉?
- * 现在你知道为什么第二步没订阅的事件直接发出会报错了,因为他本来应该调用方法但没有方法可以调用,于是他就受不了了崩溃了报错了。
- */
-
- /*
- * 还有一种格式是 _quadTreeCollider.collisionEvent += new QuadtreeWithEventDelegateCollisionEventDelegate(OnQuadtreeCollision);
- * 这是 C#1.0 的格式,直接 +=方法 的是 C#2.0 的格式,官方说两者效果完全相同,这里就用了简单的2.0格式
- */
- }
-
- private void OnDisable()
- {
- _quadTreeCollider.collisionEvent -= OnQuadtreeCollision;
- /*
- * 取消订阅,就是 -=
- *
- * 【重要】 如果不取消订阅的话C#会将订阅了事件的对象当做还有引用不应该清除,也就是说即使销毁了物体内存也不会释放,从而导致内存泄漏
- */
- }
-
- void OnQuadtreeCollision(GameObject collisionGameObject)
- {
- _colliders.Add(collisionGameObject);
- }
-
- private void OnDrawGizmos()
- {
- Gizmos.color = Color.yellow;
- foreach (GameObject collider in _colliders)
- if (collider) //从碰撞发生到绘制Gizmo中间有很短的时间,如果在这期间物体被销毁了,就获取不到Trnanform出bug,因此要先判断
- Gizmos.DrawLine(transform.position, collider.transform.position);
- _colliders.Clear(); //绘制完后清空List,等下一次绘制的时候又会重新填上
- }
- }
-}
diff --git a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeEvent.cs b/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeEvent.cs
deleted file mode 100644
index e4d6886..0000000
--- a/Assets/Quadtree Collider Detection/Step Interpretation/3.0_Event/QuadtreeEvent.cs
+++ /dev/null
@@ -1,476 +0,0 @@
-/*
- * 跟上一步几乎一样。
- *
- * 增加了传入叶子检测碰撞的方法。
- * 把Debug输出改成彩色的了,Unity的Console是支持HTML标签的。
- */
-
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace MtC.Tools.Quadtree.Example.Step3Event
-{
- public class QuadtreeLeafEvent
- {
- public T obj
- {
- get { return _obj; }
- }
- T _obj;
-
- public Vector2 position
- {
- get { return _position; }
- set { _position = value; }
- }
- Vector2 _position;
-
- public float radius
- {
- get { return _radius; }
- set { _radius = value; }
- }
- float _radius;
-
- public QuadtreeLeafEvent(T obj, Vector2 position, float radius)
- {
- _obj = obj;
- _position = position;
- _radius = radius;
- }
- }
-
- public class QuadtreeEvent
- {
- QuadtreeWithEventDelegateField _field;
-
- float _maxRadius = Mathf.NegativeInfinity;
-
- QuadtreeEvent _root;
- QuadtreeEvent _parent;
- QuadtreeEvent