diff --git a/Assets/Art/Material/Line.mat b/Assets/Art/Material/Line.mat new file mode 100644 index 0000000..561fd09 --- /dev/null +++ b/Assets/Art/Material/Line.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-601912231420489210 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Line + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.832884, g: 0.18065912, b: 0.10663608, a: 1} + - _Color: {r: 0.832884, g: 0.18065909, b: 0.106636055, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Art/Material/Line.mat.meta b/Assets/Art/Material/Line.mat.meta new file mode 100644 index 0000000..6bebff5 --- /dev/null +++ b/Assets/Art/Material/Line.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd7b6ef1c8d01724683c1f9dc2114f9e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML deleted file mode 100644 index 02c3c95..0000000 --- a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML +++ /dev/null @@ -1,14 +0,0 @@ - - - - DOTweenUpgradeManager - - - - - This class and its whole library are deleted the first time DOTween's setup is run after an upgrade (or after a new install). - NOTE: DidReloadScripts doesn't work on first install so it's useless, InitializeOnLoad is the only way - - - - diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta deleted file mode 100644 index a7f43a3..0000000 --- a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 3df9fdaadcb4c394e826a4d8d20bb952 -TextScriptImporter: - userData: diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll deleted file mode 100644 index ec5dd4c..0000000 Binary files a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll and /dev/null differ diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta deleted file mode 100644 index c6717e9..0000000 --- a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta +++ /dev/null @@ -1,22 +0,0 @@ -fileFormatVersion: 2 -guid: 2bf936a5d80799e4e88ec9270fea75a4 -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Any: - enabled: 0 - settings: {} - Editor: - enabled: 1 - settings: - DefaultValueInitialized: true - WindowsStoreApps: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Prefab/Gameplay/Card.prefab b/Assets/Prefab/Gameplay/Card.prefab index 2e06d9b..7474441 100644 --- a/Assets/Prefab/Gameplay/Card.prefab +++ b/Assets/Prefab/Gameplay/Card.prefab @@ -27,11 +27,11 @@ Transform: m_GameObject: {fileID: 2782175792003806444} serializedVersion: 2 m_LocalRotation: {x: 0.49870676, y: 0.5012899, z: -0.49870676, w: 0.5012899} - m_LocalPosition: {x: -0, y: 0, z: -3.059569e-10} - m_LocalScale: {x: 140, y: 100.00001, z: 100.00001} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 140, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8288806321783590124} + m_Father: {fileID: 9209320535166562747} m_LocalEulerAnglesHint: {x: 89.704, y: 90, z: 0} --- !u!33 &528940306177264885 MeshFilter: @@ -109,14 +109,14 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2850323074743059847} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 602904479329865416} - {fileID: 461998205047545604} - m_Father: {fileID: 8288806321783590124} + m_Father: {fileID: 9209320535166562747} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -344,6 +344,40 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: Name +--- !u!1 &5397061992114806696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9209320535166562747} + m_Layer: 0 + m_Name: Display + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9209320535166562747 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5397061992114806696} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 2653266799713255234} + - {fileID: 6520432709391570604} + - {fileID: 4429445361403306062} + m_Father: {fileID: 8288806321783590124} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5614617657564266223 GameObject: m_ObjectHideFlags: 0 @@ -371,11 +405,11 @@ Transform: m_GameObject: {fileID: 5614617657564266223} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0, y: 0.0069994777, z: 3.059569e-10} + m_LocalPosition: {x: 0, y: 0.0069994777, z: 0} m_LocalScale: {x: 140, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 8288806321783590124} + m_Father: {fileID: 9209320535166562747} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!33 &3884522584561958753 MeshFilter: @@ -437,6 +471,7 @@ GameObject: m_Component: - component: {fileID: 8288806321783590124} - component: {fileID: 1562880286992207475} + - component: {fileID: 9063485462769681386} m_Layer: 0 m_Name: Card m_TagString: Untagged @@ -457,9 +492,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 2653266799713255234} - - {fileID: 6520432709391570604} - - {fileID: 4429445361403306062} + - {fileID: 9209320535166562747} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1562880286992207475 @@ -474,6 +507,28 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 84de392c49524b6d8da09ea51c4326c0, type: 3} m_Name: m_EditorClassIdentifier: - meshRenderer: {fileID: 0} + frontMeshRenderer: {fileID: 5156951718673587996} + backMeshRenderer: {fileID: 1574770595276204962} cardNameText: {fileID: 1641835144558014658} cardDescriptionText: {fileID: 968774230685629330} +--- !u!65 &9063485462769681386 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8257975731489021549} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 0.3088441, y: 0.051474422, z: 0.43081665} + m_Center: {x: 0, y: 0.003252551, z: 0} diff --git a/Assets/Prefab/Gameplay/Facility.prefab b/Assets/Prefab/Gameplay/Facility.prefab new file mode 100644 index 0000000..7c41279 --- /dev/null +++ b/Assets/Prefab/Gameplay/Facility.prefab @@ -0,0 +1,435 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1285331887159970702 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7491258034527094893} + - component: {fileID: 6262235791141659756} + - component: {fileID: 2577312867888845904} + m_Layer: 8 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7491258034527094893 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285331887159970702} + 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: 1 + m_Children: [] + m_Father: {fileID: 6937855010132688348} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6262235791141659756 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285331887159970702} + m_CullTransparentMesh: 1 +--- !u!114 &2577312867888845904 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1285331887159970702} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2729643726423589850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 77361986880837193} + - component: {fileID: 1966939443082034528} + - component: {fileID: 1791426126632920350} + - component: {fileID: 6559594074799131378} + - component: {fileID: 2740601845815088892} + m_Layer: 0 + m_Name: Facility + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &77361986880837193 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2729643726423589850} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.71, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1088716417574490523} + - {fileID: 6937855010132688348} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1966939443082034528 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2729643726423589850} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1791426126632920350 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2729643726423589850} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &6559594074799131378 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2729643726423589850} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &2740601845815088892 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2729643726423589850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7986c88b8e1d4944832af56e23188597, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7518175844631896712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6937855010132688348} + - component: {fileID: 5901253883046461237} + - component: {fileID: 6141736885575726030} + - component: {fileID: 4792260559798747556} + m_Layer: 8 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6937855010132688348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7518175844631896712} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 7491258034527094893} + m_Father: {fileID: 77361986880837193} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1000, y: 1000} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &5901253883046461237 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7518175844631896712} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &6141736885575726030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7518175844631896712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 10 + m_PresetInfoIsWorld: 1 +--- !u!114 &4792260559798747556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7518175844631896712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &8100744246927696703 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1088716417574490523} + - component: {fileID: 7931149419085676358} + m_Layer: 7 + m_Name: Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1088716417574490523 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8100744246927696703} + 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: 77361986880837193} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &7931149419085676358 +LineRenderer: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8100744246927696703} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: fd7b6ef1c8d01724683c1f9dc2114f9e, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0.73317075, z: -1.0474617} + - {x: 0, y: 1.6364502, z: -0.07521546} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.48411998 + value: 0.018180847 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0.5 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 diff --git a/Assets/Prefab/Gameplay/Facility.prefab.meta b/Assets/Prefab/Gameplay/Facility.prefab.meta new file mode 100644 index 0000000..3eddb81 --- /dev/null +++ b/Assets/Prefab/Gameplay/Facility.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b3e24e2df98d14e4ebc08cc68c071afa +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefab/Gameplay/Player.prefab b/Assets/Prefab/Gameplay/Player.prefab index 093db4d..f22c312 100644 --- a/Assets/Prefab/Gameplay/Player.prefab +++ b/Assets/Prefab/Gameplay/Player.prefab @@ -150,7 +150,9 @@ GameObject: - component: {fileID: 8268117914458884828} - component: {fileID: 2963170313432786625} - component: {fileID: 3697820982367928434} + - component: {fileID: 5633281206562703781} - component: {fileID: 1774433545530707224} + - component: {fileID: 7145954873497571105} m_Layer: 0 m_Name: Player m_TagString: Player @@ -254,6 +256,25 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: cardBookData: {fileID: 11400000, guid: 6884501cc489c254aaf6836e84649588, type: 2} + playerCardsController: {fileID: 0} +--- !u!114 &5633281206562703781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3550102669167288263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 18842cb320964275a76e2d57bee62adf, type: 3} + m_Name: + m_EditorClassIdentifier: + interactRange: 15 + interactableLayer: + serializedVersion: 2 + m_Bits: 4294967295 + playerCamera: {fileID: 4390370389971332335} + isDrawGizmos: 1 --- !u!114 &1774433545530707224 MonoBehaviour: m_ObjectHideFlags: 0 @@ -271,6 +292,20 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 4294967295 playerCamera: {fileID: 4390370389971332335} + isDrawGizmos: 0 +--- !u!114 &7145954873497571105 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3550102669167288263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2361e682e26b43ffb6ff9615d39c487e, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 4390370389971332335} --- !u!1 &3610935294554348573 GameObject: m_ObjectHideFlags: 0 @@ -344,7 +379,7 @@ Camera: m_Depth: -1 m_CullingMask: serializedVersion: 2 - m_Bits: 4294967295 + m_Bits: 119 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 diff --git a/Assets/Resources/Configs/Card/DamageCard 1.asset b/Assets/Resources/Configs/Card/DamageCard 1.asset new file mode 100644 index 0000000..e833be0 --- /dev/null +++ b/Assets/Resources/Configs/Card/DamageCard 1.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c9f5640c7fc55141af2931d0caed1e0, type: 3} + m_Name: DamageCard 1 + m_EditorClassIdentifier: + CardID: 2 + CardName: HealSelfCard + CardDescription: Heal Self 1 + CardTexture: {fileID: 0} + Effects: + - type: 1 + value: 1 + target: 0 diff --git a/Assets/Resources/Configs/Card/DamageCard 1.asset.meta b/Assets/Resources/Configs/Card/DamageCard 1.asset.meta new file mode 100644 index 0000000..5ff21f1 --- /dev/null +++ b/Assets/Resources/Configs/Card/DamageCard 1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a32b3f751a8ff5c4892f97457f8c9b62 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Configs/Card/DamageCard.asset b/Assets/Resources/Configs/Card/DamageCard.asset index 1c95d71..cae89b2 100644 --- a/Assets/Resources/Configs/Card/DamageCard.asset +++ b/Assets/Resources/Configs/Card/DamageCard.asset @@ -12,9 +12,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7c9f5640c7fc55141af2931d0caed1e0, type: 3} m_Name: DamageCard m_EditorClassIdentifier: - CardID: 0 + CardID: 1 CardName: DamageCard - CardDescription: + CardDescription: Damage Enemy 1 CardTexture: {fileID: 0} Effects: - type: 0 diff --git a/Assets/Scenes/Level1.meta b/Assets/Scenes/Level1.meta new file mode 100644 index 0000000..1820eed --- /dev/null +++ b/Assets/Scenes/Level1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6bfe0a7da744bcf4da9da8b8f2c829a9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Level1.unity b/Assets/Scenes/Level1.unity index c113e9c..7706884 100644 --- a/Assets/Scenes/Level1.unity +++ b/Assets/Scenes/Level1.unity @@ -15,12 +15,12 @@ RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 9 m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogColor: {r: 0.1159029, g: 0.10418764, b: 0.10418764, a: 1} m_FogMode: 3 - m_FogDensity: 0.01 + m_FogDensity: 0.13 m_LinearFogStart: 0 m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientSkyColor: {r: 0, g: 0, b: 0, 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 @@ -96,8 +96,10 @@ LightmapSettings: m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} + m_LightingDataAsset: {fileID: 112000000, guid: b93790e82c6f1a24daf29161c2a6ca71, + type: 2} + m_LightingSettings: {fileID: 4890085278179872738, guid: 06bbce95c474a2f4885359ffd5fad188, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -1173,6 +1175,153 @@ Transform: - {fileID: 1234629635} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2084876468 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalPosition.x + value: -1.5440545 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.5792608 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalPosition.z + value: 1.0709323 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8031699868756389050, guid: 396fdaee2868c534e927e0c2d4da65da, + type: 3} + propertyPath: m_Name + value: NormalCardBook + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 396fdaee2868c534e927e0c2d4da65da, type: 3} +--- !u!1001 &2088331975902746738 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.71 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1285331887159970702, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_Layer + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 2729643726423589850, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_Name + value: Facility + objectReference: {fileID: 0} + - target: {fileID: 7518175844631896712, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_Layer + value: 8 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: + - {fileID: 7518175844631896712, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} --- !u!1001 &4976374363246253691 PrefabInstance: m_ObjectHideFlags: 0 @@ -1194,7 +1343,7 @@ PrefabInstance: - target: {fileID: 277803484986371650, guid: 08dc103fc56f46345889fd4f2109149b, type: 3} propertyPath: m_LocalPosition.z - value: -81.743225 + value: -79.46 objectReference: {fileID: 0} - target: {fileID: 277803484986371650, guid: 08dc103fc56f46345889fd4f2109149b, type: 3} @@ -1277,7 +1426,7 @@ PrefabInstance: - target: {fileID: 7437893023972897012, guid: 667aedb0d3f8c9d469819c9ff2b4472b, type: 3} propertyPath: m_LocalPosition.z - value: -86.23 + value: -16.2 objectReference: {fileID: 0} - target: {fileID: 7437893023972897012, guid: 667aedb0d3f8c9d469819c9ff2b4472b, type: 3} @@ -1410,3 +1559,5 @@ SceneRoots: - {fileID: 8808393704070049945} - {fileID: 1969328118} - {fileID: 382458521} + - {fileID: 2084876468} + - {fileID: 2088331975902746738} diff --git a/Assets/Scenes/Level1/LightingData.asset b/Assets/Scenes/Level1/LightingData.asset new file mode 100644 index 0000000..4a27dfd Binary files /dev/null and b/Assets/Scenes/Level1/LightingData.asset differ diff --git a/Assets/Scenes/Level1/LightingData.asset.meta b/Assets/Scenes/Level1/LightingData.asset.meta new file mode 100644 index 0000000..6869d5e --- /dev/null +++ b/Assets/Scenes/Level1/LightingData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b93790e82c6f1a24daf29161c2a6ca71 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 112000000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Level1/ReflectionProbe-0.exr b/Assets/Scenes/Level1/ReflectionProbe-0.exr new file mode 100644 index 0000000..f38e702 Binary files /dev/null and b/Assets/Scenes/Level1/ReflectionProbe-0.exr differ diff --git a/Assets/Scenes/Level1/ReflectionProbe-0.exr.meta b/Assets/Scenes/Level1/ReflectionProbe-0.exr.meta new file mode 100644 index 0000000..97b8334 --- /dev/null +++ b/Assets/Scenes/Level1/ReflectionProbe-0.exr.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: f1db76615162ecf4996139b91b6b5c75 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + 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: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/UIScene.unity b/Assets/Scenes/UIScene.unity index 46d74f4..f3500cf 100644 --- a/Assets/Scenes/UIScene.unity +++ b/Assets/Scenes/UIScene.unity @@ -190,6 +190,56 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &165485609 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 165485610} + - component: {fileID: 165485611} + m_Layer: 5 + m_Name: PlayerEditPanelViwer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &165485610 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165485609} + 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: + - {fileID: 1748531705} + m_Father: {fileID: 1067459529} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &165485611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165485609} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29d585e25c3a4840871167630b3c7a49, type: 3} + m_Name: + m_EditorClassIdentifier: + IsOpenOnFirstLoad: 0 --- !u!1 &1067459524 GameObject: m_ObjectHideFlags: 0 @@ -299,6 +349,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1082771939} + - {fileID: 165485610} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -475,6 +526,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1200522801} m_CullTransparentMesh: 1 +--- !u!1 &1748531704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1748531705} + - component: {fileID: 1748531707} + - component: {fileID: 1748531706} + m_Layer: 5 + m_Name: EditComponent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1748531705 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748531704} + 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: 165485610} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1748531706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748531704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1748531707 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1748531704} + m_CullTransparentMesh: 1 --- !u!1 &1780593830 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Script/Core/UIViewerControllerLocator.cs b/Assets/Script/Core/ControllerLocator.cs similarity index 52% rename from Assets/Script/Core/UIViewerControllerLocator.cs rename to Assets/Script/Core/ControllerLocator.cs index c55f105..c403680 100644 --- a/Assets/Script/Core/UIViewerControllerLocator.cs +++ b/Assets/Script/Core/ControllerLocator.cs @@ -4,10 +4,9 @@ using System.Collections.Generic; namespace Core { /// - /// 专用于视图控制器层的 Locator。 - /// 支持层级父Locator查找(例如:UI模块Locator → 游戏全局Locator)。 + /// 专用于注册控制器的服务定位器 /// - public class UIViewerControllerLocator : ServiceLocator + public class ControllerLocator : ServiceLocator { // 这里可以按需添加额外的特化功能。 // 当前已经完整继承 Register、Resolve、TryGetWait 等功能。 diff --git a/Assets/Script/Core/UIViewerControllerLocator.cs.meta b/Assets/Script/Core/ControllerLocator.cs.meta similarity index 100% rename from Assets/Script/Core/UIViewerControllerLocator.cs.meta rename to Assets/Script/Core/ControllerLocator.cs.meta diff --git a/Assets/Script/Gameplay/Card/Card.cs b/Assets/Script/Gameplay/Card/Card.cs index ce092ac..b95f076 100644 --- a/Assets/Script/Gameplay/Card/Card.cs +++ b/Assets/Script/Gameplay/Card/Card.cs @@ -5,7 +5,8 @@ namespace Gameplay public class Card { private CardData _cardData; - public Texture Texture => _cardData.CardTexture; + public Texture FrontTexture => _cardData.FrontCardTexture; + public Texture BackTexture => _cardData.BackCardTexture; public string CardName => _cardData.CardName; public string CardDescription => _cardData.CardDescription; public EffectData[] Effects => _cardData.Effects; diff --git a/Assets/Script/Gameplay/Card/CardData.cs b/Assets/Script/Gameplay/Card/CardData.cs index b17d688..b8ce626 100644 --- a/Assets/Script/Gameplay/Card/CardData.cs +++ b/Assets/Script/Gameplay/Card/CardData.cs @@ -10,7 +10,8 @@ namespace Gameplay public int CardID; public string CardName; public string CardDescription; - public Texture CardTexture; + public Texture FrontCardTexture; + public Texture BackCardTexture; public EffectData[] Effects; } diff --git a/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs b/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs index 930f08f..35de0c6 100644 --- a/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs +++ b/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs @@ -1,5 +1,5 @@ using UnityEngine; -using Share; +using Interface; namespace Gameplay { public class CardContext diff --git a/Assets/Script/Gameplay/Card/CardViewer.cs b/Assets/Script/Gameplay/Card/CardViewer.cs index 967cdb4..1d59a01 100644 --- a/Assets/Script/Gameplay/Card/CardViewer.cs +++ b/Assets/Script/Gameplay/Card/CardViewer.cs @@ -1,23 +1,62 @@ +using System; using UnityEngine; using UnityEngine.UI; +using Interface; +using Core; +using Gameplay.Player; namespace Gameplay { - public class CardViewer : MonoBehaviour + public class CardViewer : MonoBehaviour, IInteractable { public Card Card; - - [SerializeField] private MeshRenderer meshRenderer; + + [SerializeField] private MeshRenderer frontMeshRenderer; + [SerializeField] private MeshRenderer backMeshRenderer; [SerializeField] private Text cardNameText; [SerializeField] private Text cardDescriptionText; - - public void Setup(Card card) + + private PlayerController _playerController; + + private void Start() + { + ControllerLocator.Instance.TryGet(out _playerController); + } + + public void SetCard(Card card) { Card = card; - meshRenderer.material.mainTexture = card.Texture; + if (frontMeshRenderer != null && card.FrontTexture != null) + { + frontMeshRenderer.material.mainTexture = card.FrontTexture; + } + + if (backMeshRenderer != null && card.BackTexture != null) + { + backMeshRenderer.material.mainTexture = card.BackTexture; + } + cardNameText.text = card.CardName; cardDescriptionText.text = card.CardDescription; } - } -} + public string GetInteractPrompt() + { + return ""; + } + + public void Interact(GameObject interactor) + { + } + + public void OnGazeEnter(GameObject editor) + { + if(_playerController != null) _playerController.playerCardsController.StopRotatingCards(); + } + + public void OnGazeExit(GameObject editor) + { + if (_playerController != null) _playerController.playerCardsController.StartRotatingCards(); + } + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Card/Utils.meta b/Assets/Script/Gameplay/Card/Utils.meta new file mode 100644 index 0000000..791c0f9 --- /dev/null +++ b/Assets/Script/Gameplay/Card/Utils.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5db247b9fcb44b3f85bdcc7cdb634481 +timeCreated: 1760575054 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Card/CardLoader.cs b/Assets/Script/Gameplay/Card/Utils/CardLoader.cs similarity index 62% rename from Assets/Script/Gameplay/Card/CardLoader.cs rename to Assets/Script/Gameplay/Card/Utils/CardLoader.cs index 2ac769c..36368ff 100644 --- a/Assets/Script/Gameplay/Card/CardLoader.cs +++ b/Assets/Script/Gameplay/Card/Utils/CardLoader.cs @@ -1,7 +1,7 @@ using UnityEngine; namespace Gameplay { - // 从Resources文件夹加载卡牌数据的静态类 + // 用来加载卡牌数据的静态类 public static class CardLoader { public static CardData GetCardDataByID(int cardID) @@ -17,5 +17,15 @@ namespace Gameplay Debug.LogError($"Card with ID {cardID} not found!"); return null; } + + public static Card GetCardByID(int cardID) + { + CardData cardData = GetCardDataByID(cardID); + if (cardData != null) + { + return new Card(cardData); + } + return null; + } } } \ No newline at end of file diff --git a/Assets/Script/Gameplay/Card/CardLoader.cs.meta b/Assets/Script/Gameplay/Card/Utils/CardLoader.cs.meta similarity index 100% rename from Assets/Script/Gameplay/Card/CardLoader.cs.meta rename to Assets/Script/Gameplay/Card/Utils/CardLoader.cs.meta diff --git a/Assets/Script/Gameplay/Combat/CombatFlowManager.cs b/Assets/Script/Gameplay/Combat/CombatFlowManager.cs index 51c9ee6..b6bb256 100644 --- a/Assets/Script/Gameplay/Combat/CombatFlowManager.cs +++ b/Assets/Script/Gameplay/Combat/CombatFlowManager.cs @@ -3,7 +3,7 @@ using System.Collections; using Core; using Gameplay.Enemy; using Gameplay.Player; -using Share; +using Interface; using UnityEngine; namespace Gameplay diff --git a/Assets/Script/Gameplay/Combat/CombatTrigger.cs b/Assets/Script/Gameplay/Combat/CombatTrigger.cs index cbe759a..c6cf739 100644 --- a/Assets/Script/Gameplay/Combat/CombatTrigger.cs +++ b/Assets/Script/Gameplay/Combat/CombatTrigger.cs @@ -1,7 +1,7 @@ using System; using UnityEngine; using Gameplay; -using Share; +using Interface; using Gameplay.Enemy; using Gameplay.Player; diff --git a/Assets/Script/Gameplay/Enemy/EnemyController.cs b/Assets/Script/Gameplay/Enemy/EnemyController.cs index f8e4925..c3a78ff 100644 --- a/Assets/Script/Gameplay/Enemy/EnemyController.cs +++ b/Assets/Script/Gameplay/Enemy/EnemyController.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Share; +using Interface; using UnityEngine; namespace Gameplay.Enemy diff --git a/Assets/Script/Gameplay/Facility.meta b/Assets/Script/Gameplay/Facility.meta new file mode 100644 index 0000000..d75c816 --- /dev/null +++ b/Assets/Script/Gameplay/Facility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09fa458abe0e7c54eafb0cf409eb60d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/Gameplay/Facility/EditComponent.cs b/Assets/Script/Gameplay/Facility/EditComponent.cs new file mode 100644 index 0000000..9692864 --- /dev/null +++ b/Assets/Script/Gameplay/Facility/EditComponent.cs @@ -0,0 +1,7 @@ +namespace Script.Gameplay.Facility +{ + public class EditComponent + { + + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Facility/EditComponent.cs.meta b/Assets/Script/Gameplay/Facility/EditComponent.cs.meta new file mode 100644 index 0000000..c617733 --- /dev/null +++ b/Assets/Script/Gameplay/Facility/EditComponent.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: bca7c28154234ab4b792dca4d2f92354 +timeCreated: 1760629389 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Facility/FacilityController.cs b/Assets/Script/Gameplay/Facility/FacilityController.cs new file mode 100644 index 0000000..56ad55f --- /dev/null +++ b/Assets/Script/Gameplay/Facility/FacilityController.cs @@ -0,0 +1,69 @@ +using System; +using Gameplay.Player; +using UnityEngine; +using Interface; + +namespace Script.Gameplay.Facility +{ + public class FacilityController : MonoBehaviour, IInteractable, IEditable + { + public FacilityModifier facilityModifier; + + private void Awake() + { + if (facilityModifier == null) + { + facilityModifier = GetComponent(); + } + } + + private void Start() + { + } + + public string GetInteractPrompt() + { + return ""; + } + + public void Interact(GameObject interactor) + { + + } + + public void OnGazeEnter(GameObject editor) + { + // 物体弹出按F可交互菜单 + } + + public void OnGazeExit(GameObject editor) + { + // 物体取消菜单 + } + + public void OnGazeEnter(PlayerEditController editor) + { + + } + + public void OnGazeExit(PlayerEditController editor) + { + + } + + public void BeginEdit() + { + + } + + public void EndEdit() + { + + } + + public IEditable GetEditable() + { + return this; + } + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Facility/FacilityController.cs.meta b/Assets/Script/Gameplay/Facility/FacilityController.cs.meta new file mode 100644 index 0000000..0ec01f9 --- /dev/null +++ b/Assets/Script/Gameplay/Facility/FacilityController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7986c88b8e1d4944832af56e23188597 +timeCreated: 1760664530 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Facility/FacilityModifier.cs b/Assets/Script/Gameplay/Facility/FacilityModifier.cs new file mode 100644 index 0000000..cd02e98 --- /dev/null +++ b/Assets/Script/Gameplay/Facility/FacilityModifier.cs @@ -0,0 +1,27 @@ +using UnityEngine; + +namespace Script.Gameplay.Facility +{ + public class FacilityModifier : MonoBehaviour + { + private Transform _transform; + private Collider _collider; + private Rigidbody _rigidbody; + + public void ModifyComponent(bool isOpen, T component) where T : Component + { + var targetComponent = this.GetComponent(); + if (targetComponent != null) + { + if (isOpen) + { + targetComponent.gameObject.SetActive(true); + } + else + { + targetComponent.gameObject.SetActive(false); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Facility/FacilityModifier.cs.meta b/Assets/Script/Gameplay/Facility/FacilityModifier.cs.meta new file mode 100644 index 0000000..042d2fe --- /dev/null +++ b/Assets/Script/Gameplay/Facility/FacilityModifier.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b1db33a437984a1a8fae09ab8c5de7e4 +timeCreated: 1760667210 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Input/InputManager.cs b/Assets/Script/Gameplay/Input/InputManager.cs index 81c508d..be29b80 100644 --- a/Assets/Script/Gameplay/Input/InputManager.cs +++ b/Assets/Script/Gameplay/Input/InputManager.cs @@ -1,12 +1,13 @@ using System; using UnityEngine; +using UnityEngine.InputSystem; using Core; -namespace Input +namespace Script.Gameplay.Input { public class InputManager : MonoSingleton, IInputManager { - private PlayerInputActions _input; // 自动生成的输入类 + public PlayerInputActions Input; // 自动生成的输入类 // 当前输入值 public Vector2 Move { get; private set; } @@ -14,36 +15,43 @@ namespace Input public bool JumpPressed { get; private set; } public bool PausePressed { get; private set; } public bool InteractPressed { get; private set; } + public bool EditPressed { get; private set; } + + private bool _hasFocus = true; private void Awake() { - _input = new PlayerInputActions(); + Input = new PlayerInputActions(); } private void OnEnable() { - _input.Enable(); + Input.Enable(); // 注册事件 - _input.Player.Move.performed += ctx => Move = ctx.ReadValue(); - _input.Player.Move.canceled += ctx => Move = Vector2.zero; + Input.Player.Move.performed += ctx => Move = ctx.ReadValue(); + Input.Player.Move.canceled += ctx => Move = Vector2.zero; - _input.Player.Look.performed += ctx => Look = ctx.ReadValue(); - _input.Player.Look.canceled += ctx => Look = Vector2.zero; + Input.Player.Look.performed += ctx => Look = ctx.ReadValue(); + Input.Player.Look.canceled += ctx => Look = Vector2.zero; - _input.Player.Jump.performed += ctx => JumpPressed = true; - _input.Player.Jump.canceled += ctx => JumpPressed = false; + Input.Player.Jump.performed += ctx => JumpPressed = true; + Input.Player.Jump.canceled += ctx => JumpPressed = false; + + Input.Player.Pause.performed += ctx => PausePressed = true; + Input.Player.Pause.canceled += ctx => PausePressed = false; - // _input.Player.Pause.performed += ctx => PausePressed = true; - // _input.Player.Pause.canceled += ctx => PausePressed = false; + Input.Player.Interact.performed += ctx => InteractPressed = true; + Input.Player.Interact.canceled += ctx => InteractPressed = false; - _input.Player.Interact.performed += ctx => InteractPressed = true; - _input.Player.Interact.canceled += ctx => InteractPressed = false; + Input.Player.Edit.performed += ctx => EditPressed = true; + Input.Player.Edit.canceled += ctx => EditPressed = false; } private void OnDisable() { - _input.Disable(); + // 可选:取消注册以防止重复订阅(简单项目可不解除) + Input.Disable(); } private void Start() @@ -57,15 +65,15 @@ namespace Input // if (PausePressed) // { // Debug.Log("Pause Pressed!"); - // PausePressed = false; // 手动清除 + // PausePressed = false; // 手动清除(如果需要瞬时) // } } // 🔧 示例方法:允许外部模块手动启用/禁用输入(比如暂停菜单) public void SetInputEnabled(bool enabled) { - if (enabled) _input.Enable(); - else _input.Disable(); + if (enabled) Input.Enable(); + else Input.Disable(); } public void SetCursorState(bool visible, CursorLockMode lockMode) @@ -78,11 +86,11 @@ namespace Input { if (enabled) { - _input.Player.Look.Enable(); + Input.Player.Look.Enable(); } else { - _input.Player.Look.Disable(); + Input.Player.Look.Disable(); Look = Vector2.zero; // 禁用时清除Look值 } } @@ -91,13 +99,28 @@ namespace Input { if (enabled) { - _input.Player.Move.Enable(); + Input.Player.Move.Enable(); } else { - _input.Player.Move.Disable(); + Input.Player.Move.Disable(); Move = Vector2.zero; // 禁用时清除Move值 } } + + // 当窗口获得/失去焦点时调用(玩家是否在注视游戏窗口) + private void OnApplicationFocus(bool hasFocus) + { + _hasFocus = hasFocus; + // 失去焦点视为系统级暂停 + if (_hasFocus) + { + SetCursorState(_hasFocus, CursorLockMode.Locked); + } + else + { + SetCursorState(_hasFocus, CursorLockMode.None); + } + } } -} \ No newline at end of file +} diff --git a/Assets/Script/Gameplay/Input/PlayerInputActions.cs b/Assets/Script/Gameplay/Input/PlayerInputActions.cs index df94597..1421ac8 100644 --- a/Assets/Script/Gameplay/Input/PlayerInputActions.cs +++ b/Assets/Script/Gameplay/Input/PlayerInputActions.cs @@ -15,7 +15,7 @@ using System.Collections.Generic; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Utilities; -namespace Input +namespace Script.Gameplay.Input { public partial class @PlayerInputActions: IInputActionCollection2, IDisposable { @@ -64,6 +64,33 @@ namespace Input ""processors"": """", ""interactions"": """", ""initialStateCheck"": false + }, + { + ""name"": ""Pause"", + ""type"": ""Button"", + ""id"": ""822c2284-94e3-4636-894c-adfe85ac467d"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""SwitchWatchMode"", + ""type"": ""Button"", + ""id"": ""73ffcbfd-15ae-4580-99c4-d7d06ff13bb6"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Edit"", + ""type"": ""Button"", + ""id"": ""20a9157a-918b-42f1-80b1-9e014426068e"", + ""expectedControlType"": """", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false } ], ""bindings"": [ @@ -165,6 +192,39 @@ namespace Input ""action"": ""Interact"", ""isComposite"": false, ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""943ba523-b024-410e-a250-735a5ffdf786"", + ""path"": ""/escape"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Pause"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""47af0242-9835-4b1a-82c8-e3fc32489870"", + ""path"": ""/tab"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""SwitchWatchMode"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""9e9bf8ec-8b3e-4230-a10c-ae874395711a"", + ""path"": ""/x"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Edit"", + ""isComposite"": false, + ""isPartOfComposite"": false } ] } @@ -177,6 +237,9 @@ namespace Input m_Player_Look = m_Player.FindAction("Look", throwIfNotFound: true); m_Player_Jump = m_Player.FindAction("Jump", throwIfNotFound: true); m_Player_Interact = m_Player.FindAction("Interact", throwIfNotFound: true); + m_Player_Pause = m_Player.FindAction("Pause", throwIfNotFound: true); + m_Player_SwitchWatchMode = m_Player.FindAction("SwitchWatchMode", throwIfNotFound: true); + m_Player_Edit = m_Player.FindAction("Edit", throwIfNotFound: true); } ~@PlayerInputActions() @@ -247,6 +310,9 @@ namespace Input private readonly InputAction m_Player_Look; private readonly InputAction m_Player_Jump; private readonly InputAction m_Player_Interact; + private readonly InputAction m_Player_Pause; + private readonly InputAction m_Player_SwitchWatchMode; + private readonly InputAction m_Player_Edit; public struct PlayerActions { private @PlayerInputActions m_Wrapper; @@ -255,6 +321,9 @@ namespace Input public InputAction @Look => m_Wrapper.m_Player_Look; public InputAction @Jump => m_Wrapper.m_Player_Jump; public InputAction @Interact => m_Wrapper.m_Player_Interact; + public InputAction @Pause => m_Wrapper.m_Player_Pause; + public InputAction @SwitchWatchMode => m_Wrapper.m_Player_SwitchWatchMode; + public InputAction @Edit => m_Wrapper.m_Player_Edit; public InputActionMap Get() { return m_Wrapper.m_Player; } public void Enable() { Get().Enable(); } public void Disable() { Get().Disable(); } @@ -276,6 +345,15 @@ namespace Input @Interact.started += instance.OnInteract; @Interact.performed += instance.OnInteract; @Interact.canceled += instance.OnInteract; + @Pause.started += instance.OnPause; + @Pause.performed += instance.OnPause; + @Pause.canceled += instance.OnPause; + @SwitchWatchMode.started += instance.OnSwitchWatchMode; + @SwitchWatchMode.performed += instance.OnSwitchWatchMode; + @SwitchWatchMode.canceled += instance.OnSwitchWatchMode; + @Edit.started += instance.OnEdit; + @Edit.performed += instance.OnEdit; + @Edit.canceled += instance.OnEdit; } private void UnregisterCallbacks(IPlayerActions instance) @@ -292,6 +370,15 @@ namespace Input @Interact.started -= instance.OnInteract; @Interact.performed -= instance.OnInteract; @Interact.canceled -= instance.OnInteract; + @Pause.started -= instance.OnPause; + @Pause.performed -= instance.OnPause; + @Pause.canceled -= instance.OnPause; + @SwitchWatchMode.started -= instance.OnSwitchWatchMode; + @SwitchWatchMode.performed -= instance.OnSwitchWatchMode; + @SwitchWatchMode.canceled -= instance.OnSwitchWatchMode; + @Edit.started -= instance.OnEdit; + @Edit.performed -= instance.OnEdit; + @Edit.canceled -= instance.OnEdit; } public void RemoveCallbacks(IPlayerActions instance) @@ -315,6 +402,9 @@ namespace Input void OnLook(InputAction.CallbackContext context); void OnJump(InputAction.CallbackContext context); void OnInteract(InputAction.CallbackContext context); + void OnPause(InputAction.CallbackContext context); + void OnSwitchWatchMode(InputAction.CallbackContext context); + void OnEdit(InputAction.CallbackContext context); } } } diff --git a/Assets/Script/Gameplay/Interface/ICharacter.cs b/Assets/Script/Gameplay/Interface/ICharacter.cs index d3f0046..d60869d 100644 --- a/Assets/Script/Gameplay/Interface/ICharacter.cs +++ b/Assets/Script/Gameplay/Interface/ICharacter.cs @@ -3,7 +3,7 @@ using UnityEngine; using Gameplay; using System.Collections.Generic; -namespace Share +namespace Interface { /// /// 角色接口,可受伤害、治疗和添加Buff、发生战斗 diff --git a/Assets/Script/Gameplay/Interface/IEditable.cs b/Assets/Script/Gameplay/Interface/IEditable.cs new file mode 100644 index 0000000..5fc6657 --- /dev/null +++ b/Assets/Script/Gameplay/Interface/IEditable.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using Gameplay.Player; +namespace Interface +{ + public interface IEditable + { + void OnGazeEnter(PlayerEditController editor); // 玩家开始注视时触发 + void OnGazeExit(PlayerEditController editor); // 玩家停止注视时触发 + void BeginEdit(); + void EndEdit(); + IEditable GetEditable(); + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Interface/IEditable.cs.meta b/Assets/Script/Gameplay/Interface/IEditable.cs.meta new file mode 100644 index 0000000..ac65dc3 --- /dev/null +++ b/Assets/Script/Gameplay/Interface/IEditable.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8a22b94dcb1d4eb78b7b07ebd8967dc6 +timeCreated: 1760629255 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Interface/IInteractable.cs b/Assets/Script/Gameplay/Interface/IInteractable.cs index e1a3d65..776b7c0 100644 --- a/Assets/Script/Gameplay/Interface/IInteractable.cs +++ b/Assets/Script/Gameplay/Interface/IInteractable.cs @@ -1,9 +1,11 @@ using UnityEngine; -namespace Share +namespace Interface { public interface IInteractable { string GetInteractPrompt(); // 返回提示文字,例如“按E打开门” void Interact(GameObject interactor); // 当玩家交互时触发 + void OnGazeEnter(GameObject editor); // 玩家开始注视时触发 + void OnGazeExit(GameObject editor); // 玩家停止注视时触发 } } \ No newline at end of file diff --git a/Assets/Script/Gameplay/Map/FlightTrigger.cs b/Assets/Script/Gameplay/Map/FlightTrigger.cs index e729c98..e9628a4 100644 --- a/Assets/Script/Gameplay/Map/FlightTrigger.cs +++ b/Assets/Script/Gameplay/Map/FlightTrigger.cs @@ -1,5 +1,5 @@ using UnityEngine; -using Share; +using Interface; namespace Map { public class FlightTrigger : MonoBehaviour diff --git a/Assets/Script/Gameplay/Player/PlayerCameraController.cs b/Assets/Script/Gameplay/Player/PlayerCameraController.cs index 3efa0df..04a72fd 100644 --- a/Assets/Script/Gameplay/Player/PlayerCameraController.cs +++ b/Assets/Script/Gameplay/Player/PlayerCameraController.cs @@ -1,6 +1,6 @@ using Core; using UnityEngine; -using Input; +using Script.Gameplay.Input; namespace Gameplay.Player { @@ -10,34 +10,28 @@ namespace Gameplay.Player /// public class PlayerCameraController : MonoBehaviour { - [Header("References")] - [Tooltip("角色根 Transform,用于水平旋转(yaw)")] + [Header("References")] [Tooltip("角色根 Transform,用于水平旋转(yaw)")] public Transform playerBody; + [Tooltip("如果相机不是挂载在同一物体上,可以指定相机 Transform(可选)")] public Transform cameraTransform; - [Header("Sensitivity & Invert")] - [Tooltip("鼠标灵敏度")] - [Range(0.01f, 1f)] + [Header("Sensitivity & Invert")] [Tooltip("鼠标灵敏度")] [Range(0.01f, 1f)] public float mouseSensitivity = 0.2f; - [Tooltip("反转垂直轴")] - public bool invertY = false; + [Tooltip("反转垂直轴")] public bool invertY = false; - [Header("Vertical Limits")] - [Tooltip("向上最大仰角(度)")] + [Header("Vertical Limits")] [Tooltip("向上最大仰角(度)")] public float maxUpAngle = 60f; - [Tooltip("向下最大俯角(度)")] - public float maxDownAngle = 60f; - [Header("Smoothing")] - public bool enableSmoothing = false; - [Tooltip("旋转平滑时间(秒)")] - public float smoothTime = 0.05f; + [Tooltip("向下最大俯角(度)")] public float maxDownAngle = 60f; + + [Header("Smoothing")] public bool enableSmoothing = false; + [Tooltip("旋转平滑时间(秒)")] public float smoothTime = 0.05f; // internal state private float xRotation = 0f; // 垂直角(pitch) - private float yaw = 0f; // 水平角(yaw) + private float yaw = 0f; // 水平角(yaw) private float smoothVelocityPitch = 0f; private float smoothVelocityYaw = 0f; @@ -50,7 +44,6 @@ namespace Gameplay.Player Vector3 euler = cameraTransform.localEulerAngles; xRotation = NormalizeAngle(euler.x); yaw = NormalizeAngle(playerBody ? playerBody.eulerAngles.y : transform.eulerAngles.y); - } void Update() @@ -71,8 +64,10 @@ namespace Gameplay.Player if (enableSmoothing) { - float smoothPitch = Mathf.SmoothDampAngle(cameraTransform.localEulerAngles.x, xRotation, ref smoothVelocityPitch, smoothTime); - float smoothYaw = Mathf.SmoothDampAngle(playerBody ? playerBody.eulerAngles.y : transform.eulerAngles.y, yaw, ref smoothVelocityYaw, smoothTime); + float smoothPitch = Mathf.SmoothDampAngle(cameraTransform.localEulerAngles.x, xRotation, + ref smoothVelocityPitch, smoothTime); + float smoothYaw = Mathf.SmoothDampAngle(playerBody ? playerBody.eulerAngles.y : transform.eulerAngles.y, + yaw, ref smoothVelocityYaw, smoothTime); cameraTransform.localRotation = Quaternion.Euler(smoothPitch, 0f, 0f); if (playerBody) @@ -97,5 +92,7 @@ namespace Gameplay.Player angle = (angle + 180f) % 360f - 180f; return angle; } + + } -} +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerCardsController.cs b/Assets/Script/Gameplay/Player/PlayerCardsController.cs new file mode 100644 index 0000000..0f7fbdc --- /dev/null +++ b/Assets/Script/Gameplay/Player/PlayerCardsController.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using UnityEngine; +using Quaternion = UnityEngine.Quaternion; +using Vector3 = UnityEngine.Vector3; + +namespace Gameplay.Player +{ + public class PlayerCardsController : MonoBehaviour + { + [SerializeField] private float radius = 2f; // 卡牌围绕玩家旋转的半径 + [SerializeField] private float rotationSpeed = 50f; // 卡牌旋转 + [SerializeField] private float highOffset = 1f; // 卡牌高度偏移 + public bool IsRotating = true; // 是否旋转卡牌 + [SerializeField] private GameObject cardPrefab; // 卡牌预制体 + + public List Cards; + private Transform playerTransform; + + private void Update() + { + if (Cards != null) + { + //RotateCards(); + } + } + + // 生成卡牌实体 + // 生成的卡牌实体围绕着玩家旋转 + public void GenerateCards(List cards) + { + playerTransform = this.transform; + Cards = new List(); + for (int i = 0; i < cards.Count; i++) + { + float angle = i * (360f / cards.Count); + float rad = angle * Mathf.Deg2Rad; + Vector3 cardPosition = new Vector3( + playerTransform.position.x + radius * Mathf.Cos(rad), + playerTransform.position.y + highOffset, + playerTransform.position.z + radius * Mathf.Sin(rad) + ); + + GameObject cardObject = Instantiate(cardPrefab, cardPosition, Quaternion.identity); + + Vector3 playerPosition = new Vector3( + playerTransform.position.x, + playerTransform.position.y + highOffset, + playerTransform.position.z + ); + Cards[i].transform.LookAt(playerPosition); + + CardViewer cardViewer = cardObject.GetComponent(); + cardViewer.SetCard(cards[i]); + Cards.Add(cardViewer); + } + } + + // 旋转已经生成的卡牌实体 + public void RotateCards() + { + if (!IsRotating) return; + for (int i = 0; i < Cards.Count; i++) + { + float angle = i * (360f / Cards.Count) + Time.time * rotationSpeed; + float rad = angle * Mathf.Deg2Rad; + Vector3 cardPosition = new Vector3( + playerTransform.position.x + radius * Mathf.Cos(rad), + playerTransform.position.y + highOffset, + playerTransform.position.z + radius * Mathf.Sin(rad) + ); + Cards[i].transform.position = cardPosition; + + Vector3 playerPosition = new Vector3( + playerTransform.position.x, + playerTransform.position.y + highOffset, + playerTransform.position.z + ); + + Cards[i].transform.LookAt(playerPosition); + // 卡牌绕着y轴旋转180度,从而让卡牌正面朝向玩家 + Cards[i].transform.Rotate(0, 180, 0); + } + } + + public void StopRotatingCards() + { + IsRotating = false; + } + + public void StartRotatingCards() + { + IsRotating = true; + } + + // 删除卡牌实体 + public void DeleteCards(CardViewer card) + { + Cards.Remove(card); + Destroy(card.gameObject); + } + + public void ClearCards() + { + foreach (var card in Cards) + { + Destroy(card.gameObject); + } + + Cards.Clear(); + } + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerCardsController.cs.meta b/Assets/Script/Gameplay/Player/PlayerCardsController.cs.meta new file mode 100644 index 0000000..7267041 --- /dev/null +++ b/Assets/Script/Gameplay/Player/PlayerCardsController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cb0c79a8230343c29d902ad22e044d2b +timeCreated: 1760574485 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerConfig.cs b/Assets/Script/Gameplay/Player/PlayerConfig.cs deleted file mode 100644 index c8ffa63..0000000 --- a/Assets/Script/Gameplay/Player/PlayerConfig.cs +++ /dev/null @@ -1,9 +0,0 @@ -using UnityEngine; - -namespace Gameplay.Player -{ - public class PlayerConfig : MonoBehaviour - { - - } -} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerConfig.cs.meta b/Assets/Script/Gameplay/Player/PlayerConfig.cs.meta deleted file mode 100644 index 3164f2e..0000000 --- a/Assets/Script/Gameplay/Player/PlayerConfig.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 6ff9e093e80541dc93d1186499dbfd79 -timeCreated: 1760498762 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerController.cs b/Assets/Script/Gameplay/Player/PlayerController.cs index ab15c60..c916ac9 100644 --- a/Assets/Script/Gameplay/Player/PlayerController.cs +++ b/Assets/Script/Gameplay/Player/PlayerController.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Gameplay; -using Share; +using Interface; using UnityEngine; using Core; @@ -23,21 +23,25 @@ namespace Gameplay.Player private PlayerMoveController playerMoveController; private PlayerCameraController playerCameraController; + public PlayerCardsController playerCardsController; private void Awake() { playerMoveController = GetComponent(); playerCameraController = GetComponent(); + playerCardsController = GetComponent(); CurrentHealth = MaxHealth; MyCardBook = new CardBook(cardBookData); Cards = new List(); - UIViewerControllerLocator.Instance.Register(this); + ControllerLocator.Instance.Register(this); } private void Start() { + Cards.Add(CardLoader.GetCardByID(1)); + Cards.Add(CardLoader.GetCardByID(2)); } @@ -60,6 +64,8 @@ namespace Gameplay.Player Debug.Log("Player StartCombat"); IsFlight = true; playerMoveController.SetSpeed(0.5f); + + playerCardsController.GenerateCards(Cards); } public void EndFlight() @@ -67,6 +73,8 @@ namespace Gameplay.Player Debug.Log("Player EndFlight"); IsFlight = false; playerMoveController.ResetSpeed(); + + playerCardsController.ClearCards(); } public bool HasCardsLeft() diff --git a/Assets/Script/Gameplay/Player/PlayerEditController.cs b/Assets/Script/Gameplay/Player/PlayerEditController.cs new file mode 100644 index 0000000..c4ddab7 --- /dev/null +++ b/Assets/Script/Gameplay/Player/PlayerEditController.cs @@ -0,0 +1,86 @@ +using UnityEngine; +using Interface; +using Script.Gameplay.Input; + +namespace Gameplay.Player +{ + public class PlayerEditController:MonoBehaviour + { + [SerializeField] private float interactRange = 15f; + [SerializeField] private LayerMask interactableLayer; + [SerializeField] private Camera playerCamera; + [SerializeField] private bool isDrawGizmos; + + private IEditable currentTarget; // 射线命中的当前可编辑对象(用于按键交互) + private IEditable previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件) + + private InputManager inputManager; + + void Start() + { + inputManager = InputManager.Instance; + if (playerCamera == null) + playerCamera = GameObject.FindWithTag("MainCamera").GetComponent(); + + inputManager.Input.Player.SwitchWatchMode.performed += ctx => + { + if (currentTarget != null) currentTarget.BeginEdit(); + }; + } + + void Update() + { + DetectInteractable(); + } + + void DetectInteractable() + { + if (playerCamera == null) return; + + Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward); + if (Physics.Raycast(ray, out RaycastHit hit, interactRange, interactableLayer)) + { + IEditable hitEditable = hit.collider.GetComponent(); + + // 如果命中对象与之前注视的不一样,触发进入/离开事件 + if (hitEditable != previousGazedTarget) + { + if (previousGazedTarget != null) + { + previousGazedTarget.OnGazeExit(this); + } + + if (hitEditable != null) + { + hitEditable.OnGazeEnter(this); + } + + previousGazedTarget = hitEditable; + } + + currentTarget = hitEditable; + } + else + { + // 没有命中时,如果之前有注视对象,触发离开 + if (previousGazedTarget != null) + { + previousGazedTarget.OnGazeExit(this); + previousGazedTarget = null; + } + + currentTarget = null; + } + } + + void OnDrawGizmos() + { + if(!isDrawGizmos) return; + if (playerCamera == null) return; + Gizmos.color = Color.red; + Vector3 origin = playerCamera.transform.position; + Vector3 direction = playerCamera.transform.forward * interactRange; + Gizmos.DrawLine(origin, origin + direction); + } + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerEditController.cs.meta b/Assets/Script/Gameplay/Player/PlayerEditController.cs.meta new file mode 100644 index 0000000..d05354d --- /dev/null +++ b/Assets/Script/Gameplay/Player/PlayerEditController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 18842cb320964275a76e2d57bee62adf +timeCreated: 1760664958 \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerInteractorController.cs b/Assets/Script/Gameplay/Player/PlayerInteractorController.cs index fced6f7..6b8de8d 100644 --- a/Assets/Script/Gameplay/Player/PlayerInteractorController.cs +++ b/Assets/Script/Gameplay/Player/PlayerInteractorController.cs @@ -1,7 +1,7 @@ using UnityEngine; -using Share; +using Interface; using System; -using Input; +using Script.Gameplay.Input; namespace Gameplay.Player { @@ -10,44 +10,70 @@ namespace Gameplay.Player [SerializeField] private float interactRange = 15f; [SerializeField] private LayerMask interactableLayer; [SerializeField] private Camera playerCamera; + [SerializeField] private bool isDrawGizmos; - private IInteractable currentTarget; + private IInteractable currentTarget; // 被射线命中的当前可交互对象(用于按键交互) + private IInteractable previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件) void Start() { - playerCamera = GameObject.FindWithTag("MainCamera").GetComponent(); + if (playerCamera == null) + playerCamera = GameObject.FindWithTag("MainCamera").GetComponent(); + + var input = InputManager.Instance.Input; + input.Player.SwitchWatchMode.performed += ctx => currentTarget.Interact(this.gameObject);; } void Update() { DetectInteractable(); - - if (currentTarget != null && InputManager.Instance.InteractPressed) - { - currentTarget.Interact(this.gameObject); - } } void DetectInteractable() { + if (playerCamera == null) return; + Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward); if (Physics.Raycast(ray, out RaycastHit hit, interactRange, interactableLayer)) { - currentTarget = hit.collider.GetComponent(); - if (currentTarget != null) + IInteractable hitInteractable = hit.collider.GetComponent(); + + // 如果命中对象与之前注视的不一样,触发进入/离开事件 + if (hitInteractable != previousGazedTarget) { - // 这里可以显示交互提示UI,例如 “E - 开门” - Debug.Log(currentTarget.GetInteractPrompt()); + if (previousGazedTarget != null) + { + previousGazedTarget.OnGazeExit(this.gameObject); + } + + if (hitInteractable != null) + { + hitInteractable.OnGazeEnter(this.gameObject); + // 这里可以显示交互提示UI,例如 “E - 开门” + Debug.Log(hitInteractable.GetInteractPrompt()); + } + + previousGazedTarget = hitInteractable; } + + currentTarget = hitInteractable; } else { + // 没有命中时,如果之前有注视对象,触发离开 + if (previousGazedTarget != null) + { + previousGazedTarget.OnGazeExit(this.gameObject); + previousGazedTarget = null; + } + currentTarget = null; } } - + void OnDrawGizmos() { + if (isDrawGizmos) return; if (playerCamera == null) return; Gizmos.color = Color.green; Vector3 origin = playerCamera.transform.position; diff --git a/Assets/Script/Gameplay/Player/PlayerMoveController.cs b/Assets/Script/Gameplay/Player/PlayerMoveController.cs index 5dd8bb1..f1338b7 100644 --- a/Assets/Script/Gameplay/Player/PlayerMoveController.cs +++ b/Assets/Script/Gameplay/Player/PlayerMoveController.cs @@ -1,6 +1,6 @@ using System; using Core; -using Input; +using Script.Gameplay.Input; using Map; using UnityEngine; diff --git a/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs new file mode 100644 index 0000000..d24e966 --- /dev/null +++ b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs @@ -0,0 +1,72 @@ +using System; +using Script.Gameplay.Input; +using UnityEngine; + +namespace Gameplay.Player +{ + public enum WatchMode + { + Normal, + Inside, + Outside + } + public class PlayerWatchModeSwitcher : MonoBehaviour + { + [SerializeField] private Camera cam; + private InputManager inputManager; + private WatchMode currentMode = WatchMode.Normal; + + private void Start() + { + inputManager = InputManager.Instance; + SetWatchMode(currentMode); + + var input = inputManager.Input; + input.Player.SwitchWatchMode.performed += ctx => + { + currentMode = (WatchMode)(((int)currentMode + 1) % 3); + SetWatchMode(currentMode); + };; + } + + public void SetWatchMode(WatchMode mode) + { + currentMode = mode; + SwitchWatchMode(mode); + } + + + // 实现按Tap键实现在WatchMode 3个模式切换,并通过SwitchWatchMode设置正确的相机模式 + + private void SwitchWatchMode(WatchMode watchMode) + { + switch (watchMode) + { + case WatchMode.Normal: + SetSeeLines(false); + break; + case WatchMode.Inside: + SetSeeLines(false); + break; + case WatchMode.Outside: + SetSeeLines(true); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + private void SetSeeLines(bool seeLine) + { + int linesLayer = LayerMask.NameToLayer("Lines"); + int mask = cam.cullingMask; + + if (seeLine) + mask |= 1 << linesLayer; // 打开 + else + mask &= ~(1 << linesLayer); // 关闭 + + cam.cullingMask = mask; + } + } +} \ No newline at end of file diff --git a/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs.meta b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs.meta new file mode 100644 index 0000000..d7ddf2b --- /dev/null +++ b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2361e682e26b43ffb6ff9615d39c487e +timeCreated: 1760663032 \ No newline at end of file diff --git a/Assets/Script/UI/FacilityComponentEditViewer.cs b/Assets/Script/UI/FacilityComponentEditViewer.cs new file mode 100644 index 0000000..b8a7386 --- /dev/null +++ b/Assets/Script/UI/FacilityComponentEditViewer.cs @@ -0,0 +1,20 @@ +using Core; +using UnityEngine; +using UnityEngine; +namespace UI +{ + public class FacilityComponentEditViewer : MonoBehaviour + { + public Component component; + public bool IsOpen; + + public void SetComponent() + { + if (component != null) + { + IsOpen = !IsOpen; + component.gameObject.SetActive(IsOpen); + } + } + } +} \ No newline at end of file diff --git a/Assets/Script/UI/FacilityComponentEditViewer.cs.meta b/Assets/Script/UI/FacilityComponentEditViewer.cs.meta new file mode 100644 index 0000000..f18629a --- /dev/null +++ b/Assets/Script/UI/FacilityComponentEditViewer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 126d8afe0e304d548dc13c4df6405e17 +timeCreated: 1760671378 \ No newline at end of file diff --git a/Assets/Script/UI/PlayerEditPanelViewer.cs b/Assets/Script/UI/PlayerEditPanelViewer.cs new file mode 100644 index 0000000..8ccc38e --- /dev/null +++ b/Assets/Script/UI/PlayerEditPanelViewer.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; +using Core; +using Gameplay.Player; +using Script.Gameplay.Facility; + +namespace UI +{ + public class PlayerEditPanelViewer : UIBase + { + private PlayerEditController controller; + private FacilityController currentFacilityController; + private void Start() + { + + } + + // 根据currentFacilityController 生成其对应的组件 + private void GenerateComponent() + { + + } + } +} \ No newline at end of file diff --git a/Assets/Script/UI/PlayerEditPanelViewer.cs.meta b/Assets/Script/UI/PlayerEditPanelViewer.cs.meta new file mode 100644 index 0000000..ea9094f --- /dev/null +++ b/Assets/Script/UI/PlayerEditPanelViewer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 29d585e25c3a4840871167630b3c7a49 +timeCreated: 1760670557 \ No newline at end of file diff --git a/Assets/Script/UI/PlayerHpViewer.cs b/Assets/Script/UI/PlayerHpViewer.cs index b65244c..4345b59 100644 --- a/Assets/Script/UI/PlayerHpViewer.cs +++ b/Assets/Script/UI/PlayerHpViewer.cs @@ -13,7 +13,7 @@ namespace UI private void Start() { - UIViewerControllerLocator.Instance.TryGetWait(OnGet); + ControllerLocator.Instance.TryGetWait(OnGet); } private void Update() diff --git a/Assets/Settings/Input/PlayerInputActions.inputactions b/Assets/Settings/Input/PlayerInputActions.inputactions index 9a76a78..252a051 100644 --- a/Assets/Settings/Input/PlayerInputActions.inputactions +++ b/Assets/Settings/Input/PlayerInputActions.inputactions @@ -40,6 +40,33 @@ "processors": "", "interactions": "", "initialStateCheck": false + }, + { + "name": "Pause", + "type": "Button", + "id": "822c2284-94e3-4636-894c-adfe85ac467d", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "SwitchWatchMode", + "type": "Button", + "id": "73ffcbfd-15ae-4580-99c4-d7d06ff13bb6", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Edit", + "type": "Button", + "id": "20a9157a-918b-42f1-80b1-9e014426068e", + "expectedControlType": "", + "processors": "", + "interactions": "", + "initialStateCheck": false } ], "bindings": [ @@ -141,6 +168,39 @@ "action": "Interact", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "943ba523-b024-410e-a250-735a5ffdf786", + "path": "/escape", + "interactions": "", + "processors": "", + "groups": "", + "action": "Pause", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "47af0242-9835-4b1a-82c8-e3fc32489870", + "path": "/tab", + "interactions": "", + "processors": "", + "groups": "", + "action": "SwitchWatchMode", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "9e9bf8ec-8b3e-4230-a10c-ae874395711a", + "path": "/x", + "interactions": "", + "processors": "", + "groups": "", + "action": "Edit", + "isComposite": false, + "isPartOfComposite": false } ] } diff --git a/Assets/Settings/Input/PlayerInputActions.inputactions.meta b/Assets/Settings/Input/PlayerInputActions.inputactions.meta index 66c6881..f0503b0 100644 --- a/Assets/Settings/Input/PlayerInputActions.inputactions.meta +++ b/Assets/Settings/Input/PlayerInputActions.inputactions.meta @@ -11,4 +11,4 @@ ScriptedImporter: generateWrapperCode: 1 wrapperCodePath: Assets/Script/Gameplay/Input/PlayerInputActions.cs wrapperClassName: - wrapperCodeNamespace: Input + wrapperCodeNamespace: Script.Gameplay.Input diff --git a/Assets/Settings/LightSetting.lighting b/Assets/Settings/LightSetting.lighting new file mode 100644 index 0000000..3d7513f --- /dev/null +++ b/Assets/Settings/LightSetting.lighting @@ -0,0 +1,66 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LightSetting + serializedVersion: 6 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentImportanceSampling: 1 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 + m_NumRaysToShootPerTexel: -1 + m_RespectSceneVisibilityWhenBakingGI: 0 diff --git a/Assets/Settings/LightSetting.lighting.meta b/Assets/Settings/LightSetting.lighting.meta new file mode 100644 index 0000000..1f3e8dc --- /dev/null +++ b/Assets/Settings/LightSetting.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06bbce95c474a2f4885359ffd5fad188 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 588a62e..ab45f17 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -12,7 +12,7 @@ TagManager: - Water - UI - Ground - - + - Lines - - -