Browse Source

新增MQTT标记 新的顶部菜单栏显示逻辑

DGJ 1 year ago
parent
commit
1d55fa2efc

+ 7 - 0
Assets/Game/PrefabTemplate/HeadBtn.prefab.meta

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

+ 14 - 1
Assets/Game/ShowXunJian/ShowDaoHang.prefab

@@ -3817,6 +3817,7 @@ GameObject:
   - component: {fileID: 5466424356445212233}
   - component: {fileID: 6165832893745008072}
   - component: {fileID: 335074033941586619}
+  - component: {fileID: 7533901546252241780}
   m_Layer: 5
   m_Name: ShowDaoHang
   m_TagString: Untagged
@@ -3891,7 +3892,7 @@ MonoBehaviour:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 5466424356445212314}
-  m_Enabled: 1
+  m_Enabled: 0
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 98abaf856dae9dc41bd96faf988a2b8d, type: 3}
   m_Name: 
@@ -3906,6 +3907,18 @@ MonoBehaviour:
   LinearFollowing: 0
   menu_size: {x: 0, y: 0}
   nowV3: {x: 0, y: 0, z: 0}
+--- !u!114 &7533901546252241780
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5466424356445212314}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 65f83d6e499a787479f63b1414eaaad8, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &5573163100672273733
 GameObject:
   m_ObjectHideFlags: 0

+ 5 - 1
Assets/LangChaoRTC/Remote/ShowRoom/RoomFile.cs

@@ -1,4 +1,4 @@
-
+
 using System;
 using System.Collections.Generic;
 using LitJson;
@@ -42,6 +42,8 @@ public class RoomFile : RemoteSingleton<RoomFile>
         WSHandler.Rtc.OnClearFile += ClearFile;
         WSHandler.Rtc.OnCoordinate += Coordinate;
         WSHandler.Rtc.OnSharePrintscreen += ReceiveSharePrintscreen;
+
+        MQTTClient.Instance.OnCoordinate += Coordinate;
     }
 
     private void ReceiveSharePrintscreen(JsonData data)
@@ -292,5 +294,7 @@ public class RoomFile : RemoteSingleton<RoomFile>
         WSHandler.Rtc.OnClearFile -= ClearFile;
         WSHandler.Rtc.OnCoordinate -= Coordinate;
         WSHandler.Rtc.OnSharePrintscreen -= ReceiveSharePrintscreen;
+
+        MQTTClient.Instance.OnCoordinate -= Coordinate;
     }
 }

+ 50 - 0
Assets/Resources/emqxsl-ca.bytes

@@ -0,0 +1,50 @@
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
+MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
+oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
+lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
+pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
+yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
+wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
+pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
+BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
+AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
+Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
+Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
+/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
+MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
+SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
+M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
+4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
+sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
+rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
+-----END CERTIFICATE-----
+

+ 7 - 0
Assets/Resources/emqxsl-ca.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: db8f9e55e6eb7a3469ced7aab77994e7
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 349 - 37
Assets/Scenes/LangChaoDemo2.unity

@@ -508,6 +508,17 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 41937900}
   m_CullTransparentMesh: 0
+--- !u!114 &44426570 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 4217016305914153974, guid: cac2153774ed21347949529c189c2996, type: 3}
+  m_PrefabInstance: {fileID: 445520369}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &44961365
 GameObject:
   m_ObjectHideFlags: 0
@@ -1418,7 +1429,7 @@ Transform:
   m_Children:
   - {fileID: 347313460}
   m_Father: {fileID: 0}
-  m_RootOrder: 16
+  m_RootOrder: 17
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &108617015
 MonoBehaviour:
@@ -1678,7 +1689,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 22
+  m_RootOrder: 23
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &154394636
 GameObject:
@@ -1800,7 +1811,7 @@ Transform:
   m_Children:
   - {fileID: 503826677}
   m_Father: {fileID: 0}
-  m_RootOrder: 35
+  m_RootOrder: 36
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &160490922
 GameObject:
@@ -1850,7 +1861,7 @@ Transform:
   m_Children:
   - {fileID: 609639383}
   m_Father: {fileID: 0}
-  m_RootOrder: 10
+  m_RootOrder: 11
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &160490925
 MonoBehaviour:
@@ -1932,7 +1943,7 @@ Transform:
   - {fileID: 68575266}
   - {fileID: 238581573}
   m_Father: {fileID: 0}
-  m_RootOrder: 4
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &183734199
 MonoBehaviour:
@@ -2651,7 +2662,7 @@ RectTransform:
   m_Children:
   - {fileID: 1145787686}
   m_Father: {fileID: 0}
-  m_RootOrder: 24
+  m_RootOrder: 25
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -2753,7 +2764,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 37
+  m_RootOrder: 38
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &258612956
 PrefabInstance:
@@ -2985,7 +2996,7 @@ Transform:
   - {fileID: 1504529038}
   - {fileID: 781181986}
   m_Father: {fileID: 0}
-  m_RootOrder: 15
+  m_RootOrder: 16
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &281315257
 MonoBehaviour:
@@ -3130,7 +3141,7 @@ Transform:
   m_Children:
   - {fileID: 656363743}
   m_Father: {fileID: 0}
-  m_RootOrder: 17
+  m_RootOrder: 18
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &284208614
 MonoBehaviour:
@@ -3386,6 +3397,125 @@ Transform:
   m_Father: {fileID: 1012225063}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &289110131
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 289110135}
+  - component: {fileID: 289110134}
+  - component: {fileID: 289110133}
+  - component: {fileID: 289110132}
+  - component: {fileID: 289110136}
+  m_Layer: 0
+  m_Name: Canvas
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &289110132
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 289110131}
+  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!114 &289110133
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 289110131}
+  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: 1
+  m_PresetInfoIsWorld: 1
+--- !u!223 &289110134
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 289110131}
+  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_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!224 &289110135
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 289110131}
+  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: 0
+  m_Children:
+  - {fileID: 1165200056}
+  m_Father: {fileID: 0}
+  m_RootOrder: 3
+  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: 1358.75, y: 576.00006}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &289110136
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 289110131}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1d6e248030cc05b4abad2b65bbc330f2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  homeBtn: {fileID: 1870290181}
+  dhBtn: {fileID: 455569497}
+  rtcBtn: {fileID: 44426570}
+  uiFollow: {fileID: 0}
 --- !u!1 &302962888
 GameObject:
   m_ObjectHideFlags: 0
@@ -3416,7 +3546,7 @@ Transform:
   m_Children:
   - {fileID: 2056682100}
   m_Father: {fileID: 0}
-  m_RootOrder: 20
+  m_RootOrder: 21
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &305417998
 GameObject:
@@ -3510,7 +3640,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
 --- !u!1 &307533891
 GameObject:
@@ -3990,7 +4120,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 6007065485426162334, guid: 7cd0ceba7525bdc42a36be841a8aad16, type: 3}
       propertyPath: m_RootOrder
-      value: 31
+      value: 32
       objectReference: {fileID: 0}
     - target: {fileID: 6007065485426162334, guid: 7cd0ceba7525bdc42a36be841a8aad16, type: 3}
       propertyPath: m_LocalPosition.x
@@ -5572,6 +5702,116 @@ MonoBehaviour:
   CaptureImage: {fileID: 0}
   RGBCamTexture: {fileID: 0}
   isAuto: 1
+--- !u!1001 &445520369
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 289110135}
+    m_Modifications:
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_Pivot.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_Pivot.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_RootOrder
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 1468
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 1020
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalScale.x
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalScale.y
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalScale.z
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 5466424356445212314, guid: cac2153774ed21347949529c189c2996, type: 3}
+      propertyPath: m_Name
+      value: HeadBtn
+      objectReference: {fileID: 0}
+    m_RemovedComponents:
+    - {fileID: 4193849397670049651, guid: cac2153774ed21347949529c189c2996, type: 3}
+  m_SourcePrefab: {fileID: 100100000, guid: cac2153774ed21347949529c189c2996, type: 3}
 --- !u!1 &453102435
 GameObject:
   m_ObjectHideFlags: 0
@@ -5602,7 +5842,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 27
+  m_RootOrder: 28
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &453102437
 MonoBehaviour:
@@ -5617,6 +5857,17 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   global: 1
+--- !u!114 &455569497 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 6151485519124196163, guid: cac2153774ed21347949529c189c2996, type: 3}
+  m_PrefabInstance: {fileID: 445520369}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &460386844
 GameObject:
   m_ObjectHideFlags: 0
@@ -7035,7 +7286,7 @@ Transform:
   - {fileID: 2050305761}
   - {fileID: 643100344}
   m_Father: {fileID: 0}
-  m_RootOrder: 19
+  m_RootOrder: 20
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &571089642
 MonoBehaviour:
@@ -7531,7 +7782,7 @@ Transform:
   m_Children:
   - {fileID: 2147039166}
   m_Father: {fileID: 0}
-  m_RootOrder: 12
+  m_RootOrder: 13
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &618326835
 MonoBehaviour:
@@ -8105,7 +8356,7 @@ RectTransform:
   m_Children:
   - {fileID: 877159228}
   m_Father: {fileID: 0}
-  m_RootOrder: 13
+  m_RootOrder: 14
   m_LocalEulerAnglesHint: {x: -29.84, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -8780,7 +9031,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 29
+  m_RootOrder: 30
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &684664681
 GameObject:
@@ -9524,7 +9775,7 @@ Transform:
   m_Children:
   - {fileID: 1510149719}
   m_Father: {fileID: 0}
-  m_RootOrder: 6
+  m_RootOrder: 7
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &743926309
 PrefabInstance:
@@ -11891,7 +12142,7 @@ Transform:
   m_Children:
   - {fileID: 1299352959}
   m_Father: {fileID: 0}
-  m_RootOrder: 5
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &954129974
 GameObject:
@@ -12729,7 +12980,7 @@ Transform:
   - {fileID: 395315453}
   - {fileID: 1429598954}
   m_Father: {fileID: 0}
-  m_RootOrder: 25
+  m_RootOrder: 26
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1012225064
 MonoBehaviour:
@@ -13079,7 +13330,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 32
+  m_RootOrder: 33
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1039426617
 MonoBehaviour:
@@ -13974,7 +14225,7 @@ Transform:
   m_Children:
   - {fileID: 1321099324}
   m_Father: {fileID: 0}
-  m_RootOrder: 14
+  m_RootOrder: 15
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!23 &1111232647
 MeshRenderer:
@@ -14169,7 +14420,7 @@ Transform:
   m_Children:
   - {fileID: 340611748}
   m_Father: {fileID: 0}
-  m_RootOrder: 11
+  m_RootOrder: 12
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1127038882
 MonoBehaviour:
@@ -14585,6 +14836,11 @@ RectTransform:
   m_AnchoredPosition: {x: -5, y: 0}
   m_SizeDelta: {x: -20, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!224 &1165200056 stripped
+RectTransform:
+  m_CorrespondingSourceObject: {fileID: 5466424356445212017, guid: cac2153774ed21347949529c189c2996, type: 3}
+  m_PrefabInstance: {fileID: 445520369}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1 &1165372360
 GameObject:
   m_ObjectHideFlags: 0
@@ -14839,7 +15095,7 @@ RectTransform:
   m_Children:
   - {fileID: 1990114660}
   m_Father: {fileID: 0}
-  m_RootOrder: 33
+  m_RootOrder: 34
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -15184,7 +15440,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 38
+  m_RootOrder: 39
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1299352958
 PrefabInstance:
@@ -15770,7 +16026,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 26
+  m_RootOrder: 27
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1347902563
 GameObject:
@@ -16009,7 +16265,7 @@ Transform:
   m_Children:
   - {fileID: 1767066921}
   m_Father: {fileID: 0}
-  m_RootOrder: 9
+  m_RootOrder: 10
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1353351977
 MonoBehaviour:
@@ -16914,7 +17170,7 @@ Transform:
   m_Children:
   - {fileID: 1764105085}
   m_Father: {fileID: 0}
-  m_RootOrder: 36
+  m_RootOrder: 37
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1429598953
 GameObject:
@@ -17374,8 +17630,53 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 8
+  m_RootOrder: 9
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1496039440
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1496039441}
+  - component: {fileID: 1496039442}
+  m_Layer: 0
+  m_Name: MQTT
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1496039441
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1496039440}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 41
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1496039442
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1496039440}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 41269b9887a20dc4694d587e0da326d3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
 --- !u!1 &1504529037
 GameObject:
   m_ObjectHideFlags: 0
@@ -19723,7 +20024,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 28
+  m_RootOrder: 29
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1764105084
 GameObject:
@@ -20440,7 +20741,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 7
+  m_RootOrder: 8
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1834266303
 MonoBehaviour:
@@ -20592,6 +20893,17 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1852358456}
   m_CullTransparentMesh: 0
+--- !u!114 &1870290181 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 6114604666720134921, guid: cac2153774ed21347949529c189c2996, type: 3}
+  m_PrefabInstance: {fileID: 445520369}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &1877736616
 GameObject:
   m_ObjectHideFlags: 0
@@ -21631,7 +21943,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 8086746782638953769, guid: 2cb5ff62fa16eed42bdf0f348ac8acc0, type: 3}
       propertyPath: m_RootOrder
-      value: 39
+      value: 40
       objectReference: {fileID: 0}
     - target: {fileID: 8086746782638953769, guid: 2cb5ff62fa16eed42bdf0f348ac8acc0, type: 3}
       propertyPath: m_LocalPosition.x
@@ -21876,7 +22188,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 23
+  m_RootOrder: 24
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1954795442
 MonoBehaviour:
@@ -22025,7 +22337,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 34
+  m_RootOrder: 35
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1957186011
 GameObject:
@@ -22335,7 +22647,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 21
+  m_RootOrder: 22
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1990114659
 GameObject:
@@ -22943,7 +23255,7 @@ Transform:
   m_Children:
   - {fileID: 197407318}
   m_Father: {fileID: 0}
-  m_RootOrder: 18
+  m_RootOrder: 19
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &2025435767
 GameObject:
@@ -24900,7 +25212,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 8955719703749531883, guid: b8f06988b095a5b47b02ae16f8140d34, type: 3}
       propertyPath: m_RootOrder
-      value: 30
+      value: 31
       objectReference: {fileID: 0}
     - target: {fileID: 8955719703749531883, guid: b8f06988b095a5b47b02ae16f8140d34, type: 3}
       propertyPath: m_LocalScale.x

+ 1 - 1
Assets/Scripts/Data/DataItem.cs

@@ -65,7 +65,7 @@ public class DataItem : MonoBehaviour
         for (int i = 0; i < DeviceInfoList.Count;i++)
         {
             DeviceInfoList[i].Init(DeviceParameterList[0],i,this); // 数据只有一个,所以都是0
-        }
+        }     
     }
 
     //public void Init( int id ,Vector3 offsetPos, int eulerAxle ,BladeServerData data ,float width, float height)

+ 8 - 0
Assets/Scripts/MQTT.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 90fd2046a628a6d4290a57eb826c2062
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 292 - 0
Assets/Scripts/MQTT/MQTTClient.cs

@@ -0,0 +1,292 @@
+using LitJson;
+using login;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using UnityEngine;
+using UnityEngine.Android;
+using uPLibrary.Networking.M2Mqtt.Messages;
+using static QTTManager;
+
+public class MQTTClient : MonoSingleton<MQTTClient>
+{
+    string front = "client/";
+    string id = ""; 
+    string username = "u@unity3";// 需要根据服务器设置
+    string password = null;// 需要根据服务器设置
+    string rid = "mqttx_b4c02ddc"; //其他人的ID
+    public event Action<JsonData> OnCoordinate;
+    public static byte[] bytes;
+   // public static byt ta;
+    QTTManager qt;
+    // Start is called before the first frame update
+    void Start()
+    {
+        // 请求文件读取和写入权限
+        if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead) ||
+            !Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
+        {
+            Permission.RequestUserPermission(Permission.ExternalStorageRead);
+            Permission.RequestUserPermission(Permission.ExternalStorageWrite);
+        }
+        bytes = (Resources.Load("emqxsl-ca") as TextAsset).bytes;
+        
+        Debug.Log(" DGJ  ===> emqxsl-ca.bytes "+ bytes.Length);
+    }
+    Queue<MqttMsgPublishEventArgs> rlist = new Queue<MqttMsgPublishEventArgs>();
+    private void OnReceived(MqttMsgPublishEventArgs obj)
+    {
+        rlist.Enqueue(obj);
+
+
+    }
+
+    private void OnConnecting()
+    {
+        Debug.Log("MQtt  连接中");
+    }
+
+    private void onSucceed()
+    {
+        Subscribe();
+    }
+
+
+
+    private void onFaild()
+    {
+        Debug.Log("MQtt  连接失败");
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        if (rlist.Count > 0)
+        {
+            for (int i = 0; i < rlist.Count; i++)
+            {
+                OnUnityReceived(rlist.Dequeue());
+            }
+        }
+    }
+    //MQTT接收到的数据
+    public void OnUnityReceived(MqttMsgPublishEventArgs obj)
+    {
+        string msg = Encoding.UTF8.GetString(obj.Message);
+        Debug.Log("uid => " + obj.Topic + ":\n" + msg);
+        try
+        {
+            JsonData data = JsonMapper.ToObject(msg);
+            Debug.Log(" DGJ === > " + data["method"].ToString());
+            switch (data["method"].ToString())
+            {
+                //case "CamPos":
+                //    Debug.Log("DGJ   ===>  CamPos");
+                //    // 根据 uid  同步Player 位置  如果没有就创建
+                //  //  MultiPlayerManager.Instance.ReceivedCamPos(obj.Topic, data);
+                //    break;
+                //case "ActiveSp":
+
+                //    // 同步对应景点的开关
+                //    //MultiPlayerManager.Instance.ReceivedActiveSp( data);
+
+                //    break;
+                //case "ActiveVideo":
+
+                //    // 同步播放器的对应状态
+                //  //  MultiPlayerManager.Instance.ReceivedActiveVideo(data);
+                //    break;
+
+                case "coordinate":
+
+                  OnCoordinate?.Invoke(data);
+
+                    break;
+
+                default:
+                    break;
+            }
+
+        }
+        catch
+        {
+            return;
+        }
+
+    }
+
+    private void OnDestroy()
+    {
+        DisConnect();
+    }
+
+    public void SetUserName(string username)
+    {
+        if (username != null)
+            this.username = username;
+    }
+
+    public void SetFront(string front)
+    {
+        if (front != null)
+            this.front = front;
+    }
+    //连接
+    public void Connect()
+    {
+      
+        Debug.Log("DGJ ===> MQTT ");
+        if (DeviceType.type == "Phone")
+        {
+            id =UserInfo.Instance.name + "_Phone";
+            rid = front+UserInfo.Instance.name + "_Glasses";
+
+        }
+        else
+        {
+            id = UserInfo.Instance.name + "_Glasses";
+            rid = front+UserInfo.Instance.name + "_Phone";
+        }
+        DisConnect();
+        qt = new QTTManager(front+id, username, password, HttpAction.Instance.mqtturl, HttpAction.Instance.officeport);
+        qt.Connect();
+        StartCoroutine(Reconnection());
+        qt.ConnectionFailed += onFaild;
+        qt.ConnectionSucceeded += onSucceed;
+        qt.OnConnecting += OnConnecting;
+        qt.OnReceived += OnReceived;
+        qt.OnClose += OnClose;
+    }
+
+    private void OnClose(EventArgs obj)
+    {
+        Debug.Log("断开连接");
+
+        
+    }
+
+    private IEnumerator Reconnection()
+    {
+        while (true)
+        {
+            yield return new WaitForSeconds(5);
+            if(qt!=null&&!qt.IsConnect())
+            {
+                Debug.Log(" DGJ ===>  Reconnection ");
+                Connect();
+            }         
+        }
+    }
+
+
+
+    //断开连接
+    public void DisConnect()
+    {
+        if (qt != null && qt.IsConnect())
+            qt.DisConnect();
+
+    }
+    //订阅
+    public void Subscribe()
+    {
+        Debug.Log(" DGJ   =====> Subscribe "+ id);
+        ushort s = qt.Subscribe(
+                        new string[]
+                        {
+                              front+id
+
+                        },
+                        new byte[]
+                        {
+                                
+                                MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE
+
+                        });
+
+        Debug.Log(" DGJ   =====> Subscribe2");
+     
+    }
+
+    //public void StartSendCameraPos()
+    //{
+    //    StartCoroutine(sendCameraPos());
+    //}
+
+    ////眼镜端像手机端发送实时位置
+    //IEnumerator sendCameraPos()
+    //{
+    //    Debug.Log("DGJ  =====>  sendCameraPos" + qt.IsConnect());
+    //    while (true)
+    //    {
+    //        if(qt!=null&& qt.IsConnect())
+    //        {
+    //            JsonData json = new JsonData();
+    //            json["type"] = "CamPos";
+    //            //  json["x"] = OpenXRCamera.Instance.head.position.x;
+    //            //json["y"] = OpenXRCamera.Instance.head.position.y;
+    //            //json["z"] = OpenXRCamera.Instance.head.position.z;
+    //            json["x"] = GameManager.Instance.Player.transform.localPosition.x;
+    //            json["y"] = GameManager.Instance.Player.transform.localPosition.y;
+    //            json["z"] = GameManager.Instance.Player.transform.localPosition.z;
+    //            json["Sid"] = "sid";//选择的场景id
+    //            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;//是否打开
+        publish(Encoding.UTF8.GetBytes(json.ToJson()));
+        Debug.Log("MQtt  发送manage");
+    }
+
+
+    //眼镜发送触发的视频
+    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;//视频进度
+        publish(Encoding.UTF8.GetBytes(json.ToJson()));
+        Debug.Log("MQtt  发送manage");
+    }
+
+    public void SendCoord()
+    {
+        JsonData json = new JsonData();
+        json["id"] = UserInfo.Instance.name;
+        json["type"] = "Coord";
+        json["x"] = 0.1f;
+        json["y"] = 0.1f;
+        json["z"] = 0.1f;
+
+    }
+
+
+    void publish(byte[] bs)
+    {
+        if(qt!=null&& qt.IsConnect())
+        {
+           // Debug.Log(id + "  DGJ  publish =====>  " + front+rid + "   " + bs.Length);
+            qt.Publish(rid, bs, MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);
+        }
+        else
+        {
+            Debug.LogError(" MQTT  未连接 ");
+        }
+     
+    }
+}

+ 11 - 0
Assets/Scripts/MQTT/MQTTClient.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 41269b9887a20dc4694d587e0da326d3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 13 - 0
Assets/Scripts/MQTT/MQTTType.cs

@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class MQTTType
+{
+    public class MQTTCameraPos
+    {
+        public float x;
+        public float y;
+        public float z;
+    }
+}

+ 11 - 0
Assets/Scripts/MQTT/MQTTType.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 800bbd108df26ed49b3aa878671057e8
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 96 - 0
Assets/Scripts/Tool/HeadBtnManager.cs

@@ -0,0 +1,96 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class HeadBtnManager : MonoSingleton<HeadBtnManager>
+{
+    /*
+     * 1.1级页面消失后 ,在这连显示 重置按钮 和主界面
+     * 2. 点击重置按钮的时候,当前UI消失,将1级页面显示出来
+     * 3. 返回Home页面的时候 当前UI消失,并且关闭1级页面
+     * 
+     * 存储各类重置按钮
+     */
+
+    public Button homeBtn;
+    public Button dhBtn;
+    public Button rtcBtn;
+    // public Button 
+
+    public UIFollow uiFollow;
+
+    private Transform player;
+
+    private void Start()
+    {
+        dhBtn.onClick.AddListener(() =>
+        {
+            Hide();
+            if (uiFollow != null)
+                uiFollow.Show(transform.position);
+        });
+
+        rtcBtn.onClick.AddListener(() =>
+        {
+            Hide();
+            if (uiFollow != null)
+                uiFollow.Show(transform.position);
+        });
+
+        player = new GameObject("Player").transform;
+
+        Hide();
+    }
+
+    private void Update()
+    {
+
+        player.position = OpenXRCamera.Instance.transform.position;
+        player.eulerAngles = new Vector3(0, OpenXRCamera.Instance.transform.eulerAngles.y, 0);
+       
+        transform.position = OpenXRCamera.Instance.head.position + player.transform.forward * 1.3f + new Vector3(-0.2f, 1f, 0);
+        transform.eulerAngles = player.eulerAngles;
+    }
+
+    public void ShowResetBtn(ScenesManager.SceneType type , UIFollow uiFollow)
+    {
+        homeBtn.gameObject.SetActive(true);
+        this.uiFollow = uiFollow;
+        switch (type)
+        {
+            case ScenesManager.SceneType.GameStartLogo:
+                break;
+            case ScenesManager.SceneType.ShowLogin:
+                break;
+            case ScenesManager.SceneType.ShowChoose:
+                break;
+            case ScenesManager.SceneType.ShowXunJian:
+                break;
+            case ScenesManager.SceneType.ShowXJ:
+                break;
+            case ScenesManager.SceneType.ShowDH:
+                dhBtn.gameObject.SetActive(true);
+                break;
+            case ScenesManager.SceneType.ShowRTC:
+                rtcBtn.gameObject.SetActive(true);
+                break;
+            case ScenesManager.SceneType.ShowRTCHistory:
+                break;
+            case ScenesManager.SceneType.ShowDevice:
+                break;
+            case ScenesManager.SceneType.ShowBasicDevice:
+                break;
+            default:
+                break;
+        }
+    }
+
+    private void Hide()
+    {
+        homeBtn.gameObject.SetActive(false);
+        dhBtn.gameObject.SetActive(false);
+        rtcBtn.gameObject.SetActive(false);
+    }
+
+}

+ 11 - 0
Assets/Scripts/Tool/HeadBtnManager.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1d6e248030cc05b4abad2b65bbc330f2
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 55 - 0
Assets/Scripts/Tool/UIFollow.cs

@@ -0,0 +1,55 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class UIFollow : MonoBehaviour
+{
+
+   public float dis;
+   public float angle;
+
+    public Vector3 pos;
+    void Start()
+    {
+
+        pos = new Vector3(OpenXRCamera.Instance.transform.position.x, 0, OpenXRCamera.Instance.transform.position.z + (OpenXRCamera.Instance.transform.forward * 1.5f).z);
+        Show(pos);
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        dis = Vector3.Distance(new Vector3(OpenXRCamera.Instance.transform.position.x, 0, OpenXRCamera.Instance.transform.position.z), new Vector3(transform.position.x, 0, transform.position.z));
+
+       angle = Vector3.Angle(OpenXRCamera.Instance.head.GetComponent<Camera>().transform .forward, transform.position - OpenXRCamera.Instance.head.transform.position);
+
+        if(dis>2.5f&&angle>100)
+        {
+
+            Hide();
+            // 
+        }
+    }
+
+
+    // 隐藏
+
+    private void Hide()
+    {
+        gameObject.SetActive(false);
+
+        HeadBtnManager.Instance.ShowResetBtn(ScenesManager.SceneType.ShowDH, this);
+    }
+
+
+
+
+    // 显示 
+    public void Show( Vector3 pos )
+    {
+      
+        transform.position = pos;
+        transform.eulerAngles = new Vector3(0,OpenXRCamera.Instance.transform.eulerAngles.y, 0);
+        gameObject.SetActive(true);
+    }
+}

+ 11 - 0
Assets/Scripts/Tool/UIFollow.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 65f83d6e499a787479f63b1414eaaad8
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/StreamingAssets.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 70da78d8b0fa92346986bca87c25feb1
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/StreamingAssets/TrackingProfiles.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bafad34da68e18645818b44f20bbbd79
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: