Browse Source

多人交互简易实现

DGJ 1 year ago
parent
commit
e8eb59fef5

+ 239 - 170
Assets/MRNavigatorPro.unity

@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 705507994}
-  m_IndirectSpecularColor: {r: 0.44402242, g: 0.49316543, b: 0.5722324, a: 1}
+  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -281,170 +281,6 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   t: {fileID: 6101810}
---- !u!43 &7663804
-Mesh:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_Name: 
-  serializedVersion: 10
-  m_SubMeshes:
-  - serializedVersion: 2
-    firstByte: 0
-    indexCount: 0
-    topology: 5
-    baseVertex: 0
-    firstVertex: 0
-    vertexCount: 0
-    localAABB:
-      m_Center: {x: 0, y: 0, z: 0}
-      m_Extent: {x: 0, y: 0, z: 0}
-  m_Shapes:
-    vertices: []
-    shapes: []
-    channels: []
-    fullWeights: []
-  m_BindPose: []
-  m_BoneNameHashes: 
-  m_RootBoneNameHash: 0
-  m_BonesAABB: []
-  m_VariableBoneCountWeights:
-    m_Data: 
-  m_MeshCompression: 0
-  m_IsReadable: 1
-  m_KeepVertices: 0
-  m_KeepIndices: 0
-  m_IndexFormat: 1
-  m_IndexBuffer: 
-  m_VertexData:
-    serializedVersion: 3
-    m_VertexCount: 0
-    m_Channels:
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 3
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    m_DataSize: 0
-    _typelessdata: 
-  m_CompressedMesh:
-    m_Vertices:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_UV:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Normals:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Tangents:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Weights:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_NormalSigns:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_TangentSigns:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_FloatColors:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_BoneIndices:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Triangles:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_UVInfo: 0
-  m_LocalAABB:
-    m_Center: {x: 0, y: 0, z: 0}
-    m_Extent: {x: 1.7014117e+38, y: 1.7014117e+38, z: 1.7014117e+38}
-  m_MeshUsageFlags: 0
-  m_BakedConvexCollisionMesh: 
-  m_BakedTriangleCollisionMesh: 
-  m_MeshMetrics[0]: 1
-  m_MeshMetrics[1]: 1
-  m_MeshOptimizationFlags: 1
-  m_StreamData:
-    serializedVersion: 2
-    offset: 0
-    size: 0
-    path: 
 --- !u!1 &15550372
 GameObject:
   m_ObjectHideFlags: 0
@@ -2411,7 +2247,7 @@ MeshFilter:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 375338274}
-  m_Mesh: {fileID: 7663804}
+  m_Mesh: {fileID: 1972238697}
 --- !u!114 &375338278
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -6689,7 +6525,7 @@ PrefabInstance:
     - target: {fileID: 2656584712679981451, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -0.005057784
+      value: -0.004469915
       objectReference: {fileID: 0}
     - target: {fileID: 2656584712838976906, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
@@ -6819,7 +6655,7 @@ PrefabInstance:
     - target: {fileID: 2656584713474595953, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -0.0019229032
+      value: -0.0019132684
       objectReference: {fileID: 0}
     - target: {fileID: 2656584713571100915, guid: 3e8996c442fe40541beb734ca45f2bf6,
         type: 3}
@@ -9235,6 +9071,170 @@ MeshFilter:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1951245951}
   m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!43 &1972238697
+Mesh:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  serializedVersion: 10
+  m_SubMeshes:
+  - serializedVersion: 2
+    firstByte: 0
+    indexCount: 0
+    topology: 5
+    baseVertex: 0
+    firstVertex: 0
+    vertexCount: 0
+    localAABB:
+      m_Center: {x: 0, y: 0, z: 0}
+      m_Extent: {x: 0, y: 0, z: 0}
+  m_Shapes:
+    vertices: []
+    shapes: []
+    channels: []
+    fullWeights: []
+  m_BindPose: []
+  m_BoneNameHashes: 
+  m_RootBoneNameHash: 0
+  m_BonesAABB: []
+  m_VariableBoneCountWeights:
+    m_Data: 
+  m_MeshCompression: 0
+  m_IsReadable: 1
+  m_KeepVertices: 0
+  m_KeepIndices: 0
+  m_IndexFormat: 1
+  m_IndexBuffer: 
+  m_VertexData:
+    serializedVersion: 3
+    m_VertexCount: 0
+    m_Channels:
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 3
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    - stream: 0
+      offset: 0
+      format: 0
+      dimension: 0
+    m_DataSize: 0
+    _typelessdata: 
+  m_CompressedMesh:
+    m_Vertices:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_UV:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Normals:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Tangents:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Weights:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_NormalSigns:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_TangentSigns:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_FloatColors:
+      m_NumItems: 0
+      m_Range: 0
+      m_Start: 0
+      m_Data: 
+      m_BitSize: 0
+    m_BoneIndices:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_Triangles:
+      m_NumItems: 0
+      m_Data: 
+      m_BitSize: 0
+    m_UVInfo: 0
+  m_LocalAABB:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 1.7014117e+38, y: 1.7014117e+38, z: 1.7014117e+38}
+  m_MeshUsageFlags: 0
+  m_BakedConvexCollisionMesh: 
+  m_BakedTriangleCollisionMesh: 
+  m_MeshMetrics[0]: 1
+  m_MeshMetrics[1]: 1
+  m_MeshOptimizationFlags: 1
+  m_StreamData:
+    serializedVersion: 2
+    offset: 0
+    size: 0
+    path: 
 --- !u!1 &1993328806
 GameObject:
   m_ObjectHideFlags: 0
@@ -9962,7 +9962,7 @@ PrefabInstance:
     - target: {fileID: 486518953982833418, guid: 6693e68f506a6c944b1783fb7e52a498,
         type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -0.0012743741
+      value: 0.0008443197
       objectReference: {fileID: 0}
     - target: {fileID: 486518953989235048, guid: 6693e68f506a6c944b1783fb7e52a498,
         type: 3}
@@ -13808,7 +13808,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: -0.005171851}
+  m_AnchoredPosition: {x: 0, y: -0.0051354878}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 1}
 --- !u!114 &1180406930876628118
@@ -14555,6 +14555,75 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
+--- !u!1001 &2820157128078320622
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 0}
+    m_Modifications:
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 21
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949512, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 2820157128665949516, guid: 6d96268218c5fd744b51c80517da3515,
+        type: 3}
+      propertyPath: m_Name
+      value: Player
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 6d96268218c5fd744b51c80517da3515, type: 3}
 --- !u!65 &2901635690744409253
 BoxCollider:
   m_ObjectHideFlags: 0

+ 132 - 0
Assets/Resources/Template/Prefab/Player.prefab

@@ -0,0 +1,132 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2820157128665949516
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2820157128665949512}
+  - component: {fileID: 2820157128665949515}
+  - component: {fileID: 2820157128665949514}
+  - component: {fileID: 2820157128665949517}
+  - component: {fileID: 2820157128665949513}
+  - component: {fileID: 2820157128665949510}
+  m_Layer: 0
+  m_Name: Player
+  m_TagString: Player
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2820157128665949512
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2820157128665949516}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.3, y: 1.6, z: 0.3}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2820157128665949515
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2820157128665949516}
+  m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &2820157128665949514
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2820157128665949516}
+  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: 4b1676ccd9735374aba60f6f4bb8ca74, 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!136 &2820157128665949517
+CapsuleCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2820157128665949516}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 1
+  m_Enabled: 0
+  m_Radius: 0.5000001
+  m_Height: 2
+  m_Direction: 1
+  m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
+--- !u!54 &2820157128665949513
+Rigidbody:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2820157128665949516}
+  serializedVersion: 2
+  m_Mass: 1
+  m_Drag: 0
+  m_AngularDrag: 0.05
+  m_UseGravity: 0
+  m_IsKinematic: 0
+  m_Interpolate: 0
+  m_Constraints: 0
+  m_CollisionDetection: 0
+--- !u!114 &2820157128665949510
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2820157128665949516}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 415546f34ffd5954981e9e58090807b0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  type: 2
+  isSync: 0

+ 7 - 0
Assets/Resources/Template/Prefab/Player.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6d96268218c5fd744b51c80517da3515
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 47 - 25
Assets/Script/MQTTClient.cs

@@ -11,9 +11,9 @@ public class MQTTClient : MonoSingleton<MQTTClient>
 {
     string front = "client/";
     string id = ""; 
-    string username = "u@unity1";// 需要根据服务器设置
-    string password = null;// 需要根据服务器设置
-    string rid = "mqttx_b4c02ddc"; //其他人的ID
+    string username = "u@unity1";// 闇€瑕佹牴鎹�湇鍔″櫒璁剧疆
+    string password = null;// 闇€瑕佹牴鎹�湇鍔″櫒璁剧疆
+    string rid = "mqttx_b4c02ddc"; //鍏朵粬浜虹殑ID
     QTTManager qt;
     // Start is called before the first frame update
     void Start()
@@ -27,7 +27,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
 
     private void OnConnecting()
     {
-        Debug.Log("MQtt  连接中");
+        Debug.Log("MQtt  杩炴帴涓�");
     }
 
     private void onSucceed()
@@ -39,7 +39,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
 
     private void onFaild()
     {
-        Debug.Log("MQtt  连接失败");
+        Debug.Log("MQtt  杩炴帴澶辫触");
     }
 
     // Update is called once per frame
@@ -53,7 +53,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
             }
         }
     }
-    //MQTT接收到的数据
+    //MQTT鎺ユ敹鍒扮殑鏁版嵁
     public void OnUnityReceived(MqttMsgPublishEventArgs obj)
     {
         string msg = Encoding.UTF8.GetString(obj.Message);
@@ -62,6 +62,29 @@ public class MQTTClient : MonoSingleton<MQTTClient>
         {
             JsonData data = JsonMapper.ToObject(msg);
 
+            switch (data["type"].ToString())
+            {
+                case "CamPos":
+
+                    // 鏍规嵁 uid  鍚屾�Player 浣嶇疆  濡傛灉娌℃湁灏卞垱寤�
+                    MultiPlayerManager.Instance.ReceivedCamPos(obj.Topic, data);
+                    break;
+                case "ActiveSp":
+
+                    // 鍚屾�瀵瑰簲鏅�偣鐨勫紑鍏�
+                    MultiPlayerManager.Instance.ReceivedActiveSp( data);
+
+                    break;
+                case "ActiveVideo":
+
+                    // 鍚屾�鎾�斁鍣ㄧ殑瀵瑰簲鐘舵€�
+
+                    break;
+
+                default:
+                    break;
+            }
+
         }
         catch
         {
@@ -76,7 +99,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
     }
 
 
-    //连接
+    //杩炴帴
     public void Connect()
     {
         if (DeviceType.type == "Phone")
@@ -102,17 +125,17 @@ public class MQTTClient : MonoSingleton<MQTTClient>
 
     private void OnClose(EventArgs obj)
     {
-        Debug.Log("断开连接");
+        Debug.Log("鏂�紑杩炴帴");
     }
 
-    //断开连接
+    //鏂�紑杩炴帴
     public void DisConnect()
     {
         if (qt != null && qt.IsConnect())
             qt.DisConnect();
 
     }
-    //订阅
+    //璁㈤槄
     public void Subscribe()
     {
         ushort s = qt.Subscribe(
@@ -124,7 +147,6 @@ public class MQTTClient : MonoSingleton<MQTTClient>
                         new byte[]
                         {
                                 MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE ,
-                                MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
                                 MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE
 
                         });
@@ -133,7 +155,7 @@ public class MQTTClient : MonoSingleton<MQTTClient>
         StartCoroutine(sendCameraPos());
     }
 
-    //眼镜端像手机端发送实时位置
+    //鐪奸暅绔�儚鎵嬫満绔�彂閫佸疄鏃朵綅缃�
     IEnumerator sendCameraPos()
     {
         while (qt.IsConnect())
@@ -143,36 +165,36 @@ public class MQTTClient : MonoSingleton<MQTTClient>
             json["x"] = OpenXRCamera.Instance.head.position.x;
             json["y"] = OpenXRCamera.Instance.head.position.y;
             json["z"] = OpenXRCamera.Instance.head.position.z;
-            json["Sid"] = "sid";//选择的场景id
+            json["Sid"] = "sid";//閫夋嫨鐨勫満鏅痠d
             publish(Encoding.UTF8.GetBytes(json.ToJson()));
             yield return new WaitForSeconds(0.1f);
         }
     }
-    //眼镜发送触发的景点
+    //鐪奸暅鍙戦€佽Е鍙戠殑鏅�偣
     public void sendActiveSp(string spid,bool isOpen)
     {
         JsonData json = new JsonData();
         json["type"] = "ActiveSp";
-        json["Sid"] = "sid";//选择的场景id
-        json["spid"] = spid;//景点id
-        json["isOpen"] = isOpen;//是否打开
+        json["Sid"] = "sid";//閫夋嫨鐨勫満鏅痠d
+        json["spid"] = spid;//鏅�偣id
+        json["isOpen"] = isOpen;//鏄�惁鎵撳紑
         publish(Encoding.UTF8.GetBytes(json.ToJson()));
-        Debug.Log("MQtt  发送manage");
+        Debug.Log("MQtt  鍙戦€乵anage");
     }
 
 
-    //眼镜发送触发的视频
+    //鐪奸暅鍙戦€佽Е鍙戠殑瑙嗛�
     public void sendActiveVideo(string spid,string videoId, bool isplay,float jindu)
     {
         JsonData json = new JsonData();
         json["type"] = "ActiveVideo";
-        json["Sid"] = "sid";//选择的场景id
-        json["spid"] = spid;//景点id
-        json["videoId"] = videoId;//视频id
-        json["isplay"] = isplay;//是否播放
-        json["jindu"] = jindu;//视频进度
+        json["Sid"] = "sid";//閫夋嫨鐨勫満鏅痠d
+        json["spid"] = spid;//鏅�偣id
+        json["videoId"] = videoId;//瑙嗛�id
+        json["isplay"] = isplay;//鏄�惁鎾�斁
+        json["jindu"] = jindu;//瑙嗛�杩涘害
         publish(Encoding.UTF8.GetBytes(json.ToJson()));
-        Debug.Log("MQtt  发送manage");
+        Debug.Log("MQtt  鍙戦€乵anage");
     }
 
 

+ 29 - 0
Assets/Scripts/LayoutTemplate/TemplateVideo.cs

@@ -10,6 +10,10 @@ public class TemplateVideo : BaseTemPlate
     private AVProVideoPlayer m_Video;
 
     public string localSavePath;
+
+    public string spid;
+    public string videoid;
+
     protected override void OnEnable()
     {
         //localSavePath = Application.persistentDataPath + "/Material/" + Path.GetFileName(Data.downloadPath);
@@ -44,6 +48,16 @@ public class TemplateVideo : BaseTemPlate
         m_Video = transform.Find("Screen/AVideo").GetComponent<AVProVideoPlayer>();
         MediaPlayer = transform.Find("Screen/AVideo").GetComponent<MediaPlayer>();
         HideCollider();
+
+        if(!UserInfo.Instance.is20)
+        {
+            videoid = transform.name;
+            spid = transform.parent.parent.name;
+            MultiPlayerManager.Instance.OnSynVideo += OnSyncVideo;
+            transform.GetComponent<VideoPlayBtn>().spid = spid;
+            transform.GetComponent<VideoPlayBtn>().videoid = videoid;
+        }
+           
     }
 
     private void Update()
@@ -117,6 +131,21 @@ public class TemplateVideo : BaseTemPlate
         }
     }
 
+    private void OnSyncVideo(SyncVideoData syncVideo)
+    {
+
+        if(syncVideo.spid == spid&& syncVideo.id == videoid)
+        {
+            if (syncVideo.isPlay)
+                m_Video.Play();
+            else
+                m_Video.Pause();
+
+            if (syncVideo.times != -1)
+                m_Video.SetSeek(syncVideo.times);
+        }
+    }
+
     public override void HideCollider()
     {
         base.HideCollider();

+ 6 - 0
Assets/Scripts/LayoutTemplate/VideoPlayBtn.cs

@@ -7,6 +7,9 @@ public class VideoPlayBtn : MonoBehaviour
     public GameObject Icon;
     public bool m_IsPlaying;
     public AVProVideoPlayer m_Video;
+
+    public string spid;
+    public string videoid;
     private void Start()
     {
         if (m_Video == null)
@@ -31,5 +34,8 @@ public class VideoPlayBtn : MonoBehaviour
             Icon.SetActive(true);
         }
         m_IsPlaying = !m_IsPlaying;
+
+        MQTTClient.Instance.sendActiveVideo(spid, videoid, m_IsPlaying, -1);
     }
+
 }

+ 53 - 25
Assets/Scripts/MultiPlayer/MultiPlayerManager.cs

@@ -1,3 +1,4 @@
+using LitJson;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
@@ -11,63 +12,90 @@ public class MultiPlayerManager : MonoSingleton<MultiPlayerManager>
 
     public delegate void SynObject(SyncObject sycObj);
 
-    public delegate void SynVideo(SyncVideo sycVideo);
+    public delegate void SynVideo(SyncVideoData sycVideo);
 
     public JoinRoom OnJoinRoom;
     public QuitRoom OnQuitRoom;
     public SynObject OnSynObject;
     public SynVideo OnSynVideo;
 
-    public Queue<SyncObject> qSyncObject;
-    public Queue<SyncVideo> qSyncVideo;
+    //public Queue<SyncObject> qSyncObject;
+    //public Queue<SyncVideoData> qSyncVideo;
 
 
-    public void MessageCallBack(string message)
+    public Dictionary<string, SyncSpoit> dicSpoitValue;
+    //public Dictionary<string, SyncVideo> dicVideoValue;
+    //public List<SyncVideo> listVideoValue;
+    public Dictionary<string, SynchronizationObject> dicPlayer;
+
+    public void ReceivedCamPos(string uid, JsonData data)
     {
+        SyncObject syncData = new SyncObject();
+        syncData.id = uid;
+        syncData.pos = new Vector3(float.Parse(data["x"].ToString()), float.Parse(data["y"].ToString()), float.Parse(data["z"].ToString()));
+        OnSynObject(syncData);
+
+        if (!dicPlayer.ContainsKey(uid))
+        {
+            // 创建 
+            GameObject player =  GameObject.Instantiate(Resources.Load<GameObject>("Template/Prefab/Player"));
+            SynchronizationObject SyncPlayer = player.GetComponent<SynchronizationObject>();
+            SyncPlayer.uid = uid;
+            SyncPlayer.InitData(syncData);
+            dicPlayer.Add(SyncPlayer.uid, SyncPlayer);
+            
 
+        }
+     
     }
 
-    public void RoomCallBack()
+    public void ReceivedActiveSp(JsonData data)
     {
-
+        dicSpoitValue[data["spid"].ToString()].spoitObj.SetActive(bool.Parse(data["isOpen"].ToString()));
     }
 
-    public IEnumerator SendMessage()
+    public void ReceivedActiveVideo(JsonData data)
     {
-         while(true)
-        {
-            yield return new WaitForSeconds(0.4f);
+        SyncVideoData syncData = new SyncVideoData();
 
-            // 发送同步信息
-             
-            if(qSyncObject.Count>0)
-            {
+        syncData.spid = data["spid"].ToString();
+        syncData.id = data["videoId"].ToString();
+        syncData.isPlay = bool.Parse(data["isplay"].ToString());
+        syncData.times = float.Parse(data["jindu"].ToString());
 
-            }
-
-            if(qSyncVideo.Count>0)
-            {
-                 
-            }
-        }
+        OnSynVideo(syncData);
+      
     }
 
+}
 
+public class SyncSpoit
+{
+    public string spoitId;
+    public GameObject spoitObj;
+}
+
+public class SyncVideo
+{
+    public string spoitId;
+    public string videoId;
+    public AVProVideoPlayer aVProVideo;
 }
 
 public class SyncObject
 {
     public string id { get; set; }
-    public bool isSelect { get; set; }
-    public bool objAction { get; set; }
+ //   public bool isSelect { get; set; }
+  //  public bool objAction { get; set; }
     public Vector3 pos { get; set; }
-    public Vector3 rot { get; set; }
+   // public Vector3 rot { get; set; }
 
 
 }
 
-public class SyncVideo
+public class SyncVideoData
 {
+    public string spid { get; set; }
     public string id { get; set; }
     public bool isPlay { get; set; }
     public float times { get; set; }

+ 10 - 2
Assets/Scripts/MultiPlayer/SynchronizationObject.cs

@@ -7,7 +7,7 @@ public class SynchronizationObject : MonoBehaviour
     public SyncObjectType type;
 
     public bool isSync;
-
+    public string uid;
     private SyncObject data;
     private float Speed = 3;
     private float framSpeed;
@@ -19,10 +19,18 @@ public class SynchronizationObject : MonoBehaviour
         MultiPlayerManager.Instance.OnSynObject += OnSyncObject;
     }
 
-    private void OnSyncObject(SyncObject data)
+    public void InitData(SyncObject data)
     {
+        if (data != null)
+            return;
+        this.data = data;
 
 
+    }
+    public void OnSyncObject(SyncObject data)
+    {
+        if (data.id == uid)
+            this.data = data;
 
     }
 

+ 1 - 1
Assets/Scripts/MultiPlayer/SynchronizationVideo.cs

@@ -14,7 +14,7 @@ public class SynchronizationVideo : MonoBehaviour
         MultiPlayerManager.Instance.OnSynVideo += OnSyncVideo;
     }
 
-    private void OnSyncVideo(SyncVideo syncVideo)
+    private void OnSyncVideo(SyncVideoData syncVideo)
     {
         if (syncVideo.isPlay)
             AvideoPlayer.Play();

+ 5 - 0
Assets/Scripts/UI/GameManager.cs

@@ -992,6 +992,10 @@ public class GameManager : MonoSingleton<GameManager>
         var spoitValues = ObjectValues[spoit.id];
         var spoitObj = spoitValues.Object;
         Debug.Log("DGJ ===> 创建整体素材  "+ spoit.material.Count);
+
+        if(!UserInfo.Instance.is20)
+
+
         //生成素材组合
         for (int i = 0; i < spoit.material.Count; i++)
         {
@@ -1180,6 +1184,7 @@ public class GameManager : MonoSingleton<GameManager>
                     var videoitem = go.AddComponent<TemplateVideo>();
                     go.SetActive(true);
                     videoitem.SetData(mat, material.updateTime);
+                   
                     break;
                 case (int)MaterialType.Model:
                     var pModel = ResMgr.Instance.Load<GameObject>("Template/Prefab/Model");

+ 0 - 1
Packages/manifest.json

@@ -19,7 +19,6 @@
     "com.unity.xr.interactionsubsystems": "1.0.1",
     "com.unity.xr.openxr": "1.5.3",
     "jh.baseeditor.engine": "https://gogs.ghz-tech.com:8843/GHzGlass/GHZBasePackage.git",
-    "jh.immersalsdk.engine": "file:D:/JiHe/ImmersalSDK",
     "jh.trilib.engine": "https://gogs.ghz-tech.com:8843/GHzGlass/TriLibXR.git",
     "jh.xr.engine": "https://gogs.ghz-tech.com:8843/GHzGlass/GHZSDKXR.git#XRSDK_Nreal",
     "com.unity.modules.ai": "1.0.0",

+ 0 - 10
Packages/packages-lock.json

@@ -272,16 +272,6 @@
       "dependencies": {},
       "hash": "2a5511be1a87a9e526004eb9eb6e5f8d2f761a26"
     },
-    "jh.immersalsdk.engine": {
-      "version": "file:D:/JiHe/ImmersalSDK",
-      "depth": 0,
-      "source": "local",
-      "dependencies": {
-        "com.unity.xr.management": "4.0.1",
-        "com.unity.xr.legacyinputhelpers": "2.1.2",
-        "com.unity.inputsystem": "1.4.2"
-      }
-    },
     "jh.trilib.engine": {
       "version": "https://gogs.ghz-tech.com:8843/GHzGlass/TriLibXR.git",
       "depth": 0,

+ 3 - 3
ProjectSettings/ProjectSettings.asset

@@ -924,6 +924,7 @@ PlayerSettings:
   metroSplashScreenUseBackgroundColor: 1
   platformCapabilities:
     WindowsStoreApps:
+      EnterpriseAuthentication: False
       OfflineMapsManagement: False
       HumanInterfaceDevice: False
       Location: False
@@ -935,7 +936,6 @@ PlayerSettings:
       PrivateNetworkClientServer: False
       InternetClientServer: False
       VideosLibrary: False
-      BackgroundMediaPlayback: False
       Objects3D: False
       RemoteSystem: False
       BlockedChatMessages: False
@@ -957,10 +957,10 @@ PlayerSettings:
       PointOfService: False
       RecordedCallsFolder: False
       Contacts: False
-      InternetClient: True
       Proximity: False
+      InternetClient: True
       CodeGeneration: False
-      EnterpriseAuthentication: False
+      BackgroundMediaPlayback: False
   metroTargetDeviceFamilies:
     Desktop: False
     Holographic: False