diff options
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 Binary files differnew file mode 100644 index 0000000..d9122ca --- /dev/null +++ b/AlienSurvival/Assets/Editor/Icons/topdown.png 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 Binary files differnew file mode 100644 index 0000000..da89632 --- /dev/null +++ b/AlienSurvival/Assets/Tools/EditorGUIHelper/Icons/Bounds.png 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: |