summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2022-04-19 22:56:15 +0800
committerchai <chaifix@163.com>2022-04-19 22:56:15 +0800
commitba49cb4da7cae683585cc34b7adba46429c22af9 (patch)
treeddcc3e3e13da24782ee0094cecd7b8af41217ad7
parent2e2bb56ec77c98421f58887e8f004ed73ce13551 (diff)
+ topdown transform
-rw-r--r--AlienSurvival/Assets/Editor/Icons.meta8
-rw-r--r--AlienSurvival/Assets/Editor/Icons/topdown.pngbin0 -> 571 bytes
-rw-r--r--AlienSurvival/Assets/Editor/Icons/topdown.png.meta96
-rw-r--r--AlienSurvival/Assets/Scripts/Editor.meta8
-rw-r--r--AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs68
-rw-r--r--AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs.meta (renamed from AlienSurvival/Assets/Scripts/Physics/Transform2D.cs.meta)2
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor.meta8
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs46
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs106
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Transform2D.cs123
-rw-r--r--AlienSurvival/Assets/Scripts/Rendering.meta8
-rw-r--r--AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs13
-rw-r--r--AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs.meta11
-rw-r--r--AlienSurvival/Assets/Test/Scenes/6_PixelCanvas 1.unity272
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs29
-rw-r--r--AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs10
-rw-r--r--AlienSurvival/Assets/Tools.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs175
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs9
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs14
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs167
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs64
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs80
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs132
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs50
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Examples.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity653
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity.meta7
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs20
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Icons.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.pngbin0 -> 243 bytes
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta92
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta8
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs118
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta11
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs15
-rw-r--r--AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta11
52 files changed, 2454 insertions, 157 deletions
diff --git a/AlienSurvival/Assets/Editor/Icons.meta b/AlienSurvival/Assets/Editor/Icons.meta
new file mode 100644
index 0000000..8cb95d3
--- /dev/null
+++ b/AlienSurvival/Assets/Editor/Icons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 81b8f70b5c185184aba290a2e85bb06c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Editor/Icons/topdown.png b/AlienSurvival/Assets/Editor/Icons/topdown.png
new file mode 100644
index 0000000..d9122ca
--- /dev/null
+++ b/AlienSurvival/Assets/Editor/Icons/topdown.png
Binary files differ
diff --git a/AlienSurvival/Assets/Editor/Icons/topdown.png.meta b/AlienSurvival/Assets/Editor/Icons/topdown.png.meta
new file mode 100644
index 0000000..540f4aa
--- /dev/null
+++ b/AlienSurvival/Assets/Editor/Icons/topdown.png.meta
@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: b7cb09ba3d43de2418ea93e3aa9cd4e4
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Editor.meta b/AlienSurvival/Assets/Scripts/Editor.meta
new file mode 100644
index 0000000..58829a3
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d4ca91bb615252040a8e7572963b172a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs b/AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs
new file mode 100644
index 0000000..76cb48c
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs
@@ -0,0 +1,68 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+[CanEditMultipleObjects, CustomEditor(typeof(Transform), true)]
+public class TransformInspectorOverride : InspectorExt
+{
+ protected override string defaultEditorName => "UnityEditor.TransformInspector, UnityEditor";
+
+ Tool LastTool = Tool.None;
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+
+ if(HasTopDownTransform())
+ HideDefaultTools();
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+
+ if(LastTool != Tool.None)
+ RestoreTools();
+ }
+
+ void HideDefaultTools()
+ {
+ if(Tools.current != Tool.None)
+ LastTool = Tools.current;
+ Tools.current = Tool.None;
+ }
+
+ void RestoreTools()
+ {
+ Tools.current = LastTool;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ if (HasTopDownTransform())
+ {
+ EditorGUILayout.HelpBox("Override by TopDownTransform", MessageType.Warning);
+ GUI.enabled = false;
+ HideDefaultTools();
+ }
+
+ base.OnInspectorGUI();
+
+ if (HasTopDownTransform())
+ GUI.enabled = true;
+ }
+
+ bool HasTopDownTransform()
+ {
+ Transform transform = target as Transform;
+ TopDownTransform topdown = transform.GetComponent<TopDownTransform>();
+ return topdown != null;
+ }
+
+ public override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+ }
+
+}
diff --git a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs.meta b/AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs.meta
index ee1038d..c9f0922 100644
--- a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs.meta
+++ b/AlienSurvival/Assets/Scripts/Editor/TransformInspectorOverride.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 2b1fbd797bf03674e9d1b81edc11e3f1
+guid: 8027cfacc5652a6459adfbe2d9522671
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/AlienSurvival/Assets/Scripts/Physics/Editor.meta b/AlienSurvival/Assets/Scripts/Physics/Editor.meta
new file mode 100644
index 0000000..fa70114
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 80c8d9ba082ca27419e9d6e6bbb39f6d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
new file mode 100644
index 0000000..b1139f2
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
@@ -0,0 +1,46 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+
+[CustomEditor(typeof(TopDownTransform))]
+public class TopDownTransformInspector : Editor
+{
+
+ TopDownTransform m_TopDownTransform;
+
+ private void OnEnable()
+ {
+ m_TopDownTransform = target as TopDownTransform;
+ }
+
+ private void OnDisable()
+ {
+ }
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+ }
+
+ protected override void OnHeaderGUI()
+ {
+ base.OnHeaderGUI();
+ }
+
+ //https://answers.unity.com/questions/463207/how-do-you-make-a-custom-handle-respond-to-the-mou.html
+ private void OnSceneGUI()
+ {
+ Handles.color = Handles.xAxisColor;
+ m_TopDownTransform.x = EditorHandlesHelper.ScaleValue(m_TopDownTransform.x, m_TopDownTransform.Get3DPosition(), Vector3.right, 1f, Handles.ConeHandleCap, Quaternion.Euler(0, 90, 0), 1f, 0.1f);
+
+ Handles.color = Handles.yAxisColor;
+ m_TopDownTransform.y = EditorHandlesHelper.ScaleValue(m_TopDownTransform.y, m_TopDownTransform.Get3DPosition(), Vector3.up, 1f, Handles.ConeHandleCap, Quaternion.Euler(-90, 0, 0), 1f, 0.1f);
+
+ Handles.color = Handles.zAxisColor;
+ m_TopDownTransform.z = EditorHandlesHelper.ScaleValue(m_TopDownTransform.z, m_TopDownTransform.Get3DPosition() + new Vector3(0, -1.1f, 0), Vector3.up, 1f, Handles.ConeHandleCap, Quaternion.Euler(-90, 0, 0), 1f, 0.1f);
+
+ }
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta
new file mode 100644
index 0000000..09d9899
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a1871ab3b887e6b41ba4a43777b53192
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
new file mode 100644
index 0000000..3bb51b1
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
@@ -0,0 +1,106 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+/// <summary>
+/// 用于TopDown的Transform,支持模拟垂直高度
+/// </summary>
+[ExecuteInEditMode]
+[RequireComponent(typeof(Transform))]
+public class TopDownTransform : MonoBehaviour
+{
+ // 右手系
+ // z
+ // |
+ // | /y
+ // | /
+ // |/______x
+
+ // x, y, z ( z = height)
+ [SerializeField] private Vector3 m_LocalPosition;
+
+ // 只能绕一个虚拟轴旋转
+ [SerializeField] private float m_LocalRotation;
+
+ // x, z
+ [SerializeField] private Vector2 m_LocalScale;
+
+ public float x
+ {
+ get
+ {
+ return m_LocalPosition.x;
+ }
+ set
+ {
+ m_LocalPosition.x = value;
+ Project();
+ }
+ }
+ public float y
+ {
+ get
+ {
+ return m_LocalPosition.y;
+ }
+ set
+ {
+ m_LocalPosition.y = value;
+ Project();
+ }
+ }
+
+ public float z
+ {
+ get
+ {
+ return m_LocalPosition.z;
+ }
+ set
+ {
+ m_LocalPosition.z = value;
+ Project();
+ }
+ }
+ /// <summary>
+ /// “投影”,把坐标转换到Transform上
+ /// </summary>
+ public void Project()
+ {
+ Vector3 pos = transform.position;
+ pos.x = m_LocalPosition.x;
+ pos.y = m_LocalPosition.y + m_LocalPosition.z;
+
+ transform.position = pos;
+ }
+
+ private void Update()
+ {
+ Project();
+ }
+
+ public Vector3 Get3DPosition()
+ {
+ Vector3 pos = new Vector3();
+ pos.x = m_LocalPosition.x;
+ pos.y = m_LocalPosition.y + m_LocalPosition.z;
+ pos.z = transform.position.z;
+ return pos;
+ }
+
+#if UNITY_EDITOR
+ private void OnDrawGizmos()
+ {
+ // dash line
+ Vector3 start = transform.position;
+ Vector3 end = start - new Vector3(0, m_LocalPosition.z, 0);
+
+ Handles.DrawDottedLine(start, end, 1f);
+ Handles.DrawWireCube(end, new Vector3(0.1f, 0.1f, 0f));
+ }
+#endif
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta
new file mode 100644
index 0000000..cc1445d
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2b1fbd797bf03674e9d1b81edc11e3f1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: b7cb09ba3d43de2418ea93e3aa9cd4e4, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs b/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs
deleted file mode 100644
index 813b0c6..0000000
--- a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs
+++ /dev/null
@@ -1,123 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-// Topdown专用的transform
-public class Transform2D : MonoBehaviour
-{
- public const float ORTHO_FACTOR = 1f; // 45°
-
- public float alias_x
- {
- get
- {
- return z;
- }
- }
-
- public float alias_y
- {
- get
- {
- return -x;
- }
- }
-
- public float alias_h
- {
- get
- {
- return y;
- }
- }
-
- public float x
- {
- get
- {
- return 0;
- }
- }
-
- public float y
- {
- get
- {
- return 0;
- }
- set
- {
-
- }
- }
-
- public float z
- {
- get
- {
- return 0;
- }
- set
- {
-
- }
- }
-
- private Vector3 m_InnerPosition; // x, y, h
-
- public Vector3 position //
- {
- get
- {
- return m_InnerPosition;
- }
- }
-
- public float angle
- {
- get
- {
- return 0;
- }
- set
- {
-
- }
- }
-
- public Vector3 forward
- {
- get
- {
- return Vector3.zero;
- }
- }
-
- public Vector3 up
- {
- get
- {
- return Vector3.zero;
- }
- }
-
- public Vector3 right
- {
- get
- {
- return Vector3.zero;
- }
- }
-
- public Vector2 orthocoord
- {
- get
- {
- Vector2 ortho = new Vector2();
- ortho.x = x;
- ortho.y = y + ORTHO_FACTOR * z;
- return ortho;
- }
- }
-
-} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Rendering.meta b/AlienSurvival/Assets/Scripts/Rendering.meta
new file mode 100644
index 0000000..5983da2
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Rendering.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f708dc500b39f5b47b15cab2502b39ee
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs b/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs
new file mode 100644
index 0000000..2ef26a0
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs
@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+[DisallowMultipleComponent]
+[RequireComponent(typeof(TopDownTransform))]
+public class TopDownShadowCaster : MonoBehaviour
+{
+
+ [SerializeField] private Color m_Color = Color.black;
+ [SerializeField] private Vector2 m_Scale = new Vector2(1, 0.5f);
+
+}
diff --git a/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs.meta b/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs.meta
new file mode 100644
index 0000000..f81ad1b
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Rendering/TopDownShadowCaster.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f1ce201566412034c99687a8c5b94075
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Test/Scenes/6_PixelCanvas 1.unity b/AlienSurvival/Assets/Test/Scenes/6_PixelCanvas 1.unity
index e2b7482..5f7efd9 100644
--- a/AlienSurvival/Assets/Test/Scenes/6_PixelCanvas 1.unity
+++ b/AlienSurvival/Assets/Test/Scenes/6_PixelCanvas 1.unity
@@ -185,6 +185,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 278299573}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &21703930
BoxCollider2D:
@@ -510,6 +511,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1506896592}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &76560323
BoxCollider2D:
@@ -655,6 +657,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 640031758}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &80465631
SpriteRenderer:
@@ -823,6 +826,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 223962595}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &110910047
BoxCollider2D:
@@ -984,6 +988,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 800096343}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &122970567
BoxCollider2D:
@@ -1227,6 +1232,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 61158755}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &135903468
BoxCollider2D:
@@ -1416,6 +1422,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1945177636}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &145368953
BoxCollider2D:
@@ -1577,6 +1584,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 25990584}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &184434240
BoxCollider2D:
@@ -1722,6 +1730,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 771334776}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &185848757
SpriteRenderer:
@@ -2199,7 +2208,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
- m_SortingOrder: -981
+ m_SortingOrder: -913
m_Sprite: {fileID: -6997709495448532824, guid: fb08b0f068cbce749917cffaef128c3f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
@@ -2219,7 +2228,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 231104471}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 5.43, y: 10.32, z: 0}
+ m_LocalPosition: {x: 4.43, y: 9.63, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 858498575}
@@ -2239,6 +2248,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 858498575}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0.5
--- !u!1 &248224694
GameObject:
@@ -2521,6 +2531,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 298694134}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &272870307
GameObject:
@@ -2932,6 +2943,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 189969961}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &302118665
BoxCollider2D:
@@ -3175,6 +3187,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 761491700}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &307330108
BoxCollider2D:
@@ -3411,6 +3424,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1359833006}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &324941502
BoxCollider2D:
@@ -3572,6 +3586,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 94471841}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &343195988
BoxCollider2D:
@@ -3869,6 +3884,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1891333707}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &389948435
BoxCollider2D:
@@ -4307,6 +4323,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1077636387}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!114 &414827381
MonoBehaviour:
@@ -4383,6 +4400,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 370904206}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &441792236
BoxCollider2D:
@@ -4626,6 +4644,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1024741976}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &476843536
BoxCollider2D:
@@ -4935,6 +4954,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1610098375}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &500022327
SpriteRenderer:
@@ -5049,6 +5069,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1040158455}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &534247384
BoxCollider2D:
@@ -5182,6 +5203,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 449721433}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &537202037
BoxCollider2D:
@@ -5406,6 +5428,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 496145695}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &554226455
GameObject:
@@ -5535,6 +5558,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 588009569}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &579864785
SpriteRenderer:
@@ -5813,6 +5837,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1074757283}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &614277021
BoxCollider2D:
@@ -6110,6 +6135,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1434399339}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &651541160
BoxCollider2D:
@@ -6353,6 +6379,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1124799057}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &668633360
BoxCollider2D:
@@ -6690,6 +6717,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 736818747}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &729199533
SpriteRenderer:
@@ -6886,6 +6914,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1372540297}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &739593293
BoxCollider2D:
@@ -7129,6 +7158,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 2114883497}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &759472852
BoxCollider2D:
@@ -7325,6 +7355,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 248224695}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &761491699
GameObject:
@@ -7552,6 +7583,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1350486361}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &789200998
BoxCollider2D:
@@ -8130,6 +8162,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1857296051}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &826132326
BoxCollider2D:
@@ -8238,9 +8271,9 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 844062964}
+ - component: {fileID: 844062966}
- component: {fileID: 844062963}
- component: {fileID: 844062962}
- - component: {fileID: 844062966}
m_Layer: 0
m_Name: robot4_s
m_TagString: Untagged
@@ -8306,7 +8339,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
- m_SortingOrder: -900
+ m_SortingOrder: -1071
m_Sprite: {fileID: -3685877254663532703, guid: a75b74e89c53fb043902fbe6216cd330, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
@@ -8326,7 +8359,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 844062961}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 2.9, y: 9.8, z: 0}
+ m_LocalPosition: {x: 2.1, y: 12.92, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 900101674}
@@ -8346,7 +8379,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 900101674}
- m_Height: 0.8
+ m_Coord: {x: 0, y: 0, z: 0}
+ m_Height: 2.21
--- !u!1 &844200861
GameObject:
m_ObjectHideFlags: 0
@@ -8381,6 +8415,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1705140735}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &844200863
BoxCollider2D:
@@ -8774,6 +8809,139 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!1 &895402452
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 895402455}
+ - component: {fileID: 895402456}
+ - component: {fileID: 895402454}
+ - component: {fileID: 895402453}
+ - component: {fileID: 895402457}
+ m_Layer: 0
+ m_Name: robot4_s (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!95 &895402453
+Animator:
+ serializedVersion: 3
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 895402452}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: c288768725772e54da99ef56233329bb, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!212 &895402454
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 895402452}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ 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: -1071
+ m_Sprite: {fileID: -3685877254663532703, guid: a75b74e89c53fb043902fbe6216cd330, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 0.5, y: 0.5}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &895402455
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 895402452}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.0019090377, y: 6.621127, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 27
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &895402456
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 895402452}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2b1fbd797bf03674e9d1b81edc11e3f1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_LocalPosition: {x: 0.0019090377, y: 4.7122717, z: 1.9088556}
+ m_LocalRotation: 0
+ m_LocalScale: {x: 0, y: 0}
+--- !u!114 &895402457
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 895402452}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f1ce201566412034c99687a8c5b94075, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Color: {r: 0, g: 0, b: 0, a: 0.105882354}
+ m_Scale: {x: 1, y: 0.5}
--- !u!1 &900101673
GameObject:
m_ObjectHideFlags: 0
@@ -8800,7 +8968,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 900101673}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: -0.8000002, z: 0}
+ m_LocalPosition: {x: 0, y: -2.21, z: 0}
m_LocalScale: {x: 1, y: 0.36872143, z: 1}
m_Children: []
m_Father: {fileID: 844062964}
@@ -9181,6 +9349,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 126253428}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &969299182
BoxCollider2D:
@@ -9446,6 +9615,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 283677161}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &985163035
BoxCollider2D:
@@ -9591,6 +9761,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 303194465}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1014048670
SpriteRenderer:
@@ -9756,6 +9927,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1220265300}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1028795856
SpriteRenderer:
@@ -10131,6 +10303,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 804012454}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1082710340
BoxCollider2D:
@@ -10622,6 +10795,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 665839133}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1179934519
SpriteRenderer:
@@ -10736,6 +10910,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 393322331}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1187369532
BoxCollider2D:
@@ -10979,6 +11154,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 554226456}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1221673134
BoxCollider2D:
@@ -11201,6 +11377,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 492861022}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1262247791
BoxCollider2D:
@@ -11331,6 +11508,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 795087558}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1262303135
SpriteRenderer:
@@ -11870,6 +12048,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 755759089}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1381586389
BoxCollider2D:
@@ -12148,6 +12327,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1875111738}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &1424091755
GameObject:
@@ -12211,6 +12391,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 254252115}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1424091759
BoxCollider2D:
@@ -12388,7 +12569,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
- m_SortingOrder: -1017
+ m_SortingOrder: -1035
m_Sprite: {fileID: -6288526288528838362, guid: 180253d8c3a9d7d49ab41c54181dae83, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
@@ -12408,7 +12589,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1427931716}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 8.41, y: 11.66, z: 0}
+ m_LocalPosition: {x: 7.23, y: 11.84, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 230886355}
@@ -12428,6 +12609,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 230886355}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 1.49
--- !u!114 &1427931721
MonoBehaviour:
@@ -12602,6 +12784,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 933707760}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1444030000
BoxCollider2D:
@@ -12763,6 +12946,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 363641695}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1448641835
BoxCollider2D:
@@ -12896,6 +13080,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 272870308}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1451924845
BoxCollider2D:
@@ -13085,6 +13270,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1133610727}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1468482491
BoxCollider2D:
@@ -13394,6 +13580,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 699760445}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1508965810
SpriteRenderer:
@@ -13620,6 +13807,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 413772985}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &1525058237
GameObject:
@@ -14050,6 +14238,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1744602883}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1581945045
BoxCollider2D:
@@ -14306,6 +14495,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1280541848}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &1610098374
GameObject:
@@ -14486,6 +14676,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1661597061}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &1655800953
GameObject:
@@ -14564,7 +14755,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
- m_SortingOrder: -802
+ m_SortingOrder: -1083
m_Sprite: {fileID: 5068832224188716903, guid: f81265fcc613abd44bffbfcb7215359b, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
@@ -14584,7 +14775,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1655800953}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: -0.37737918, y: 9.020008, z: 0}
+ m_LocalPosition: {x: -1.3773792, y: 11.8300085, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1545137360}
@@ -14604,6 +14795,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1545137360}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 1
--- !u!1 &1661597060
GameObject:
@@ -14718,6 +14910,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 636330454}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1674033084
SpriteRenderer:
@@ -14847,6 +15040,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1951955983}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1694780490
BoxCollider2D:
@@ -15074,6 +15268,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1949200981}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1702781892
SpriteRenderer:
@@ -15390,6 +15585,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1346058209}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1771037015
BoxCollider2D:
@@ -15563,6 +15759,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1809109968}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1808103858
SpriteRenderer:
@@ -15743,6 +15940,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1525058238}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1826905635
SpriteRenderer:
@@ -15857,6 +16055,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 2133381789}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1828131699
BoxCollider2D:
@@ -16300,6 +16499,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 864280003}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!1 &1891333706
GameObject:
@@ -16429,6 +16629,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1698128101}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1896371516
SpriteRenderer:
@@ -16543,6 +16744,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 2083778505}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1900112764
BoxCollider2D:
@@ -16786,6 +16988,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 2017869643}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1917618513
BoxCollider2D:
@@ -16947,6 +17150,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 723816278}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &1935713722
BoxCollider2D:
@@ -17338,6 +17542,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1907535904}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!212 &1993403373
SpriteRenderer:
@@ -17452,6 +17657,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 954600505}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &2003592892
BoxCollider2D:
@@ -17613,6 +17819,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 209548591}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &2016191311
BoxCollider2D:
@@ -17856,6 +18063,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 610667406}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &2078978986
BoxCollider2D:
@@ -18176,7 +18384,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
- m_SortingOrder: -580
+ m_SortingOrder: -861
m_Sprite: {fileID: 21300000, guid: 52dab49f83ccd8f4895a647210165e85, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
@@ -18196,7 +18404,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2103777676}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: -3.6, y: 6.8, z: 0}
+ m_LocalPosition: {x: -4.6, y: 9.610001, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 865193497}
@@ -18216,6 +18424,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 865193497}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 1
--- !u!1 &2114883496
GameObject:
@@ -18299,6 +18508,36 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+--- !u!1 &2117414729
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2117414730}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2117414730
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2117414729}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1.93, y: 8.76, z: -0.42769396}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 28
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2126951608
GameObject:
m_ObjectHideFlags: 0
@@ -18361,6 +18600,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Shadow: {fileID: 1387531137}
+ m_Coord: {x: 0, y: 0, z: 0}
m_Height: 0
--- !u!61 &2126951612
BoxCollider2D:
@@ -18677,11 +18917,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8582758513482715753, guid: 32f108a63fddba54fbcf9b728f232946, type: 3}
propertyPath: m_LocalPosition.x
- value: 8.360001
+ value: 8.14
objectReference: {fileID: 0}
- target: {fileID: 8582758513482715753, guid: 32f108a63fddba54fbcf9b728f232946, type: 3}
propertyPath: m_LocalPosition.y
- value: 6.5700016
+ value: 8.41
objectReference: {fileID: 0}
- target: {fileID: 8582758513482715753, guid: 32f108a63fddba54fbcf9b728f232946, type: 3}
propertyPath: m_LocalPosition.z
@@ -18717,7 +18957,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 8582758513482715754, guid: 32f108a63fddba54fbcf9b728f232946, type: 3}
propertyPath: m_SortingOrder
- value: -607
+ value: -790
objectReference: {fileID: 0}
- target: {fileID: 8582758513482715755, guid: 32f108a63fddba54fbcf9b728f232946, type: 3}
propertyPath: m_Name
diff --git a/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs b/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs
index e427e20..4cc13d1 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestFakeHeight.cs
@@ -5,12 +5,23 @@ using UnityEngine;
using UnityEditor;
#endif
-[ExecuteInEditMode]
+//[ExecuteInEditMode]
public class TestFakeHeight : MonoBehaviour
{
[SerializeField] private Transform m_Shadow;
+ [SerializeField] private Vector3 m_Coord;
- public float height { get { return m_Height; } set { m_Height = value; } }
+
+ public float height {
+ get
+ {
+ return m_Height;
+ }
+ set
+ {
+ m_Height = value;
+ }
+ }
[SerializeField] private float m_Height; // current fake height
public float x
@@ -49,6 +60,12 @@ public class TestFakeHeight : MonoBehaviour
Vector3 pos = new Vector3(x, y, height);
return pos;
}
+ set
+ {
+ height = value.z; // height先设置
+ x = value.x;
+ y = value.y;
+ }
}
public Vector2 positionOnGround
@@ -65,8 +82,6 @@ public class TestFakeHeight : MonoBehaviour
}
}
- private float m_PreHeight;
-
private SpriteRenderer m_SpriteRenderer;
private void OnEnable()
@@ -76,15 +91,13 @@ public class TestFakeHeight : MonoBehaviour
private void Start()
{
- m_PreHeight = 0;
Project();
}
void Project()
{
Vector3 pos = transform.position;
-
- pos.y = pos.y - m_PreHeight + m_Height;
+ pos.y = y + height;
transform.position = pos;
if (m_Shadow != null)
@@ -92,8 +105,6 @@ public class TestFakeHeight : MonoBehaviour
m_Shadow.position = new Vector3(transform.position.x, transform.position.y - m_Height, transform.position.z);
}
- m_PreHeight = m_Height;
-
// 根据y设置sortOrder
m_SpriteRenderer.sortingOrder = (int)(-y * 100);
}
diff --git a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs
index 109e47b..cd12c1e 100644
--- a/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs
+++ b/AlienSurvival/Assets/Test/Scripts/TestPeaceMakerGrenade.cs
@@ -15,7 +15,6 @@ public class TestPeaceMakerGrenade : MonoBehaviour
private Vector3 m_Velocity; // x, y, fakeHeight
-
/// <summary>
/// 设置初始参数,都在fake空间下
/// </summary>
@@ -25,10 +24,7 @@ public class TestPeaceMakerGrenade : MonoBehaviour
public void Set(Vector3 initPosition, Vector3 initDirection, float initSpeed)
{
m_Coords = GetComponent<TestFakeHeight>();
-
- m_Coords.x = initPosition.x;
- m_Coords.y = initPosition.y;
- m_Coords.height = initPosition.z;
+ m_Coords.position = initPosition;
m_Velocity = initDirection * initSpeed;
}
@@ -61,9 +57,7 @@ public class TestPeaceMakerGrenade : MonoBehaviour
GameObject exp = Instantiate<GameObject>(m_ExplosionEffect);
TestFakeHeight coord = exp.GetComponent<TestFakeHeight>();
- coord.x = m_Coords.x;
- coord.y = m_Coords.y;
- coord.height = m_Coords.height;
+ coord.position = m_Coords.position;
exp.SetActive(true);
}
diff --git a/AlienSurvival/Assets/Tools.meta b/AlienSurvival/Assets/Tools.meta
new file mode 100644
index 0000000..7fcff03
--- /dev/null
+++ b/AlienSurvival/Assets/Tools.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eeed6286ff54e2a42abd4012a3c777cf
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper.meta
new file mode 100644
index 0000000..0961cae
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 90f6f52390254104ba41fdade0d9384b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor.meta
new file mode 100644
index 0000000..617d3e7
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 45adf787f0297654e8f79c7c456b656c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs
new file mode 100644
index 0000000..e71b082
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs
@@ -0,0 +1,175 @@
+锘縰sing System;
+using System.Reflection;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+public static class ToolsHelper
+{
+ static FieldInfo s_Hidden;
+ static ToolsHelper()
+ {
+ Type type = typeof(Tools);
+ s_Hidden = type.GetField("s_Hidden", BindingFlags.NonPublic | BindingFlags.Static);
+ }
+
+ // hide default handles
+ public static bool Hidden
+ {
+ get
+ {
+ return ((bool)s_Hidden.GetValue(null));
+ }
+ set
+ {
+ s_Hidden.SetValue(null, value);
+ }
+ }
+}
+
+public static class EditorGUIHelper
+{
+ #region methods
+ delegate void DrawPropertiesExcludingDelegate(SerializedObject obj, params string[] propertyToExclude);
+ static DrawPropertiesExcludingDelegate DrawPropertiesExcluding;
+ #endregion
+
+ #region Styles
+ static GUIStyle s_EditToolButtonStyle;
+ #endregion
+
+ static EditorGUIHelper()
+ {
+ SetupMethods();
+ SetupGUIStyles();
+ }
+
+ static void SetupMethods()
+ {
+ DrawPropertiesExcluding = GetMethod<DrawPropertiesExcludingDelegate>(typeof(Editor), "DrawPropertiesExcluding", BindingFlags.Static | BindingFlags.NonPublic);
+ }
+
+ static void SetupGUIStyles()
+ {
+ s_EditToolButtonStyle = new GUIStyle("Button");
+ s_EditToolButtonStyle.padding = new RectOffset(0, 0, 0, 0);
+ s_EditToolButtonStyle.margin = new RectOffset(0, 0, 0, 0);
+ }
+
+ private static T GetMethod<T>(Type type, string name) where T : Delegate
+ {
+ var method = type.GetMethod(name);
+ T del = (T)Delegate.CreateDelegate(typeof(T), method);
+ return del;
+ }
+
+ private static T GetMethod<T>(Type type, string name, BindingFlags flag) where T : Delegate
+ {
+ var method = type.GetMethod(name, flag);
+ T del = (T)Delegate.CreateDelegate(typeof(T), method);
+ return del;
+ }
+
+ // 缁樺埗榛樿inspector浣嗕笉鏄剧ずscript
+ public static bool DrawDefaultInspectorWithoutScriptField(this Editor Inspector)
+ {
+ EditorGUI.BeginChangeCheck();
+ Inspector.serializedObject.Update();
+ SerializedProperty Iterator = Inspector.serializedObject.GetIterator();
+ Iterator.NextVisible(true);
+ while (Iterator.NextVisible(false))
+ {
+ EditorGUILayout.PropertyField(Iterator, true);
+ }
+ Inspector.serializedObject.ApplyModifiedProperties();
+ return (EditorGUI.EndChangeCheck());
+ }
+
+ // 缁樺埗榛樿inspector锛屼絾鏄笉鏄剧ずfield
+ public static void DrawDefaultInspectorWithoutField(SerializedObject obj, string field)
+ {
+ EditorGUI.BeginChangeCheck();
+ DrawPropertiesExcluding(obj, field);
+ if (EditorGUI.EndChangeCheck())
+ obj.ApplyModifiedProperties();
+ }
+
+ // 鎺у埗tools寮鍚殑toggle
+ public static bool DrawToolsToggle(this Editor caller, string label, GUIContent icon, bool toggle)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Rect position = new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, 33f, 20f);
+ GUIContent content = new GUIContent(label);
+ Vector2 vector = GUI.skin.label.CalcSize(content);
+ Rect position2 = new Rect(controlRect.xMin, controlRect.yMin + (controlRect.height - vector.y) * 0.5f, vector.x, controlRect.height);
+ int instanceID = caller.GetInstanceID();
+ GUI.Label(position2, label);
+ toggle = GUI.Toggle(position, toggle, icon, s_EditToolButtonStyle);
+ return toggle;
+ }
+
+ // 鎺у埗tools寮鍚殑toggle
+ public static bool DrawToolsToggle(this Editor caller, string label, bool toggle)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Rect position = new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, 33f, 20f);
+ GUIContent content = new GUIContent(label);
+ Vector2 vector = GUI.skin.label.CalcSize(content);
+ Rect position2 = new Rect(controlRect.xMin, controlRect.yMin + (controlRect.height - vector.y) * 0.5f, vector.x, controlRect.height);
+ int instanceID = caller.GetInstanceID();
+ GUI.Label(position2, label);
+ toggle = GUI.Toggle(position, toggle, "");
+ return toggle;
+ }
+
+ // label content
+ public static void LabelField (string label, string content)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(label));
+ EditorGUI.LabelField(new Rect(controlRect.xMin, controlRect.yMin, vector.x, 20f), label);
+ vector = GUI.skin.label.CalcSize(new GUIContent(content));
+ EditorGUI.LabelField(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, vector.x, 20f), content);
+ }
+
+ // 闈犲彸鐨刲abel
+ public static void LabelFieldRight(string content)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(content));
+ EditorGUI.LabelField(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, vector.x, 20f), content);
+ }
+
+ public static bool Button(string label, string content, int width)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(label));
+ EditorGUI.LabelField(new Rect(controlRect.xMin, controlRect.yMin, vector.x, 20f), label);
+ return GUI.Button(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, width, 20f), content);
+ }
+
+ // label button tip
+ public static bool Button(string label, string content, int width, string tip)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(label));
+ EditorGUI.LabelField(new Rect(controlRect.xMin, controlRect.yMin, vector.x, 20f), label);
+ bool clicked = GUI.Button(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, width, 20f), content);
+ EditorGUI.LabelField(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth + width + 5, controlRect.yMin, vector.x, 20f), tip);
+ return clicked;
+ }
+
+ // 鎸夐挳鏄浘褰㈣屼笉鏄鍕剧殑toggle
+ public static bool ToggleButton(string label, bool value, GUIContent button)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Rect position = new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, 33f, 20f);
+ GUIContent content = new GUIContent(label);
+ Vector2 vector = GUI.skin.label.CalcSize(content);
+ Rect position2 = new Rect(controlRect.xMin, controlRect.yMin + (controlRect.height - vector.y) * 0.5f, vector.x, controlRect.height);
+ GUI.Label(position2, label);
+ value = GUI.Toggle(position, value, button, s_EditToolButtonStyle);
+ return value;
+ }
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs.meta
new file mode 100644
index 0000000..5b4bd6b
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4d503328ed0e74c4993f51b243402640
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs
new file mode 100644
index 0000000..59dfc01
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs
@@ -0,0 +1,9 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public static class EditorGUIHelperSetUp
+{
+ public static string root = "Assets/Tools/EditorGUIHelper/";
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta
new file mode 100644
index 0000000..b3dae74
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 334ea7a2b183f99489eff2b84c8231e6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs
new file mode 100644
index 0000000..53f9323
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+// Gizmos 扩展
+public static class EditorGizmosHelper
+{
+ public static void DrawCube()
+ {
+
+ }
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs.meta
new file mode 100644
index 0000000..f7411dd
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorGizmosHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d8d8c8aa0672d844e9051ebc8c776b5c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs
new file mode 100644
index 0000000..0585894
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs
@@ -0,0 +1,167 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+// https://docs.unity3d.com/ScriptReference/Handles.html
+
+// Scene瑙嗗浘涓殑鑷畾涔塰andles
+public static class EditorHandlesHelper
+{
+ static int s_ValueScaleHandleHash;
+
+ // limit value 鏁版嵁
+ static float s_StartScale;
+ static float s_ValueDrag;
+ static float s_ScaleDrawLength;
+
+ // style
+ static GUIStyle s_StyleBlackLabel;
+ static GUIStyle s_StyleWhiteLabel;
+ static Dictionary<int/*color*/, GUIStyle> s_StyleLabels;
+
+ static EditorHandlesHelper()
+ {
+ s_ValueScaleHandleHash = "ValueScaleHandleHash".GetHashCode();
+
+ SetupStyles();
+ }
+
+ static void SetupStyles()
+ {
+ s_StyleBlackLabel = new GUIStyle();
+ s_StyleBlackLabel.normal.textColor = Color.black;
+ s_StyleWhiteLabel = new GUIStyle();
+ s_StyleWhiteLabel.normal.textColor = Color.white;
+ s_StyleLabels = new Dictionary<int, GUIStyle>();
+ }
+
+ #region 鍗曚竴handle
+
+ // 绠ご
+ public static void Arrow(Vector3 position, Vector3 direction, float length = 1f, float arrowSize = 0.1f, bool dotted = false)
+ {
+ direction = direction.normalized;
+ if(!dotted)
+ Handles.DrawLine(position, position + direction * length);
+ else
+ Handles.DrawDottedLine(position, position + direction * length,1f);
+ Handles.ConeHandleCap(0, position + direction * length, Quaternion.LookRotation(direction, Vector3.up), arrowSize, EventType.Repaint);
+ }
+
+ // 鎺у埗鏁板肩殑绠ご
+ public static float ScaleValue(float value, Vector3 position, Vector3 direction, float length, Handles.CapFunction capFunc, Quaternion capRot, float size, float snap = 0)
+ {
+ Handles.DrawLine(position, position + direction * length);
+ value = ScaleValue(value, position + direction, capRot, size, capFunc, snap);
+ return value;
+ }
+
+ // 鎺у埗鏁板肩殑handle
+ public static float ScaleValue(float value, Vector3 position, Quaternion rotation, float size, Handles.CapFunction capFunc, float snap)
+ {
+ int controlID = GUIUtility.GetControlID(s_ValueScaleHandleHash, FocusType.Keyboard);
+ int id = controlID;
+ Event current = Event.current;
+ switch (current.GetTypeForControl(id))
+ {
+ case EventType.MouseDown:
+ if ((HandleUtility.nearestControl == id && current.button == 0) || (GUIUtility.keyboardControl == id && current.button == 2))
+ {
+ GUIUtility.keyboardControl = id;
+ GUIUtility.hotControl = id;
+ s_StartScale = value;
+ s_ValueDrag = 0f;
+ current.Use();
+ EditorGUIUtility.SetWantsMouseJumping(1);
+ }
+ break;
+ case EventType.MouseUp:
+ if (GUIUtility.hotControl == id && (current.button == 0 || current.button == 2))
+ {
+ GUIUtility.hotControl = 0;
+ s_ScaleDrawLength = 1f;
+ current.Use();
+ EditorGUIUtility.SetWantsMouseJumping(0);
+ }
+ break;
+ case EventType.MouseDrag:
+ if (GUIUtility.hotControl == id)
+ {
+ s_ValueDrag += HandleUtility.niceMouseDelta * 0.01f;
+ value = (Handles.SnapValue(s_ValueDrag, snap) + 1f) * s_StartScale;
+ s_ScaleDrawLength = value / s_StartScale;
+ GUI.changed = true;
+ current.Use();
+ }
+ break;
+ case EventType.KeyDown:
+ if (GUIUtility.hotControl == id && current.keyCode == KeyCode.Escape)
+ {
+ value = s_StartScale;
+ s_ScaleDrawLength = 1f;
+ GUIUtility.hotControl = 0;
+ GUI.changed = true;
+ current.Use();
+ }
+ break;
+ case EventType.Repaint:
+ {
+ Color color = Color.white;
+ if (id == GUIUtility.keyboardControl)
+ {
+ color = Handles.color;
+ Handles.color = Handles.selectedColor;
+ }
+ capFunc(id, position, rotation, size * 0.15f, EventType.Repaint);
+ if (id == GUIUtility.keyboardControl)
+ {
+ Handles.color = color;
+ }
+ break;
+ }
+ case EventType.Layout:
+ HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(position, size * 0.15f));
+ break;
+ }
+ return value;
+ }
+
+ // 甯﹁儗鏅殑label
+ public static void Label(Vector3 position, string label, Color textColor)
+ {
+ GUIStyle textStyle = TryGetLabelStyleOrCreate(textColor);
+ Handles.Label(position, label, textStyle);
+ }
+
+ public static void WireCube(Vector3 position, Vector3 size, Color col)
+ {
+ Color c = Handles.color;
+ Handles.color = col;
+ Handles.DrawWireCube(position, size);
+ Handles.color = c;
+ }
+
+ #endregion
+
+ #region 澶嶅悎handle
+
+ #endregion
+
+ #region 鍐呴儴鏂规硶
+
+ static GUIStyle TryGetLabelStyleOrCreate(Color color)
+ {
+ GUIStyle style;
+ if (!s_StyleLabels.TryGetValue(color.GetHashCode(), out style))
+ {
+ style = new GUIStyle();
+ style.normal.textColor = color;
+ s_StyleLabels.Add(color.GetHashCode(), style);
+ }
+ return style;
+ }
+
+ #endregion
+
+}
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta
new file mode 100644
index 0000000..5980e0b
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f833debbd4598444b9fee62250e36306
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta
new file mode 100644
index 0000000..02796be
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d44acfdfc914b8a46858adb3b8a43a7d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs
new file mode 100644
index 0000000..efb2cec
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+public abstract class InspectorExt : Editor
+{
+ protected Editor defaultEditor;
+
+ protected abstract string defaultEditorName { get; }
+
+ bool s_MoreInfo = true;
+ static readonly GUIContent more = EditorGUIUtility.TrTextContent("More Information", null, (Texture2D)null);
+
+ public virtual void OnEnable()
+ {
+ defaultEditor = Editor.CreateEditor(targets, Type.GetType(defaultEditorName));
+ if(defaultEditor == null)
+ Debug.LogError("No such editor class \""+ defaultEditorName + "\"");
+ TryInvokeDefaultMethod("OnEnable");
+ }
+
+ public virtual void OnDisable()
+ {
+ //When OnDisable is called, the default editor we created should be destroyed to avoid memory leakage.
+ //Also, make sure to call any required methods like OnDisable
+ TryInvokeDefaultMethod("OnDisable");
+ DestroyImmediate(defaultEditor);
+
+ s_MoreInfo = true;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ if (defaultEditor)
+ defaultEditor.OnInspectorGUI();
+ }
+
+ public virtual void OnSceneGUI ()
+ {
+ TryInvokeDefaultMethod("OnSceneGUI");
+ }
+
+ protected bool BeginMore()
+ {
+ s_MoreInfo = EditorGUILayout.BeginFoldoutHeaderGroup(s_MoreInfo, more, null, null, null);
+ return s_MoreInfo;
+ }
+
+ protected void EndMore()
+ {
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ }
+
+ protected void TryInvokeDefaultMethod(string method, BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
+ {
+ MethodInfo disableMethod = defaultEditor.GetType().GetMethod(method, flag);
+ if (disableMethod != null)
+ {
+ disableMethod.Invoke(defaultEditor, null);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta
new file mode 100644
index 0000000..33a6747
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0ac8e9c82eb57e5489438cd41fa88ba5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs
new file mode 100644
index 0000000..650f3ee
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+// 扩展meshrender editor,显示
+// sortingLayer
+// sortingOrder
+// bounds
+[CustomEditor(typeof(MeshRenderer), true)]
+[CanEditMultipleObjects]
+public class MeshRendererInspector : InspectorExt
+{
+ MeshRenderer renderer;
+
+ bool s_ShowBounds = false;
+
+ string s_BoundsIconPath = EditorGUIHelperSetUp.root + "Icons/bounds.png";
+ GUIContent s_BoundsIcon;
+
+ protected override string defaultEditorName => "UnityEditor.MeshRendererEditor, UnityEditor";
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ renderer = target as MeshRenderer;
+ Setup();
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ Setup();
+ }
+
+ void Setup()
+ {
+ s_ShowBounds = false;
+ if(s_BoundsIcon == null)
+ s_BoundsIcon = EditorGUIUtility.IconContent(s_BoundsIconPath);
+ }
+
+ public sealed override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ if (BeginMore())
+ {
+ string sortingLayer = renderer.sortingLayerName;
+ string[] layers = new string[SortingLayer.layers.Length];
+ int index = 0;
+ for (int i = 0; i < layers.Length; ++i)
+ {
+ layers[i] = SortingLayer.layers[i].name;
+ if (sortingLayer == layers[i])
+ index = i;
+ }
+ index = EditorGUILayout.Popup("Sorting Layer", index, layers);
+ renderer.sortingLayerName = layers[index];
+ renderer.sortingOrder = EditorGUILayout.IntField("Sorting Order", renderer.sortingOrder);
+ s_ShowBounds = EditorGUIHelper.ToggleButton("Show Bounds", s_ShowBounds, s_BoundsIcon);
+ }
+ EndMore();
+ }
+
+ public override void OnSceneGUI ()
+ {
+ base.OnSceneGUI();
+ if (s_ShowBounds)
+ {
+ Vector3 center = renderer.bounds.center;
+ float radius = renderer.bounds.extents.magnitude;
+ Handles.color = Color.white;
+ EditorHandlesHelper.WireCube(center, renderer.bounds.size, Color.blue);
+ Handles.color = Color.white;
+ EditorHandlesHelper.Label(center, "bounds:" + renderer.bounds.size,Color.blue);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta
new file mode 100644
index 0000000..764508e
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4a54e71946e679847a74bc44ae85768f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs
new file mode 100644
index 0000000..81a0e72
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs
@@ -0,0 +1,132 @@
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+// sortingLayer
+// sortingOrder
+// bounds
+// bonecount
+[CustomEditor(typeof(SkinnedMeshRenderer), true)]
+[CanEditMultipleObjects]
+public class SkinnedMeshRendererInspector : InspectorExt
+{
+ protected override string defaultEditorName => "UnityEditor.SkinnedMeshRendererEditor, UnityEditor";
+
+ SkinnedMeshRenderer renderer;
+
+ string s_BoundsIconPath = EditorGUIHelperSetUp.root + "Icons/bounds.png";
+ GUIContent s_BoundsIcon;
+
+ bool s_ShowBounds = false;
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ renderer = target as SkinnedMeshRenderer;
+ if (s_BoundsIcon == null)
+ s_BoundsIcon = EditorGUIUtility.IconContent(s_BoundsIconPath);
+ s_ShowBounds = false;
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ s_ShowBounds = false;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ if (renderer == null)
+ return;
+
+ if(BeginMore())
+ {
+ string sortingLayer = renderer.sortingLayerName;
+ string[] layers = new string[SortingLayer.layers.Length];
+ int index = 0;
+ for (int i = 0; i < layers.Length; ++i)
+ {
+ layers[i] = SortingLayer.layers[i].name;
+ if (sortingLayer == layers[i])
+ index = i;
+ }
+ index = EditorGUILayout.Popup("Sorting Layer", index, layers);
+ renderer.sortingLayerName = layers[index];
+ renderer.sortingOrder = EditorGUILayout.IntField("Sorting Order", renderer.sortingOrder);
+ s_ShowBounds = EditorGUIHelper.ToggleButton("Show Bounds", s_ShowBounds, s_BoundsIcon);
+ Transform bone0 = renderer.bones != null && renderer.bones.Length > 0 ? renderer.bones[0] : null;
+ GUI.enabled = false;
+ EditorGUILayout.ObjectField("Bones[0]", bone0, typeof(Transform), true);
+ GUI.enabled = true;
+ //EditorGUIHelper.LabelField("Bone Count", GetBoneCount(bone0).ToString());
+ EditorGUIHelper.LabelField("Bones Length", renderer.bones.Length.ToString());
+
+ // Mesh info
+ Mesh mesh = renderer.sharedMesh;
+ if(mesh)
+ {
+ EditorGUIHelper.LabelField("Mesh Info", "Vertex Count (VBO): " + mesh.vertexCount);
+ EditorGUIHelper.LabelFieldRight("Topology Count (IBO): " + mesh.triangles.Length);
+ EditorGUIHelper.LabelFieldRight("Possible Triangles Count: " + mesh.triangles.Length / 3);
+ EditorGUIHelper.LabelFieldRight("SubMesh Count: " + mesh.subMeshCount);
+ EditorGUIHelper.LabelFieldRight("Attributes: " + GetAttributesEnabled());
+ }
+ }
+ EndMore();
+ }
+
+
+ private int GetBoneCount(Transform root)
+ {
+ if (root == null)
+ return 0;
+ int childCount = root.childCount;
+ for (int i = 0; i < root.childCount; ++i)
+ {
+ childCount += GetBoneCount(root.GetChild(i));
+ }
+ return childCount;
+ }
+
+ public override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+ if (s_ShowBounds)
+ {
+ Vector3 center = renderer.bounds.center;
+ float radius = renderer.bounds.extents.magnitude;
+ Handles.color = Color.white;
+ EditorHandlesHelper.WireCube(center, renderer.bounds.size, Color.blue);
+ Handles.color = Color.white;
+ EditorHandlesHelper.Label(center, "bounds:" + renderer.bounds.size, Color.blue);
+ }
+ }
+
+ private string GetAttributesEnabled()
+ {
+ if (renderer == null)
+ return "";
+ string attr = "";
+ Mesh mesh = renderer.sharedMesh;
+ if (mesh.vertices.Length > 0) attr += "[position] ";
+ if (mesh.normals.Length > 0) attr += "[normal] ";
+ if (mesh.tangents.Length > 0) attr += "[tangent] ";
+ if (mesh.colors.Length > 0) attr += "[color] ";
+ if (mesh.uv.Length > 0) attr += "[uv1] ";
+ if (mesh.uv2.Length > 0) attr += "[uv2] ";
+ if (mesh.uv3.Length > 0) attr += "[uv3] ";
+ if (mesh.uv4.Length > 0) attr += "[uv4] ";
+#if UNITY_2019 || UNITY_2020 || UNITY_2021
+ if (mesh.uv5.Length > 0) attr += "[uv5] ";
+ if (mesh.uv6.Length > 0) attr += "[uv6] ";
+ if (mesh.uv7.Length > 0) attr += "[uv7] ";
+ if (mesh.uv8.Length > 0) attr += "[uv8] ";
+#endif
+ if (mesh.boneWeights.Length > 0) attr += "[boneWeights] ";
+ return attr;
+ }
+
+}
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta
new file mode 100644
index 0000000..5d0e921
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e27c6d4aff57a454292d44ec5fab325f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs
new file mode 100644
index 0000000..a474ecf
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs
@@ -0,0 +1,50 @@
+//https://forum.unity.com/threads/extending-instead-of-replacing-built-in-inspectors.407612/
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+[CustomEditor(typeof(Transform), true)]
+[CanEditMultipleObjects]
+public class TransformInspector : InspectorExt
+{
+ Transform transform;
+
+ bool s_ShowInformation = false;
+
+ protected override string defaultEditorName => "UnityEditor.TransformInspector, UnityEditor";
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ transform = target as Transform;
+ s_ShowInformation = false;
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ s_ShowInformation = false;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ EditorGUILayout.LabelField("Local Space", EditorStyles.boldLabel);
+ defaultEditor.OnInspectorGUI();
+
+ if(BeginMore())
+ {
+ // 世界坐标
+ EditorGUILayout.LabelField("World Space", EditorStyles.boldLabel);
+
+ GUI.enabled = false;
+
+ EditorGUILayout.Vector3Field("Position", transform.position);
+ EditorGUILayout.Vector3Field("Rotation", transform.rotation.ToEuler() * Mathf.Rad2Deg);
+ EditorGUILayout.Vector3Field("Scale", transform.lossyScale);
+
+ GUI.enabled = true;
+ }
+ EndMore();
+ }
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta
new file mode 100644
index 0000000..bd8715e
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 96be6f39599da8249ac5d7ab713e15ce
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples.meta
new file mode 100644
index 0000000..33939e5
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 589a1bca6557fd242addfa72384671f3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity
new file mode 100644
index 0000000..85c5f27
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity
@@ -0,0 +1,653 @@
+%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, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 11
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ 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: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ 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 &316520961
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 316520963}
+ - component: {fileID: 316520962}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &316520962
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 316520961}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &316520963
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 316520961}
+ m_LocalRotation: {x: 0.82503605, y: -0.35501626, z: -0.15873699, w: 0.40997747}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 145.682, y: 42.03499, z: 60.095993}
+--- !u!1 &1008144745
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1008144749}
+ - component: {fileID: 1008144748}
+ - component: {fileID: 1008144747}
+ - component: {fileID: 1008144746}
+ m_Layer: 0
+ m_Name: Cube (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &1008144746
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1008144747
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, 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: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1008144748
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1008144749
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.13, y: 3.36, z: 0.7656574}
+ 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 &1033041003
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1033041008}
+ - component: {fileID: 1033041007}
+ - component: {fileID: 1033041006}
+ - component: {fileID: 1033041005}
+ - component: {fileID: 1033041004}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1033041004
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1033041003}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9417b901511a3344c9aa9c0a832d54e0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ limitAngle:
+ - {x: 0, y: 0}
+ - {x: 0, y: 0}
+ - {x: 0, y: 0}
+ min: 332.17105
+ axis: {x: 0, y: 0, z: 1}
+--- !u!65 &1033041005
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1033041003}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1033041006
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1033041003}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, 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: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1033041007
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1033041003}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1033041008
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1033041003}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 8.826, y: -0.181, z: 30.174}
+ 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 &1369722875
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1369722879}
+ - component: {fileID: 1369722878}
+ - component: {fileID: 1369722877}
+ - component: {fileID: 1369722876}
+ m_Layer: 0
+ m_Name: Cube (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &1369722876
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1369722877
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, 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: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1369722878
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1369722879
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.13, y: 3.36, z: 0.7656574}
+ 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!1001 &1673605013
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 1875505553876386, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_Name
+ value: Rifle Mech
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_RootOrder
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+--- !u!1 &1760453184
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1760453187}
+ - component: {fileID: 1760453186}
+ - component: {fileID: 1760453185}
+ 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 &1760453185
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1760453184}
+ m_Enabled: 1
+--- !u!20 &1760453186
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1760453184}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, 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 &1760453187
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1760453184}
+ 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}
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity.meta
new file mode 100644
index 0000000..d903af3
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1c4ec92f75f9b6e4d94d43a9a67ecca3
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs
new file mode 100644
index 0000000..354454e
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs
@@ -0,0 +1,20 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RotationLimitAngle : MonoBehaviour
+{
+ enum Axis
+ {
+ x = 0,
+ y = 1,
+ z = 2,
+ }
+
+ public Vector2[] limitAngle = new Vector2[3];
+
+ public float min = 1;
+
+ public Vector3 axis;
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs.meta
new file mode 100644
index 0000000..5d6e85f
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Examples/RotationLimitAngle.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9417b901511a3344c9aa9c0a832d54e0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons.meta
new file mode 100644
index 0000000..1aa955d
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9314c9f4c2c8e8a489be132162fad72c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png
new file mode 100644
index 0000000..da89632
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png
Binary files differ
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta
new file mode 100644
index 0000000..0c49770
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta
@@ -0,0 +1,92 @@
+fileFormatVersion: 2
+guid: 834cfc1a7caf00b4e83e749591e84459
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: -1
+ wrapV: -1
+ wrapW: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute.meta
new file mode 100644
index 0000000..5e865e2
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eded389a3d0b70e4aa860c5dc8bdb8b0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta
new file mode 100644
index 0000000..0fbfc05
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fbe331826f9610d4b8bfba6374b10098
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs
new file mode 100644
index 0000000..74bfebb
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs
@@ -0,0 +1,118 @@
+锘縰sing UnityEngine;
+using UnityEditor;
+
+[CustomPropertyDrawer(typeof(MinMaxSliderAttribute))]
+public class MinMaxSliderDrawer : PropertyDrawer
+{
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ var minMaxAttribute = (MinMaxSliderAttribute)attribute;
+ var propertyType = property.propertyType;
+
+ label.tooltip = minMaxAttribute.min.ToString("F2") + " to " + minMaxAttribute.max.ToString("F2");
+
+ Rect controlRect = EditorGUI.PrefixLabel(position, label);
+
+ Rect[] splittedRect = SplitRect(controlRect, 3);
+
+ if (propertyType == SerializedPropertyType.Vector2)
+ {
+
+ EditorGUI.BeginChangeCheck();
+
+ Vector2 vector = property.vector2Value;
+ float minVal = vector.x;
+ float maxVal = vector.y;
+
+ minVal = float.Parse(GUI.TextField(splittedRect[0], minVal.ToString("F2")));
+ maxVal = float.Parse(GUI.TextField(splittedRect[2], maxVal.ToString("F2")));
+
+ Rect sliderRect = new Rect(splittedRect[0].x + 10, splittedRect[0].y, splittedRect[2].x - splittedRect[0].x - 15, splittedRect[0].height);
+
+ EditorGUI.MinMaxSlider(sliderRect, ref minVal, ref maxVal,
+ minMaxAttribute.min, minMaxAttribute.max);
+
+ if (minVal < minMaxAttribute.min)
+ {
+ minVal = minMaxAttribute.min;
+ }
+
+ if (maxVal > minMaxAttribute.max)
+ {
+ maxVal = minMaxAttribute.max;
+ }
+
+ vector = new Vector2(minVal > maxVal ? maxVal : minVal, maxVal);
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ property.vector2Value = vector;
+ }
+
+ }
+ else if (propertyType == SerializedPropertyType.Vector2Int)
+ {
+
+ EditorGUI.BeginChangeCheck();
+
+ Vector2Int vector = property.vector2IntValue;
+ float minVal = vector.x;
+ float maxVal = vector.y;
+
+ minVal = EditorGUI.FloatField(splittedRect[0], minVal);
+ maxVal = EditorGUI.FloatField(splittedRect[2], maxVal);
+
+ EditorGUI.MinMaxSlider(splittedRect[1], ref minVal, ref maxVal,
+ minMaxAttribute.min, minMaxAttribute.max);
+
+ if (minVal < minMaxAttribute.min)
+ {
+ maxVal = minMaxAttribute.min;
+ }
+
+ if (minVal > minMaxAttribute.max)
+ {
+ maxVal = minMaxAttribute.max;
+ }
+
+ vector = new Vector2Int(Mathf.FloorToInt(minVal > maxVal ? maxVal : minVal), Mathf.FloorToInt(maxVal));
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ property.vector2IntValue = vector;
+ }
+
+ }
+
+ }
+
+ Rect[] SplitRect(Rect rectToSplit, int n)
+ {
+
+
+ Rect[] rects = new Rect[n];
+
+ for (int i = 0; i < n; i++)
+ {
+
+ rects[i] = new Rect(rectToSplit.position.x + (i * rectToSplit.width / n), rectToSplit.position.y, rectToSplit.width / n, rectToSplit.height);
+
+ }
+
+ int padding = (int)rects[0].width - 40;
+ int space = 5;
+
+ rects[0].width -= padding + space;
+ rects[2].width -= padding + space;
+
+ rects[1].x -= padding;
+ rects[1].width += padding * 2;
+
+ rects[2].x += padding + space;
+
+
+ return rects;
+
+ }
+
+}
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta
new file mode 100644
index 0000000..7efaf04
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2418136676909034b8638efdc91a215e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs
new file mode 100644
index 0000000..c01fbe3
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs
@@ -0,0 +1,15 @@
+锘縰sing UnityEngine;
+using UnityEditor;
+
+public class MinMaxSliderAttribute : PropertyAttribute
+{
+
+ public float min;
+ public float max;
+
+ public MinMaxSliderAttribute(float min, float max)
+ {
+ this.min = min;
+ this.max = max;
+ }
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta
new file mode 100644
index 0000000..ca58275
--- /dev/null
+++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 293fbbe23cf64d94885e043ab4f2aa0d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: