From 108bf8b194ebd9c17c1fb7cda7ad5ec6685f1689 Mon Sep 17 00:00:00 2001 From: bzx <496597135@qq.com> Date: Mon, 9 Feb 2026 16:41:50 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E8=B0=83=E6=95=B4httpserver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_Valheim/Scenes/NanJing_GongSi1Lou.unity | 66 --- ...Shanxi_Yulin_Shenmu_Liuta_Yuyuecheng.unity | 380 +----------------- Assets/_Valheim/Scripts/GameInit.cs | 10 + Assets/_Valheim/Scripts/GameManager.cs | 16 +- Assets/_Valheim/Scripts/HttpServer.cs | 241 +++++++++-- ProjectSettings/ProjectSettings.asset | 2 +- 6 files changed, 240 insertions(+), 475 deletions(-) diff --git a/Assets/_Valheim/Scenes/NanJing_GongSi1Lou.unity b/Assets/_Valheim/Scenes/NanJing_GongSi1Lou.unity index 312210da..5c3db474 100644 --- a/Assets/_Valheim/Scenes/NanJing_GongSi1Lou.unity +++ b/Assets/_Valheim/Scenes/NanJing_GongSi1Lou.unity @@ -16927,71 +16927,6 @@ MonoBehaviour: soundPlayedCustomEvent: willCleanUpDelegatesAfterStop: 1 frames: 292 ---- !u!1001 &60959280 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalPosition.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 110059260574252553, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 778228819167634611, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_Name - value: "\u4E00\u697C\u5927\u5385" - objectReference: {fileID: 0} - - target: {fileID: 778228819167634611, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 9164575369691329967, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: c27653af6b58d0f41b55c1c27aa97e8b, type: 3} --- !u!1 &62262602 GameObject: m_ObjectHideFlags: 0 @@ -236040,4 +235975,3 @@ SceneRoots: - {fileID: 1675573370} - {fileID: 2076119386} - {fileID: 882540217} - - {fileID: 60959280} diff --git a/Assets/_Valheim/Scenes/Shanxi_Yulin_Shenmu_Liuta_Yuyuecheng.unity b/Assets/_Valheim/Scenes/Shanxi_Yulin_Shenmu_Liuta_Yuyuecheng.unity index 708b8689..fbc4717f 100644 --- a/Assets/_Valheim/Scenes/Shanxi_Yulin_Shenmu_Liuta_Yuyuecheng.unity +++ b/Assets/_Valheim/Scenes/Shanxi_Yulin_Shenmu_Liuta_Yuyuecheng.unity @@ -18222,39 +18222,6 @@ MonoBehaviour: soundPlayedCustomEvent: willCleanUpDelegatesAfterStop: 1 frames: 186 ---- !u!1 &124580971 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 3718273381255731441, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 124580972} - m_Layer: 0 - m_Name: "\u9655\u897F\u7701\u6986\u6797\u5E02\u795E\u6728\u5E02\u5927\u67F3\u5854\u9547\u67F3\u5174\u8857\u6109\u60A6\u57CE" - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &124580972 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 124580971} - 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: - - {fileID: 2035460422} - - {fileID: 2006520881} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &125567243 GameObject: m_ObjectHideFlags: 0 @@ -43081,7 +43048,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &385435103 Transform: m_ObjectHideFlags: 0 @@ -52178,6 +52145,7 @@ MonoBehaviour: - {fileID: 6467094678931024558, guid: d21aeb4e16d2e8242809366ef3e398ed, type: 3} - {fileID: 1190993079086344213, guid: 353ef808e5786c841a7dfec0a5f33815, type: 3} - {fileID: 1190993079086344213, guid: 4ff253a5e7ebe8b4892b91f923b8f5cb, type: 3} + - {fileID: 3138103488680208938, guid: fd270e281173bf348a948a0a3a30594b, type: 3} snapshotSettings: bufferTimeMultiplier: 2 bufferLimit: 32 @@ -83848,7 +83816,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &850007097 Transform: m_ObjectHideFlags: 0 @@ -123790,71 +123758,6 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1001 &1202835533 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 244553855343538860, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3718273381255731441, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_Name - value: "\u9655\u897F\u7701\u6986\u6797\u5E02\u795E\u6728\u5E02\u5927\u67F3\u5854\u9547\u67F3\u5174\u8857\u6109\u60A6\u57CE" - objectReference: {fileID: 0} - - target: {fileID: 3718273381255731441, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_IsActive - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalPosition.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4094376089260491339, guid: d661600bff203f6478e421555f1c303b, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: d661600bff203f6478e421555f1c303b, type: 3} --- !u!1 &1203735222 GameObject: m_ObjectHideFlags: 0 @@ -128332,7 +128235,9 @@ MonoBehaviour: winLightBgm: {fileID: 39165854} goEffect: {fileID: 327597843} place: 74 - gameId: 0 + gameId: 4 + vistAllTime: 900 + curGameTime: 0 --- !u!1 &1289206090 GameObject: m_ObjectHideFlags: 0 @@ -172150,89 +172055,6 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1 &2006520880 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 244553855343538860, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2006520881} - - component: {fileID: 2006520883} - - component: {fileID: 2006520882} - m_Layer: 0 - m_Name: pPlane3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &2006520881 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 2369737949588143504, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2006520880} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 3.5, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 124580972} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2006520882 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 3356245353950294368, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2006520880} - 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: fb8c6fc9a9a57a04aa81ead6f0796e95, 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!33 &2006520883 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 5801310569238886532, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2006520880} - m_Mesh: {fileID: 3680687292192122401, guid: 76bc59a0ca6620d418c50e8131241685, type: 3} --- !u!1 &2018898328 GameObject: m_ObjectHideFlags: 0 @@ -177670,89 +177492,6 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1 &2035460421 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 5078437167118830061, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2035460422} - - component: {fileID: 2035460424} - - component: {fileID: 2035460423} - m_Layer: 0 - m_Name: pPlane2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2035460422 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 7837393657706267004, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2035460421} - 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: 124580972} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2035460423 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 88514881801334066, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2035460421} - 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: 2bb3eed0404231447a5670edef51ff1c, 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!33 &2035460424 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 7977877648573520425, guid: d661600bff203f6478e421555f1c303b, type: 3} - m_PrefabInstance: {fileID: 1202835533} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2035460421} - m_Mesh: {fileID: 8342159127421523248, guid: 76bc59a0ca6620d418c50e8131241685, type: 3} --- !u!1 &2035697192 GameObject: m_ObjectHideFlags: 0 @@ -186605,14 +186344,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!33 &557225772086009833 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8161851965909330540} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!95 &574245103758081559 Animator: serializedVersion: 5 @@ -186676,48 +186407,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!23 &662076648898845615 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8161851965909330540} - 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!1 &746642175336100363 GameObject: m_ObjectHideFlags: 0 @@ -202974,27 +202663,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8493800451832981579} m_Mesh: {fileID: 2212009239438826721, guid: 7823e96608587e34dbbbe92f76716904, type: 3} ---- !u!65 &3279445844415349771 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8161851965909330540} - 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: 2, y: 2, z: 2} - m_Center: {x: 0, y: 0, z: 0} --- !u!111 &3312274170234899894 Animation: m_ObjectHideFlags: 0 @@ -208849,21 +208517,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4504842964232407134 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8161851965909330540} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.03, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &4531572566274289683 Transform: m_ObjectHideFlags: 0 @@ -230634,25 +230287,6 @@ ParticleSystemRenderer: m_MeshWeighting2: 1 m_MeshWeighting3: 1 m_MaskInteraction: 0 ---- !u!1 &8161851965909330540 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4504842964232407134} - - component: {fileID: 557225772086009833} - - component: {fileID: 662076648898845615} - - component: {fileID: 3279445844415349771} - m_Layer: 0 - m_Name: Cube (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 --- !u!1 &8210320216821701306 GameObject: m_ObjectHideFlags: 0 @@ -236315,7 +235949,6 @@ SceneRoots: - {fileID: 1486842996} - {fileID: 1723061463} - {fileID: 1511208667} - - {fileID: 4504842964232407134} - {fileID: 514640002} - {fileID: 1028619366} - {fileID: 327597842} @@ -236326,5 +235959,4 @@ SceneRoots: - {fileID: 1675573370} - {fileID: 2076119386} - {fileID: 471303171} - - {fileID: 1202835533} - {fileID: 873795326} diff --git a/Assets/_Valheim/Scripts/GameInit.cs b/Assets/_Valheim/Scripts/GameInit.cs index 6e2de8d6..03939b4a 100644 --- a/Assets/_Valheim/Scripts/GameInit.cs +++ b/Assets/_Valheim/Scripts/GameInit.cs @@ -171,6 +171,11 @@ namespace Valheim // 版本号 public GameKey gameId; + // 总游玩时长 + public int vistAllTime = (int)(60 * 15F); + + public float curGameTime = 0; + private NavMeshDataInstance currentInstance; public void Close() { @@ -267,5 +272,10 @@ namespace Valheim // 加载新的NavMesh currentInstance = NavMesh.AddNavMeshData(data); } + + public int GetNowTime() + { + return Mathf.RoundToInt(curGameTime); + } } } diff --git a/Assets/_Valheim/Scripts/GameManager.cs b/Assets/_Valheim/Scripts/GameManager.cs index 2889854b..3df37a6a 100644 --- a/Assets/_Valheim/Scripts/GameManager.cs +++ b/Assets/_Valheim/Scripts/GameManager.cs @@ -100,10 +100,9 @@ namespace Valheim #endif [SyncVar] public long vistEnd = 0; - // 总游玩时长 - public int vistAllTime = (int)(60 * 15F); - public float curGameTime = 0; + + // 游戏是否结束 [NonSerialized] [SyncVar] @@ -284,10 +283,7 @@ namespace Valheim battleArea.SetActive(false); } - public int GetNowTime() - { - return Mathf.RoundToInt(curGameTime); - } + /// /// 创建复活点 @@ -547,7 +543,7 @@ namespace Valheim { obj.SetActive(false); } - vistEnd = (long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds + vistAllTime; + vistEnd = (long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds + GameInit.Ins.vistAllTime; CreateHUD(); GameInit.Ins.Close(); GameOver = false; @@ -1902,7 +1898,7 @@ namespace Valheim if (isPlayGame) { - curGameTime += Time.deltaTime; + GameInit.Ins.curGameTime += Time.deltaTime; } } @@ -2268,7 +2264,7 @@ namespace Valheim string res = ""; if (GameOver) { - res = FormatTime2((int)(((long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds) - (vistEnd - vistAllTime))); + res = FormatTime2((int)(((long)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds) - (vistEnd - GameInit.Ins.vistAllTime))); } return res; } diff --git a/Assets/_Valheim/Scripts/HttpServer.cs b/Assets/_Valheim/Scripts/HttpServer.cs index 8a90c3a1..d6c53a26 100644 --- a/Assets/_Valheim/Scripts/HttpServer.cs +++ b/Assets/_Valheim/Scripts/HttpServer.cs @@ -4,18 +4,43 @@ using System.IO; using System.Net; using System.Text; using System.Threading; +using System.Collections.Concurrent; using System.Threading.Tasks; using UnityEngine; using Valheim; +[Serializable] +public class IntentMessage +{ + public string intent; +} + +[Serializable] +public class PlayingStatusResponse +{ + public int code; + public ServerData data; + public string message; +} + +[Serializable] +public class ServerData +{ + public string gameName; + public int gameTotalTime; + public int currentPlayTime; +} + public class HttpServer : MonoBehaviour { private HttpListener listener; - private Thread listenThread; + private Thread serverThread; private volatile bool isRunning; - // ❗不要用 + - private const string SERVER_URL = "http://127.0.0.1:12345/"; + private const string SERVER_URL = "http://+:12345/"; + + // 子线程 → 主线程 + private static ConcurrentQueue messageQueue = new ConcurrentQueue(); void Awake() { @@ -30,9 +55,10 @@ public class HttpServer : MonoBehaviour // ✅ 后台启动 Task.Run(StartServer); - Debug.Log("Http,开始请求"); } + #region HTTP Server + private void StartServer() { try @@ -42,12 +68,11 @@ public class HttpServer : MonoBehaviour listener.Start(); isRunning = true; - - listenThread = new Thread(ListenLoop) + serverThread = new Thread(ListenLoop) { IsBackground = true }; - listenThread.Start(); + serverThread.Start(); Debug.Log($"✅ HTTP Server 启动成功:{SERVER_URL}"); } @@ -59,37 +84,96 @@ public class HttpServer : MonoBehaviour private void ListenLoop() { - while (isRunning) + while (isRunning && listener.IsListening) { try { var context = listener.GetContext(); - ProcessRequest(context); + ThreadPool.QueueUserWorkItem(ProcessRequest, context); } - catch + catch (HttpListenerException) { break; } + catch (Exception e) + { + Debug.LogError(e); + } } } - private void ProcessRequest(HttpListenerContext context) + private void ProcessRequest(object state) { + var context = (HttpListenerContext)state; + var request = context.Request; var response = context.Response; + + response.AddHeader("Access-Control-Allow-Origin", "*"); + response.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); + response.AddHeader("Access-Control-Allow-Headers", "Content-Type"); response.ContentType = "application/json; charset=utf-8"; try { - string json = - $"{{\"code\":200,\"data\":{{\"gameName\":\"{GetGameName()}\"," + - $"\"gameTotalTime\":{GetTotalTime()},\"currentPlayTime\":{GetPlayTime()}}}}}"; + if (request.HttpMethod == "POST") + { + string raw; + using (var reader = new StreamReader( + request.InputStream, + request.ContentEncoding ?? Encoding.UTF8)) + { + raw = reader.ReadToEnd(); + } - byte[] data = Encoding.UTF8.GetBytes(json); - response.OutputStream.Write(data, 0, data.Length); + Debug.Log($"📩 收到原始 JSON:{raw}"); + + // 解析 intent + IntentMessage intentMsg = null; + try + { + intentMsg = JsonUtility.FromJson(raw); + } + catch (Exception e) + { + Debug.LogError("JSON 解析失败:" + e); + } + + // 只处理 is_playing + if (intentMsg != null && intentMsg.intent == "is_playing") + { + var resp = new PlayingStatusResponse + { + code = 200, + data = new ServerData() + { + gameName = GetCurrentGameName(), + gameTotalTime = GetGameTotalTime(), + currentPlayTime = GetCurrentPlayTime() + }, + message = "请求成功" + }; + + string json = JsonUtility.ToJson(resp); + Debug.LogError("数据:"+json); + byte[] data = Encoding.UTF8.GetBytes(json); + response.OutputStream.Write(data, 0, data.Length); + } + else + { + // 未知 intent + string err = "{\"code\":400,\"msg\":\"unknown intent\"}"; + byte[] data = Encoding.UTF8.GetBytes(err); + response.OutputStream.Write(data, 0, data.Length); + } + + response.Close(); + return; + } } catch (Exception e) { Debug.LogError(e); + WriteResponse(response, 500, "error"); } finally { @@ -97,24 +181,133 @@ public class HttpServer : MonoBehaviour } } - private string GetGameName() + private void WriteResponse(HttpListenerResponse response, int code, string msg) { - return GameInit.Ins != null ? GameInit.Ins.gameId.ToString() : "unknown"; + string json = $"{{\"code\":{code},\"msg\":\"{msg}\"}}"; + byte[] data = Encoding.UTF8.GetBytes(json); + response.OutputStream.Write(data, 0, data.Length); } - private int GetTotalTime() + #endregion + + #region Unity Main Thread + + void Update() { - return GameInit.Ins != null ? Mathf.FloorToInt(GameManager .Ins.vistAllTime) : 0; + while (messageQueue.TryDequeue(out var msg)) + { + Debug.Log($"📩 来自 [{msg.sender}] 指令 [{msg.command}]"); + HandleMessage(msg); + } } - private int GetPlayTime() + #endregion + + #region Message Logic + + [Serializable] + public class NetMessage { - return GameInit.Ins != null ? GameManager.Ins.GetNowTime() : 0; + public string sender; + public string command; } + private NetMessage ParseMessage(string raw) + { + if (string.IsNullOrEmpty(raw)) + return null; + + try + { + raw = raw.Replace("\"", "").Trim(); + var parts = raw.Split(':'); + if (parts.Length != 2) + { + Debug.LogWarning($"消息格式错误:{raw}"); + return null; + } + + return new NetMessage + { + sender = parts[0].Trim(), + command = parts[1].Trim() + }; + } + catch (Exception e) + { + Debug.LogError($"解析失败:{raw}\n{e}"); + return null; + } + } + + private void HandleMessage(NetMessage msg) + { + switch (msg.command) + { + case "isStart": + OnStartCommand(msg.sender); + break; + + default: + Debug.LogWarning($"未知指令:{msg.command}"); + break; + } + } + + private void OnStartCommand(string sender) + { + Debug.Log($"🚀 Start 指令来自:{sender}"); + + // ✅ 在这里安全调用 Unity API + // GameManager.Ins.QuitGame(); + } + + + private string GetCurrentGameName() + { + return GameInit.Ins.gameId.ToString(); // 或你自己的 GameManager + } + + private int GetGameTotalTime() + { + return Mathf.FloorToInt(GameInit.Ins.vistAllTime); // 举例:1 小时(秒) + } + + private int GetCurrentPlayTime() + { + return GameInit.Ins.GetNowTime(); + } + + + #endregion + + #region Shutdown + void OnDestroy() { - isRunning = false; - listener?.Close(); + StopServer(); } + + private void StopServer() + { + isRunning = false; + + try + { + listener?.Stop(); + listener?.Close(); + } + catch { } + + try + { + if (serverThread != null && serverThread.IsAlive) + serverThread.Join(300); + } + catch { } + + Debug.Log("🛑 HTTP Server 已关闭"); + } + + #endregion } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index a100980c..82ceafb7 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -12,7 +12,7 @@ PlayerSettings: targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 - companyName: niartech + companyName: pineappletech productName: "\u5C0F\u5C0F\u5E7B\u5BA0" defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0}