diff --git a/.idea/.idea.Memory-Defense/.idea/.gitignore b/.idea/.idea.Memory-Defense/.idea/.gitignore new file mode 100644 index 0000000..8e2d3b2 --- /dev/null +++ b/.idea/.idea.Memory-Defense/.idea/.gitignore @@ -0,0 +1,15 @@ +# 디폴트 무시된 파일 +/shelf/ +/workspace.xml +# Rider에서 무시된 파일 +/contentModel.xml +/modules.xml +/projectSettingsUpdater.xml +/.idea.Memory-Defense.iml +# 에디터 기반 HTTP 클라이언트 요청 +/httpRequests/ +# 쿼리 파일을 포함한 무시된 디폴트 폴더 +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.Memory-Defense/.idea/encodings.xml b/.idea/.idea.Memory-Defense/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.Memory-Defense/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.Memory-Defense/.idea/indexLayout.xml b/.idea/.idea.Memory-Defense/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.Memory-Defense/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.Memory-Defense/.idea/vcs.xml b/.idea/.idea.Memory-Defense/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.Memory-Defense/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/DefaultVolumeProfile.asset b/Assets/DefaultVolumeProfile.asset index 0cd0e1a..8cea4d2 100644 --- a/Assets/DefaultVolumeProfile.asset +++ b/Assets/DefaultVolumeProfile.asset @@ -322,6 +322,9 @@ MonoBehaviour: highQualityFiltering: m_OverrideState: 1 m_Value: 0 + filter: + m_OverrideState: 1 + m_Value: 0 downscale: m_OverrideState: 1 m_Value: 0 diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 7b420f6..8f1bee5 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -13,7 +13,7 @@ OcclusionCullingSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 9 + serializedVersion: 10 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -38,13 +38,12 @@ RenderSettings: 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: 12 - m_GIWorkflowMode: 1 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -67,9 +66,6 @@ LightmapSettings: 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 @@ -104,7 +100,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -117,7 +113,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -172,6 +168,7 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 1 m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 m_RenderPostProcessing: 0 m_Antialiasing: 0 m_AntialiasingQuality: 2 @@ -179,8 +176,19 @@ MonoBehaviour: m_Dithering: 0 m_ClearDepth: 1 m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} m_RequiresDepthTexture: 0 m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 m_Version: 2 --- !u!20 &519420031 Camera: @@ -196,9 +204,17 @@ Camera: m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -232,13 +248,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 519420028} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &619394800 GameObject: @@ -269,55 +285,29 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} m_Name: m_EditorClassIdentifier: - m_ComponentVersion: 1 + m_ComponentVersion: 2 m_LightType: 4 m_BlendStyleIndex: 0 m_FalloffIntensity: 0.5 m_Color: {r: 1, g: 1, b: 1, a: 1} m_Intensity: 1 m_LightVolumeIntensity: 1 - m_LightVolumeIntensityEnabled: 0 + m_LightVolumeEnabled: 0 m_ApplyToSortingLayers: 00000000 m_LightCookieSprite: {fileID: 0} m_DeprecatedPointLightCookieSprite: {fileID: 0} m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 m_OverlapOperation: 0 m_NormalMapDistance: 3 m_NormalMapQuality: 2 m_UseNormalMap: 0 - m_ShadowIntensityEnabled: 0 + m_ShadowsEnabled: 0 m_ShadowIntensity: 0.75 + m_ShadowSoftness: 0 + m_ShadowSoftnessFalloffIntensity: 0.5 m_ShadowVolumeIntensityEnabled: 0 m_ShadowVolumeIntensity: 0.75 - m_Vertices: - - position: {x: 0.9985302, y: 0.9985302, z: 0} - color: {r: 0.70710677, g: 0.70710677, b: 0, a: 0} - uv: {x: 0, y: 0} - - position: {x: 0.9985302, y: 0.9985302, z: 0} - color: {r: 0, g: 0, b: 0, a: 1} - uv: {x: 0, y: 0} - - position: {x: -0.9985302, y: 0.9985302, z: 0} - color: {r: -0.70710677, g: 0.70710677, b: 0, a: 0} - uv: {x: 0, y: 0} - - position: {x: -0.9985302, y: 0.9985302, z: 0} - color: {r: 0, g: 0, b: 0, a: 1} - uv: {x: 0, y: 0} - - position: {x: -0.99853003, y: -0.9985304, z: 0} - color: {r: -0.70710665, g: -0.7071069, b: 0, a: 0} - uv: {x: 0, y: 0} - - position: {x: -0.99853003, y: -0.9985304, z: 0} - color: {r: 0, g: 0, b: 0, a: 1} - uv: {x: 0, y: 0} - - position: {x: 0.99853003, y: -0.9985304, z: 0} - color: {r: 0.70710665, g: -0.7071069, b: 0, a: 0} - uv: {x: 0, y: 0} - - position: {x: 0.99853003, y: -0.9985304, z: 0} - color: {r: 0, g: 0, b: 0, a: 1} - uv: {x: 0, y: 0} - - position: {x: 0, y: 0, z: 0} - color: {r: 0, g: 0, b: 0, a: 1} - uv: {x: 0, y: 0} - m_Triangles: 030001000800020000000100030002000100050003000800040002000300050004000300070005000800060004000500070006000500010007000800000006000700010000000700 m_LocalBounds: m_Center: {x: 0, y: -0.00000011920929, z: 0} m_Extent: {x: 0.9985302, y: 0.99853027, z: 0} @@ -342,11 +332,170 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 619394800} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &997674418 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 997674420} + - component: {fileID: 997674419} + - component: {fileID: 997674421} + - component: {fileID: 997674422} + m_Layer: 7 + m_Name: Bullet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &997674419 +SpriteRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997674418} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_SpriteSortPoint: 0 +--- !u!4 &997674420 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997674418} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0.12751925, w: 0.9918362} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.05, y: 0.1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -14.653} +--- !u!114 &997674421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997674418} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 80aae26211daf7b4d9f8f603e7c6987f, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::BulletMovement + moveSpeed: 0.05 +--- !u!61 &997674422 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 997674418} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 1, y: 1} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 519420032} + - {fileID: 619394802} + - {fileID: 997674420} diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..89a6f25 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 018a381c19bd509478affdb0ae59ad20 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/BulletMovement.cs b/Assets/Scripts/BulletMovement.cs new file mode 100644 index 0000000..a2e8ad5 --- /dev/null +++ b/Assets/Scripts/BulletMovement.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine; + +public class BulletMovement : MonoBehaviour +{ + public float moveSpeed = 10; + + // Start is called once before the first execution of Update after the MonoBehaviour is created + void Start() + { + + } + + // Update is called once per frame + void Update() + { + transform.Translate(Vector2.up * (Time.deltaTime * moveSpeed)); + } + + private void OnTriggerEnter2D(Collider2D other) + { + } +} diff --git a/Assets/Scripts/BulletMovement.cs.meta b/Assets/Scripts/BulletMovement.cs.meta new file mode 100644 index 0000000..d3608de --- /dev/null +++ b/Assets/Scripts/BulletMovement.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 80aae26211daf7b4d9f8f603e7c6987f \ No newline at end of file diff --git a/Assets/Settings/UniversalRP.asset b/Assets/Settings/UniversalRP.asset index fccfdda..d9771fc 100644 --- a/Assets/Settings/UniversalRP.asset +++ b/Assets/Settings/UniversalRP.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: UniversalRP m_EditorClassIdentifier: - k_AssetVersion: 12 - k_AssetPreviousVersion: 12 + k_AssetVersion: 13 + k_AssetPreviousVersion: 13 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -53,6 +53,7 @@ MonoBehaviour: m_AdditionalLightsShadowResolutionTierHigh: 2048 m_ReflectionProbeBlending: 0 m_ReflectionProbeBoxProjection: 0 + m_ReflectionProbeAtlas: 1 m_ShadowDistance: 50 m_ShadowCascadeCount: 1 m_Cascade2Split: 0.25 @@ -78,6 +79,7 @@ MonoBehaviour: m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 m_UseFastSRGBLinearConversion: 0 m_SupportDataDrivenLensFlare: 1 m_SupportScreenSpaceLensFlare: 1 @@ -108,6 +110,7 @@ MonoBehaviour: m_PrefilterDebugKeywords: 0 m_PrefilterWriteRenderingLayers: 0 m_PrefilterHDROutput: 0 + m_PrefilterAlphaOutput: 0 m_PrefilterSSAODepthNormals: 0 m_PrefilterSSAOSourceDepthLow: 0 m_PrefilterSSAOSourceDepthMedium: 0 @@ -125,8 +128,14 @@ MonoBehaviour: m_PrefilterSoftShadowsQualityHigh: 0 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 0 + m_PrefilterScreenSpaceIrradiance: 0 m_PrefilterNativeRenderPass: 0 m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 0 + m_PrefilterReflectionProbeRotation: 0 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 0 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 m_Textures: diff --git a/Assets/UniversalRenderPipelineGlobalSettings.asset b/Assets/UniversalRenderPipelineGlobalSettings.asset index 5c33ffe..684d704 100644 --- a/Assets/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/UniversalRenderPipelineGlobalSettings.asset @@ -29,7 +29,6 @@ MonoBehaviour: m_StripUnusedVariants: 1 m_StripScreenCoordOverrideVariants: 1 supportRuntimeDebugDisplay: 0 - m_EnableRenderGraph: 0 m_Settings: m_SettingsList: m_List: @@ -65,9 +64,12 @@ MonoBehaviour: - rid: 6490783647206211589 - rid: 6490783647206211590 - rid: 6490783647206211591 + - rid: 6490783648582205440 + - rid: 6490783648582205441 + - rid: 6490783648582205442 m_RuntimeSettings: m_List: [] - m_AssetVersion: 9 + m_AssetVersion: 10 m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_RenderingLayerNames: - Default @@ -164,7 +166,39 @@ MonoBehaviour: - rid: 6490783647206211588 type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: - blueNoise16LTex: [] + blueNoise16LTex: + - {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3} + - {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3} + - {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3} + - {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3} + - {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3} + - {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3} + - {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3} + - {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3} + - {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3} + - {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3} + - {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3} + - {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3} + - {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3} + - {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3} + - {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3} + - {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3} + - {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3} + - {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3} + - {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3} + - {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3} + - {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3} + - {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3} + - {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3} + - {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3} + - {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3} + - {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3} + - {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3} + - {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3} + - {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3} + - {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3} + - {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3} + - {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3} filmGrainTex: - {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3} - {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3} @@ -208,6 +242,29 @@ MonoBehaviour: type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} data: m_version: 0 + - rid: 6490783648582205440 + type: {class: UniversalRenderPipelineRuntimeTerrainShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3} + m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3} + m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3} + - rid: 6490783648582205441 + type: {class: URPTerrainShaderSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_IncludeTerrainShaders: 1 + - rid: 6490783648582205442 + type: {class: WorldRenderPipelineResources, ns: UnityEngine.PathTracing.Core, asm: Unity.PathTracing.Runtime} + data: + _version: 3 + _blitCubemap: {fileID: 7200000, guid: 5a992812cb320d146a66cc600200cce7, type: 3} + _blitGrayScaleCookie: {fileID: 7200000, guid: 557fa399e33bf7647bda5697c5c158df, type: 3} + _setAlphaChannelShader: {fileID: 7200000, guid: 5efaea0e81c66334aa9d062d6573e6fd, type: 3} + _environmentImportanceSamplingBuild: {fileID: 7200000, guid: 5bb2534d2411d344cbc54f880232640f, type: 3} + _skyBoxMesh: {fileID: 4300000, guid: 0529e6c5f6dea8c4a8c2835ed7de57cb, type: 2} + _sixFaceSkyBoxMesh: {fileID: 4300000, guid: a80925ceebd011741b42509226cefc74, type: 2} + _buildLightGridShader: {fileID: 7200000, guid: 16e47c1641bd0104e92b624601457bb0, type: 3} - rid: 7752762179098771456 type: {class: UniversalRenderPipelineRuntimeTextures, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: @@ -255,7 +312,6 @@ MonoBehaviour: type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: m_Version: 0 - m_EnableRenderCompatibilityMode: 0 - rid: 7752762179098771462 type: {class: UniversalRenderPipelineDebugShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} data: @@ -296,9 +352,9 @@ MonoBehaviour: m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} - m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3} - m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3} - m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3} + m_TerrainDetailLit: {fileID: 0} + m_TerrainDetailGrassBillboard: {fileID: 0} + m_TerrainDetailGrass: {fileID: 0} - rid: 7752762179098771467 type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime} data: diff --git a/Packages/manifest.json b/Packages/manifest.json index 912b13d..1860602 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,23 +1,23 @@ { "dependencies": { - "com.unity.2d.animation": "13.0.2", - "com.unity.2d.aseprite": "3.0.1", - "com.unity.2d.psdimporter": "12.0.1", + "com.unity.2d.animation": "14.0.3", + "com.unity.2d.aseprite": "4.0.1", + "com.unity.2d.psdimporter": "13.0.2", "com.unity.2d.sprite": "1.0.0", - "com.unity.2d.spriteshape": "13.0.0", + "com.unity.2d.spriteshape": "14.0.1", "com.unity.2d.tilemap": "1.0.0", - "com.unity.2d.tilemap.extras": "6.0.1", - "com.unity.2d.tooling": "1.0.0", - "com.unity.collab-proxy": "2.10.2", - "com.unity.ide.rider": "3.0.38", - "com.unity.ide.visualstudio": "2.0.25", - "com.unity.inputsystem": "1.16.0", + "com.unity.2d.tilemap.extras": "7.0.1", + "com.unity.2d.tooling": "2.0.1", + "com.unity.collab-proxy": "2.11.4", + "com.unity.ide.rider": "3.0.40", + "com.unity.ide.visualstudio": "2.0.27", + "com.unity.inputsystem": "1.19.0", "com.unity.multiplayer.center": "1.0.1", - "com.unity.render-pipelines.universal": "17.3.0", + "com.unity.render-pipelines.universal": "17.4.0", "com.unity.test-framework": "1.6.0", - "com.unity.timeline": "1.8.9", + "com.unity.timeline": "1.8.12", "com.unity.ugui": "2.0.0", - "com.unity.visualscripting": "1.9.9", + "com.unity.visualscripting": "1.9.11", "com.unity.modules.accessibility": "1.0.0", "com.unity.modules.adaptiveperformance": "1.0.0", "com.unity.modules.ai": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index e053a8b..82bf5be 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,11 +1,11 @@ { "dependencies": { "com.unity.2d.animation": { - "version": "13.0.2", + "version": "14.0.3", "depth": 0, "source": "registry", "dependencies": { - "com.unity.2d.common": "12.0.1", + "com.unity.2d.common": "13.0.1", "com.unity.2d.sprite": "1.0.0", "com.unity.collections": "2.4.3", "com.unity.modules.animation": "1.0.0", @@ -14,11 +14,11 @@ "url": "https://packages.unity.com" }, "com.unity.2d.aseprite": { - "version": "3.0.1", + "version": "4.0.1", "depth": 0, "source": "registry", "dependencies": { - "com.unity.2d.common": "12.0.1", + "com.unity.2d.common": "13.0.1", "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", "com.unity.mathematics": "1.2.6", @@ -27,7 +27,7 @@ "url": "https://packages.unity.com" }, "com.unity.2d.common": { - "version": "12.0.1", + "version": "13.0.1", "depth": 1, "source": "registry", "dependencies": { @@ -42,11 +42,11 @@ "url": "https://packages.unity.com" }, "com.unity.2d.psdimporter": { - "version": "12.0.1", + "version": "13.0.2", "depth": 0, "source": "registry", "dependencies": { - "com.unity.2d.common": "12.0.1", + "com.unity.2d.common": "13.0.1", "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0" }, @@ -59,11 +59,11 @@ "dependencies": {} }, "com.unity.2d.spriteshape": { - "version": "13.0.0", + "version": "14.0.1", "depth": 0, "source": "registry", "dependencies": { - "com.unity.2d.common": "12.0.0", + "com.unity.2d.common": "13.0.1", "com.unity.mathematics": "1.1.0", "com.unity.modules.physics2d": "1.0.0" }, @@ -79,7 +79,7 @@ } }, "com.unity.2d.tilemap.extras": { - "version": "6.0.1", + "version": "7.0.1", "depth": 0, "source": "registry", "dependencies": { @@ -90,17 +90,17 @@ "url": "https://packages.unity.com" }, "com.unity.2d.tooling": { - "version": "1.0.0", + "version": "2.0.1", "depth": 0, "source": "registry", "dependencies": { - "com.unity.2d.common": "12.0.1", + "com.unity.2d.common": "13.0.1", "com.unity.modules.uielements": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.burst": { - "version": "1.8.25", + "version": "1.8.28", "depth": 2, "source": "registry", "dependencies": { @@ -110,24 +110,23 @@ "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "2.10.2", + "version": "2.11.4", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.collections": { - "version": "2.6.2", + "version": "6.4.0", "depth": 1, - "source": "registry", + "source": "builtin", "dependencies": { "com.unity.burst": "1.8.23", "com.unity.mathematics": "1.3.2", - "com.unity.test-framework": "1.4.6", "com.unity.nuget.mono-cecil": "1.11.5", + "com.unity.test-framework": "1.4.6", "com.unity.test-framework.performance": "3.0.3" - }, - "url": "https://packages.unity.com" + } }, "com.unity.ext.nunit": { "version": "2.0.5", @@ -136,7 +135,7 @@ "dependencies": {} }, "com.unity.ide.rider": { - "version": "3.0.38", + "version": "3.0.40", "depth": 0, "source": "registry", "dependencies": { @@ -145,16 +144,16 @@ "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { - "version": "2.0.25", + "version": "2.0.27", "depth": 0, "source": "registry", "dependencies": { - "com.unity.test-framework": "1.1.31" + "com.unity.test-framework": "1.1.33" }, "url": "https://packages.unity.com" }, "com.unity.inputsystem": { - "version": "1.16.0", + "version": "1.19.0", "depth": 0, "source": "registry", "dependencies": { @@ -185,7 +184,7 @@ "url": "https://packages.unity.com" }, "com.unity.render-pipelines.core": { - "version": "17.3.0", + "version": "17.4.0", "depth": 1, "source": "builtin", "dependencies": { @@ -193,27 +192,26 @@ "com.unity.mathematics": "1.3.2", "com.unity.ugui": "2.0.0", "com.unity.collections": "2.4.3", - "com.unity.modules.physics": "1.0.0", "com.unity.modules.terrain": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" } }, "com.unity.render-pipelines.universal": { - "version": "17.3.0", + "version": "17.4.0", "depth": 0, "source": "builtin", "dependencies": { - "com.unity.render-pipelines.core": "17.3.0", - "com.unity.shadergraph": "17.3.0", - "com.unity.render-pipelines.universal-config": "17.0.3" + "com.unity.render-pipelines.core": "17.4.0", + "com.unity.shadergraph": "17.4.0", + "com.unity.render-pipelines.universal-config": "17.4.0" } }, "com.unity.render-pipelines.universal-config": { - "version": "17.0.3", + "version": "17.4.0", "depth": 1, "source": "builtin", "dependencies": { - "com.unity.render-pipelines.core": "17.0.3" + "com.unity.render-pipelines.core": "17.4.0" } }, "com.unity.searcher": { @@ -224,11 +222,11 @@ "url": "https://packages.unity.com" }, "com.unity.shadergraph": { - "version": "17.3.0", + "version": "17.4.0", "depth": 1, "source": "builtin", "dependencies": { - "com.unity.render-pipelines.core": "17.3.0", + "com.unity.render-pipelines.core": "17.4.0", "com.unity.searcher": "4.9.3" } }, @@ -253,7 +251,7 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.8.9", + "version": "1.8.12", "depth": 0, "source": "registry", "dependencies": { @@ -274,7 +272,7 @@ } }, "com.unity.visualscripting": { - "version": "1.9.9", + "version": "1.9.11", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index d712d2d..835c33f 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -10,4 +10,3 @@ EditorBuildSettings: guid: 8c9cfa26abfee488c85f1582747f6a02 m_configObjects: com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3} - m_UseUCBPForAssetBundles: 0 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset index 6cfcdda..0b1aeab 100644 --- a/ProjectSettings/Physics2DSettings.asset +++ b/ProjectSettings/Physics2DSettings.asset @@ -3,12 +3,12 @@ --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 - serializedVersion: 5 + serializedVersion: 11 m_Gravity: {x: 0, y: -9.81} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 m_PositionIterations: 3 - m_VelocityThreshold: 1 + m_BounceThreshold: 1 m_MaxLinearCorrection: 0.2 m_MaxAngularCorrection: 8 m_MaxTranslationSpeed: 100 @@ -19,6 +19,7 @@ Physics2DSettings: m_LinearSleepTolerance: 0.01 m_AngularSleepTolerance: 2 m_DefaultContactOffset: 0.01 + m_ContactThreshold: 0 m_JobOptions: serializedVersion: 2 useMultithreading: 0 @@ -39,18 +40,18 @@ Physics2DSettings: m_IslandSolverBodiesPerJob: 50 m_IslandSolverContactsPerJob: 50 m_SimulationMode: 0 + m_SimulationLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_MaxSubStepCount: 4 + m_MinSubStepFPS: 30 + m_UseSubStepping: 0 + m_UseSubStepContacts: 0 m_QueriesHitTriggers: 1 m_QueriesStartInColliders: 1 m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 1 m_AutoSyncTransforms: 0 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_GizmoOptions: 10 + m_LayerCollisionMatrix: 7fffffff7fffffff7fffffffffffffff7fffffff7fffffffffffffff48ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_PhysicsLowLevelSettings: {fileID: 0} diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 78f7137..eb91bb0 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 6000.3.0f1 -m_EditorVersionWithRevision: 6000.3.0f1 (d1870ce95baf) +m_EditorVersion: 6000.4.1f1 +m_EditorVersionWithRevision: 6000.4.1f1 (8535861f39e1) diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..ede5887 --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/ProjectSettings/ShaderGraphSettings.asset b/ProjectSettings/ShaderGraphSettings.asset index 10b82f0..0421697 100644 --- a/ProjectSettings/ShaderGraphSettings.asset +++ b/ProjectSettings/ShaderGraphSettings.asset @@ -13,6 +13,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: shaderVariantLimit: 128 + overrideShaderVariantLimit: 0 customInterpolatorErrorThreshold: 32 customInterpolatorWarningThreshold: 16 customHeatmapValues: {fileID: 0} diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..40e609b 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -2,7 +2,7 @@ %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: - serializedVersion: 2 + serializedVersion: 3 tags: [] layers: - Default @@ -11,8 +11,8 @@ TagManager: - - Water - UI - - - - + - Entity + - Bullet - - - @@ -41,3 +41,5 @@ TagManager: - name: Default uniqueID: 0 locked: 0 + m_RenderingLayers: + - Default diff --git a/ProjectSettings/URPProjectSettings.asset b/ProjectSettings/URPProjectSettings.asset index 08faf03..6ad5631 100644 --- a/ProjectSettings/URPProjectSettings.asset +++ b/ProjectSettings/URPProjectSettings.asset @@ -12,4 +12,5 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} m_Name: m_EditorClassIdentifier: - m_LastMaterialVersion: 9 + m_LastMaterialVersion: 10 + m_ProjectSettingFolderPath: URPDefaultResources diff --git a/TARGET.md b/TARGET.md new file mode 100644 index 0000000..9fa41a4 --- /dev/null +++ b/TARGET.md @@ -0,0 +1,28 @@ +### 🎮 Project #1: "Memory Defense" (메모리 디펜스) + +**1. 사용 엔진:** **Unity** (2D/3D 무관, 빠른 구현을 위해 2D 추천) + +**2. 게임 기획 (테마 및 룰):** +매우 단순한 형태의 '원 스크린(One-Screen) 슈팅/디펜스' 게임입니다. +* **플레이어:** 화면 중앙에 고정되어 있습니다. (마우스 방향을 바라보게 하면 좋습니다) +* **적:** 화면 밖 사방에서 플레이어를 향해 끊임없이(그리고 점점 많이) 몰려옵니다. +* **공격:** 마우스를 클릭하면 총알이 날아가 적을 파괴합니다. +* **목표:** 적에게 닿기 전까지 최대한 오래 버티며 점수를 올립니다. + +**3. 🛠️ 기술 미션: "Instantiate / Destroy 사용 금지!"** +이번 프로젝트의 핵심입니다. 유니티에서 게임이 플레이되는 도중에는 **절대** `Instantiate`(생성)와 `Destroy`(파괴) 함수를 호출해서는 안 됩니다. + +* **해결 방법:** **오브젝트 풀링(Object Pooling)** 패턴을 직접 구현하세요. +* **세부 제약:** + 1. 게임이 시작될 때(Start 또는 Awake), 미리 총알 50개, 적 100개 등을 생성해두고 비활성화(`SetActive(false)`) 해둡니다. + 2. 총알을 쏘거나 적이 스폰될 때, 새로 생성하는 것이 아니라 **풀(Pool)에서 꺼내와서 활성화**시킵니다. + 3. 적이 죽거나 총알이 화면 밖으로 나가면, 파괴하는 것이 아니라 **다시 비활성화하여 풀에 반환**합니다. + +**💡 연우 님을 위한 기술적 TMI (왜 이걸 하나요?)** +Java와 C# 같은 가비지 컬렉터(GC) 기반 언어에서는, 런타임 중 잦은 메모리 할당(동적 생성)과 해제가 발생하면 메모리 파편화가 일어나고, 어느 순간 GC가 작동하며 게임에 렉(Spike)이 발생합니다. 최적화와 엔진의 동작 원리에 관심이 많은 연우 님이라면, 이 메모리 관리의 기초를 뼈저리게(?) 느껴보는 것이 아주 중요합니다. + +--- + +**마인드셋 팁:** +* 그래픽은 동그라미, 네모 같은 유니티 기본 도형(Sprite)만 써도 전혀 상관없습니다. 기획과 아트는 타협하세요! +* 핵심은 **"오브젝트 풀링 구조를 내가 얼마나 깔끔하게 코드로 짰는가?"** 입니다. (예: Queue를 썼는가, List를 썼는가? Generic 타입으로 만들어서 적과 총알 모두 호환되게 만들었는가?) \ No newline at end of file