设备绑定
This commit is contained in:
parent
a06bf877a4
commit
a30c334bb5
BIN
AssetBundles/Android/Android
Normal file
BIN
AssetBundles/Android/Android
Normal file
Binary file not shown.
31
AssetBundles/Android/Android.manifest
Normal file
31
AssetBundles/Android/Android.manifest
Normal file
@ -0,0 +1,31 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 256577813
|
||||
AssetBundleManifest:
|
||||
AssetBundleInfos:
|
||||
Info_0:
|
||||
Name: ui_homepage.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_common.ab
|
||||
Info_1:
|
||||
Name: common.ab
|
||||
Dependencies: {}
|
||||
Info_2:
|
||||
Name: language.ab
|
||||
Dependencies: {}
|
||||
Info_3:
|
||||
Name: ui_common.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_loginpage.ab
|
||||
Info_4:
|
||||
Name: ui_loginpage.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_common.ab
|
||||
Info_5:
|
||||
Name: ui_safetylearningpage.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_common.ab
|
||||
Info_6:
|
||||
Name: ui_connectdevicepage.ab
|
||||
Dependencies:
|
||||
Dependency_0: common.ab
|
||||
Dependency_1: ui_common.ab
|
||||
Binary file not shown.
@ -1,66 +1,21 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 233218370
|
||||
CRC: 374579679
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: c80e189aa6f9c8d7ee6bc50f7300305d
|
||||
Hash: 23b30b8b7538d15e7e1f5c745bb57c50
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: be157f972cb3f854d77a3240d64a7387
|
||||
Hash: 958b54fb77cc0a35b3bf79f07d0e96ea
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: c80e189aa6f9c8d7ee6bc50f7300305d
|
||||
Hash: 23b30b8b7538d15e7e1f5c745bb57c50
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 21
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 74
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 128
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FaceInfo_Legacy
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FontAssetCreationSettings
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.KerningTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_Character
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontFeatureTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontWeightPair
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphPairAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphValueRecord
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.FaceInfo
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.Glyph
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphMetrics
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphRect
|
||||
SerializeReferenceClassIdentifiers: []
|
||||
Assets:
|
||||
- Assets/Res/common/LiberationSans SDF - Drop Shadow.mat
|
||||
- Assets/Res/common/TMP_SDF-Mobile.shader
|
||||
- Assets/Res/common/LiberationSans SDF - Fallback.asset
|
||||
- Assets/Res/common/LiberationSans SDF - Outline.mat
|
||||
- Assets/Res/common/loadingNew.anim
|
||||
- Assets/Res/common/loading.anim
|
||||
- Assets/Res/common/MiSans-Medium.ttf
|
||||
- Assets/Res/common/MiSans-Medium SDF.asset
|
||||
- Assets/Res/common/LiberationSans SDF.asset
|
||||
- Assets/Res/common/LiberationSans.ttf
|
||||
Dependencies: []
|
||||
|
||||
@ -1,46 +0,0 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "785438724947",
|
||||
"project_id": "photonmatrix-ac0b5",
|
||||
"storage_bucket": "photonmatrix-ac0b5.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:785438724947:android:352ede76bb25311f51c7a6",
|
||||
"android_client_info": {
|
||||
"package_name": "com.photonmatrix.photonmatrix"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "785438724947-kpjbqi43hbj6eddianbjsgkgkkclkfmd.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAntcCsZGurbXg7TFbPMPx5aek6HDYYVxk"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "785438724947-kpjbqi43hbj6eddianbjsgkgkkclkfmd.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "785438724947-r578u4au09ebieu0pnahj8ef08s1uhqp.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "com.photonmatrix.photonmatrix"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c24a7550296d5d54d91f866dd40936db
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 749593259
|
||||
CRC: 142284609
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 81a8de0bb4c5928c43220b249b335c6b
|
||||
Hash: 98e62aa9d1a917725e16d689a36329b2
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 5ad585dd02dfb5016c0dad519eab8f49
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 81a8de0bb4c5928c43220b249b335c6b
|
||||
Hash: 98e62aa9d1a917725e16d689a36329b2
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 49
|
||||
|
||||
@ -1,55 +0,0 @@
|
||||
{
|
||||
"version": "1.0.1",
|
||||
"assetbundles": [
|
||||
{
|
||||
"name": "common.ab",
|
||||
"size": 12854223,
|
||||
"md5": "c2fa51b131e3d8a65d4134c8670ee99b"
|
||||
},
|
||||
{
|
||||
"name": "language.ab",
|
||||
"size": 2226,
|
||||
"md5": "6e10d9c8c23778a25684dd8d69350510"
|
||||
},
|
||||
{
|
||||
"name": "ui_common.ab",
|
||||
"size": 12606,
|
||||
"md5": "1dfaf11957a90b775e0be5f6fe37452b"
|
||||
},
|
||||
{
|
||||
"name": "ui_homepage.ab",
|
||||
"size": 9787,
|
||||
"md5": "4c4595943f5c31673338e2ca83147ee8"
|
||||
},
|
||||
{
|
||||
"name": "ui_loginpage.ab",
|
||||
"size": 241923,
|
||||
"md5": "520989d12bfdae3368c3fd88f8381d3e"
|
||||
},
|
||||
{
|
||||
"name": "common.ab.manifest",
|
||||
"size": 2173,
|
||||
"md5": "7f35fb8fc14986f31d17c6483a90b4f3"
|
||||
},
|
||||
{
|
||||
"name": "language.ab.manifest",
|
||||
"size": 473,
|
||||
"md5": "335cc7d7481861141ee8e6fff52f3976"
|
||||
},
|
||||
{
|
||||
"name": "ui_common.ab.manifest",
|
||||
"size": 2905,
|
||||
"md5": "a05683fbffe6068095d6b7ef877f0ef4"
|
||||
},
|
||||
{
|
||||
"name": "ui_homepage.ab.manifest",
|
||||
"size": 2419,
|
||||
"md5": "c3971548d08125ef72bade017cebabdc"
|
||||
},
|
||||
{
|
||||
"name": "ui_loginpage.ab.manifest",
|
||||
"size": 4757,
|
||||
"md5": "99941302876547c4759f674f80fee5db"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 714414049
|
||||
CRC: 2161279840
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 1153a9a71c2079962f868c3866d681ad
|
||||
Hash: 4ea1223b61d0b2425614da34c0e9dd5c
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 24e7573d98028b3cc7bcae0654eab5fa
|
||||
Hash: 3d0aa9280e2017137102b2dcf180d097
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 1153a9a71c2079962f868c3866d681ad
|
||||
Hash: 4ea1223b61d0b2425614da34c0e9dd5c
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -21,15 +21,15 @@ ClassTypes:
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
Script: {fileID: 11500000, guid: 767fbd85f067c1a4da213c13282cc05e, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 767fbd85f067c1a4da213c13282cc05e, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||
- Class: 114
|
||||
@ -49,12 +49,38 @@ ClassTypes:
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FaceInfo_Legacy
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FontAssetCreationSettings
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.KerningTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_Character
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontFeatureTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontWeightPair
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphPairAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphValueRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.VertexGradient
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.RectOffset
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.FaceInfo
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.Glyph
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphMetrics
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphRect
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
@ -76,10 +102,24 @@ SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- "Assets/Res/ui/common/\u9009\u53D6\u5934\u50CF.prefab"
|
||||
- "Assets/Res/ui/common/\u8FD4\u56DE.png"
|
||||
- "Assets/Res/ui/common/\u9009\u62E9\u6846.png"
|
||||
- "Assets/Res/ui/common/\u9A8C\u8BC1\u7801\u7EC4\u4EF6.prefab"
|
||||
- Assets/Res/ui/common/Rectangle 132 (2).png
|
||||
- "Assets/Res/ui/common/\u5C0F\u6309\u94AE.png"
|
||||
- "Assets/Res/ui/common/Check-small (\u6821\u9A8C-\u5C0F).png"
|
||||
- "Assets/Res/ui/common/\u9009\u53D6\u5934\u50CF.prefab"
|
||||
- "Assets/Res/ui/common/\u6307\u7EB9.png"
|
||||
- "Assets/Res/ui/common/\u8FD4\u56DE.png"
|
||||
- "Assets/Res/ui/common/Right (\u53F3) (1).png"
|
||||
- Assets/Res/ui/common/Loading.png
|
||||
- "Assets/Res/ui/common/\u89C6\u9891.png"
|
||||
- "Assets/Res/ui/common/\u9009\u62E9\u6846.png"
|
||||
- "Assets/Res/ui/common/\u58F0\u97F3.png"
|
||||
- "Assets/Res/ui/common/\u8BBE\u5907\u540D\u6B21.png"
|
||||
- Assets/Res/ui/common/Rectangle 148 (1).png
|
||||
- "Assets/Res/ui/common/\u5BC6\u7801 - \u5C55\u793A.png"
|
||||
- Assets/Res/ui/common/Rectangle 148.png
|
||||
- "Assets/Res/ui/common/Close (\u5173\u95ED).png"
|
||||
- Assets/Res/ui/common/Ellipse 32.png
|
||||
- "Assets/Res/ui/common/\u5B9A\u65F6.png"
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/common.ab
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_loginpage.ab
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 411ccbd3ce3893b4cb7c2f82531993fe
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6692d8124d25ece40acb1da49bb1bf7e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
AssetBundles/Android/ui_connectdevicepage.ab
Normal file
BIN
AssetBundles/Android/ui_connectdevicepage.ab
Normal file
Binary file not shown.
106
AssetBundles/Android/ui_connectdevicepage.ab.manifest
Normal file
106
AssetBundles/Android/ui_connectdevicepage.ab.manifest
Normal file
@ -0,0 +1,106 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 1954010819
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: c0f0a227dcda8c2fa20631441d246eaa
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: f416264907a65aa92adeeb00bf60fec2
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: c0f0a227dcda8c2fa20631441d246eaa
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
Script: {instanceID: 0}
|
||||
- Class: 21
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 74
|
||||
Script: {instanceID: 0}
|
||||
- Class: 111
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 2f6d707cba0376a43bc6d9f0a27ea376, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: cc4db0165ab541a44978ccde28b3bc29, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 128
|
||||
Script: {instanceID: 0}
|
||||
- Class: 213
|
||||
Script: {instanceID: 0}
|
||||
- Class: 222
|
||||
Script: {instanceID: 0}
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.ArgumentCache
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentListenerMode
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.RectOffset
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Button/ButtonClickedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ColorBlock
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.FontData
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/EndEditEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/OnChangeEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/SubmitEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Navigation
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ScrollRect/ScrollRectEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- Assets/Res/ui/connectdevicepage/Frame 19.png
|
||||
- Assets/Res/ui/connectdevicepage/icon.png
|
||||
- Assets/Res/ui/connectdevicepage/Rectangle 132 (3).png
|
||||
- Assets/Res/ui/connectdevicepage/Frame 20.png
|
||||
- "Assets/Res/ui/connectdevicepage/\u786E\u8BA4.png"
|
||||
- Assets/Res/ui/connectdevicepage/connectDevicePage.prefab
|
||||
- Assets/Res/ui/connectdevicepage/Rectangle 136.png
|
||||
- "Assets/Res/ui/connectdevicepage/\u626B\u63CF.png"
|
||||
- Assets/Res/ui/connectdevicepage/Vector.png
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/common.ab
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 3121207904
|
||||
CRC: 2873620311
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: c751eb049ed9e8f8eb1a7678ce2327e6
|
||||
Hash: a5e8163239fbf5550ab3beedb10929b1
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 2da964eb972714674342a2708c4b8066
|
||||
Hash: 252cf1d368eeed7b0aa25c6e638ef9a7
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: c751eb049ed9e8f8eb1a7678ce2327e6
|
||||
Hash: a5e8163239fbf5550ab3beedb10929b1
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -24,14 +24,10 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 7fdaf0aeaf14a6d4c9beb4770e903acf, type: 3}
|
||||
- Class: 115
|
||||
@ -45,10 +41,12 @@ ClassTypes:
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.VertexGradient
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.ArgumentCache
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentListenerMode
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
@ -57,12 +55,6 @@ SerializeReferenceClassIdentifiers:
|
||||
ClassName: UnityEngine.UI.ColorBlock
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.FontData
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/EndEditEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/OnChangeEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/SubmitEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
@ -70,6 +62,9 @@ SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- "Assets/Res/ui/homepage/\u65E0\u8BBE\u5907.png"
|
||||
- Assets/Res/ui/homepage/homePage.prefab
|
||||
- "Assets/Res/ui/homepage/\u4E2A\u4EBA\u4E2D\u5FC3.png"
|
||||
- "Assets/Res/ui/homepage/\u6D88\u606F.png"
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/common.ab
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 427bee84e8448674196ec081992050a0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6012662144bcee14e9f85185bd36b2c1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 4028950989
|
||||
CRC: 1506138910
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 59dce4d2a0ce9e0ae41212946c77f075
|
||||
Hash: 111b08c284632c8965632707d85adb47
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 70589c2c13c216b3c5fa3022c1dc899e
|
||||
Hash: 481727e0eda7646426efebfcf2086aca
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 59dce4d2a0ce9e0ae41212946c77f075
|
||||
Hash: 111b08c284632c8965632707d85adb47
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -21,9 +21,13 @@ ClassTypes:
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
Script: {fileID: 11500000, guid: 1a5913bec98c8024087f4dbe7b40ab1c, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
@ -36,8 +40,6 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 271b50f7241504b49a6a7493d13721e7, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: f53257c6334f5224a8c3d192d5653d1c, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
- Class: 114
|
||||
@ -50,8 +52,6 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1a5913bec98c8024087f4dbe7b40ab1c, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
- Class: 114
|
||||
@ -104,23 +104,17 @@ SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Toggle/ToggleEvent
|
||||
Assets:
|
||||
- "Assets/Res/ui/loginPage/\u5BC6\u7801 (1) 1.png"
|
||||
- Assets/Res/ui/loginPage/Rectangle 135.png
|
||||
- Assets/Res/ui/loginPage/Frame 2 (1).png
|
||||
- Assets/Res/ui/loginPage/Rectangle 132 (1).png
|
||||
- "Assets/Res/ui/loginPage/\u9009\u62E9\u6846.png"
|
||||
- "Assets/Res/ui/loginPage/Check-small (\u6821\u9A8C-\u5C0F).png"
|
||||
- Assets/Res/ui/loginPage/Group 144.png
|
||||
- "Assets/Res/ui/loginPage/\u90AE\u7BB1-F 1.png"
|
||||
- Assets/Res/ui/loginPage/Group 143.png
|
||||
- "Assets/Res/ui/loginPage/\u9690\u79C1\u534F\u8BAE\u6846.png"
|
||||
- Assets/Res/ui/loginPage/Rectangle 148 (1).png
|
||||
- Assets/Res/ui/loginPage/Rectangle 132.png
|
||||
- Assets/Res/ui/loginPage/Rectangle 148.png
|
||||
- Assets/Res/ui/loginPage/loginPage.prefab
|
||||
- "Assets/Res/ui/loginPage/Close (\u5173\u95ED).png"
|
||||
- Assets/Res/ui/loginPage/bg.png
|
||||
- Assets/Res/ui/loginPage/Ellipse 32.png
|
||||
- Assets/Res/ui/loginPage/Rectangle 67.png
|
||||
- "Assets/Res/ui/loginpage/\u5BC6\u7801 (1) 1.png"
|
||||
- Assets/Res/ui/loginpage/Rectangle 135.png
|
||||
- Assets/Res/ui/loginpage/Frame 2 (1).png
|
||||
- Assets/Res/ui/loginpage/Rectangle 132 (1).png
|
||||
- Assets/Res/ui/loginpage/Group 144.png
|
||||
- "Assets/Res/ui/loginpage/\u90AE\u7BB1-F 1.png"
|
||||
- Assets/Res/ui/loginpage/Group 143.png
|
||||
- "Assets/Res/ui/loginpage/\u9690\u79C1\u534F\u8BAE\u6846.png"
|
||||
- Assets/Res/ui/loginpage/Rectangle 132.png
|
||||
- Assets/Res/ui/loginpage/loginPage.prefab
|
||||
- Assets/Res/ui/loginpage/bg.png
|
||||
- Assets/Res/ui/loginpage/Rectangle 67.png
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8d67207d165a11a41abac6e85483b748
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 65d66671e6ec89c46a4bd059254702a0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
AssetBundles/Android/ui_safetylearningpage.ab
Normal file
BIN
AssetBundles/Android/ui_safetylearningpage.ab
Normal file
Binary file not shown.
131
AssetBundles/Android/ui_safetylearningpage.ab.manifest
Normal file
131
AssetBundles/Android/ui_safetylearningpage.ab.manifest
Normal file
@ -0,0 +1,131 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 3023159928
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: e7d4b9173c45ea64a3cc42487ba61dea
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: b6d37feeab1eec1182d85292d55ae196
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: e7d4b9173c45ea64a3cc42487ba61dea
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
Script: {instanceID: 0}
|
||||
- Class: 21
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: e982ad7d1eca06640864d29509a997f8, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 15f5bd88ea349c4488f6e34e51cecd59, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 271b50f7241504b49a6a7493d13721e7, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 6153f65e187d768439e5be590953dfb1, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 7b6c36ccd2295994fa13a1cc24de7db4, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89cec4ea05849a04981cec13b33447ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fa3a4570827eff04fb79b0bdd622e953, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 50d2a45eec2b4a34e9aa449adf569f10, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 128
|
||||
Script: {instanceID: 0}
|
||||
- Class: 213
|
||||
Script: {instanceID: 0}
|
||||
- Class: 222
|
||||
Script: {instanceID: 0}
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
- Class: 328
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.ArgumentCache
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentListenerMode
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.RectOffset
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.EventSystems.EventTrigger/Entry
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.EventSystems.EventTrigger/TriggerEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Button/ButtonClickedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ColorBlock
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.FontData
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Navigation
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ScrollRect/ScrollRectEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Scrollbar/ScrollEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Slider/SliderEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- "Assets/Res/ui/safetylearningpage/\u666E\u901A\u80CC\u666F.png"
|
||||
- Assets/Res/ui/safetylearningpage/Group 152.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u9519\u8BEFicon.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u5168\u5C4F\u6846.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u64AD\u653E.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u9009\u4E2D.png"
|
||||
- Assets/Res/ui/safetylearningpage/Ellipse 29.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u6B63\u786E\u80CC\u666F.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u89E3\u6790.prefab"
|
||||
- Assets/Res/ui/safetylearningpage/Rectangle 165.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u95EE\u9898.prefab"
|
||||
- "Assets/Res/ui/safetylearningpage/\u5168\u5C4F\u56FE\u6807.png"
|
||||
- Assets/Res/ui/safetylearningpage/Group 146.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u64AD\u653E\u5668\u80CC\u666F.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u9898\u76EE.prefab"
|
||||
- "Assets/Res/ui/safetylearningpage/\u9519\u8BEF\u80CC\u666F.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u6B63\u786Eicon.png"
|
||||
- Assets/Res/ui/safetylearningpage/Rectangle 119.png
|
||||
- Assets/Res/ui/safetylearningpage/safetylearningPage.prefab
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
26
Assets/Editor/iOSPermissionPostProcessor.cs
Normal file
26
Assets/Editor/iOSPermissionPostProcessor.cs
Normal file
@ -0,0 +1,26 @@
|
||||
#if UNITY_IOS
|
||||
using UnityEditor;
|
||||
using UnityEditor.Callbacks;
|
||||
using UnityEditor.iOS.Xcode;
|
||||
using System.IO;
|
||||
|
||||
public class iOSPermissionPostProcessor
|
||||
{
|
||||
[PostProcessBuild]
|
||||
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
|
||||
{
|
||||
if (target != BuildTarget.iOS) return;
|
||||
|
||||
string plistPath = Path.Combine(pathToBuiltProject, "Info.plist");
|
||||
PlistDocument plist = new PlistDocument();
|
||||
plist.ReadFromString(File.ReadAllText(plistPath));
|
||||
|
||||
PlistElementDict rootDict = plist.root;
|
||||
|
||||
// 添加摄像头权限描述
|
||||
rootDict.SetString("NSCameraUsageDescription", "需要摄像头权限来扫描二维码连接设备");
|
||||
|
||||
File.WriteAllText(plistPath, plist.WriteToString());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
11
Assets/Editor/iOSPermissionPostProcessor.cs.meta
Normal file
11
Assets/Editor/iOSPermissionPostProcessor.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b1f4f56027df03044a3449ef64ca037e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
45
Assets/Editor/iOSWiFiBuildPostProcessor.cs
Normal file
45
Assets/Editor/iOSWiFiBuildPostProcessor.cs
Normal file
@ -0,0 +1,45 @@
|
||||
#if UNITY_IOS
|
||||
using UnityEditor;
|
||||
using UnityEditor.Callbacks;
|
||||
using UnityEditor.iOS.Xcode;
|
||||
using System.IO;
|
||||
|
||||
public class iOSWiFiBuildPostProcessor
|
||||
{
|
||||
[PostProcessBuild]
|
||||
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
|
||||
{
|
||||
if (target != BuildTarget.iOS) return;
|
||||
|
||||
string plistPath = Path.Combine(pathToBuiltProject, "Info.plist");
|
||||
PlistDocument plist = new PlistDocument();
|
||||
plist.ReadFromString(File.ReadAllText(plistPath));
|
||||
|
||||
PlistElementDict rootDict = plist.root;
|
||||
|
||||
// 添加位置权限描述(iOS 获取 WiFi 需要)
|
||||
rootDict.SetString("NSLocationWhenInUseUsageDescription", "需要位置权限来获取当前 WiFi 信息");
|
||||
|
||||
// 添加蓝牙权限描述
|
||||
rootDict.SetString("NSBluetoothAlwaysUsageDescription", "需要蓝牙权限来连接设备");
|
||||
rootDict.SetString("NSBluetoothPeripheralUsageDescription", "需要蓝牙权限来连接设备");
|
||||
|
||||
// 添加后台模式
|
||||
PlistElementArray bgModes = rootDict.CreateArray("UIBackgroundModes");
|
||||
bgModes.AddString("fetch");
|
||||
bgModes.AddString("bluetooth-central");
|
||||
|
||||
File.WriteAllText(plistPath, plist.WriteToString());
|
||||
|
||||
// 添加 CoreBluetooth.framework
|
||||
string projPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
|
||||
PBXProject proj = new PBXProject();
|
||||
proj.ReadFromString(File.ReadAllText(projPath));
|
||||
string targetGuid = proj.GetUnityMainTargetGuid();
|
||||
|
||||
proj.AddFrameworkToProject(targetGuid, "CoreBluetooth.framework", false);
|
||||
|
||||
File.WriteAllText(projPath, proj.WriteToString());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
11
Assets/Editor/iOSWiFiBuildPostProcessor.cs.meta
Normal file
11
Assets/Editor/iOSWiFiBuildPostProcessor.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ee71c8bd300d72e438892bbfe5e78bd5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -2,7 +2,23 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.photonmatrix.photonmatrix">
|
||||
<!-- 网络权限 -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<!-- 蓝牙权限 -->
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
||||
<!-- 相机权限 -->
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
<uses-feature android:name="android.hardware.camera" android:required="true" />
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
|
||||
<!-- Android 12+ 蓝牙权限 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<!-- 声明需要 BLE 功能 -->
|
||||
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
|
||||
<application android:label="@string/app_name" android:icon="@mipmap/app_icon" android:theme="@style/UnityThemeSelector">
|
||||
<!-- Unity 主 Activity -->
|
||||
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:configChanges="orientation|screenSize|smallestScreenSize|keyboardHidden|keyboard">
|
||||
|
||||
@ -316,7 +316,7 @@ public class BluetoothLEHardwareInterface
|
||||
if (!locationAsked)
|
||||
{
|
||||
Permission.RequestUserPermission("android.permission.ACCESS_FINE_LOCATION");
|
||||
locationAsked = false;
|
||||
locationAsked = true;
|
||||
timerValue = 2;
|
||||
}
|
||||
}
|
||||
@ -327,7 +327,7 @@ public class BluetoothLEHardwareInterface
|
||||
if (!connectAsked)
|
||||
{
|
||||
Permission.RequestUserPermission("android.permission.BLUETOOTH_CONNECT");
|
||||
connectAsked = false;
|
||||
connectAsked = true;
|
||||
timerValue = 2;
|
||||
}
|
||||
}
|
||||
|
||||
41
Assets/Plugins/iOS/BluetoothHelper.mm
Normal file
41
Assets/Plugins/iOS/BluetoothHelper.mm
Normal file
@ -0,0 +1,41 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreBluetooth/CoreBluetooth.h>
|
||||
|
||||
// 全局 CBCentralManager 用于检查蓝牙状态
|
||||
static CBCentralManager *centralManager = nil;
|
||||
|
||||
extern "C" {
|
||||
// 获取蓝牙状态
|
||||
// 0 = Unknown, 1 = Resetting, 2 = Unsupported, 3 = Unauthorized, 4 = PoweredOff, 5 = PoweredOn
|
||||
int GetBluetoothStateIOS() {
|
||||
if (centralManager == nil) {
|
||||
centralManager = [[CBCentralManager alloc] initWithDelegate:nil queue:nil options:@{CBCentralManagerOptionShowPowerAlertKey: @NO}];
|
||||
}
|
||||
|
||||
switch (centralManager.state) {
|
||||
case CBManagerStateUnknown:
|
||||
return 0;
|
||||
case CBManagerStateResetting:
|
||||
return 1;
|
||||
case CBManagerStateUnsupported:
|
||||
return 2;
|
||||
case CBManagerStateUnauthorized:
|
||||
return 3;
|
||||
case CBManagerStatePoweredOff:
|
||||
return 4;
|
||||
case CBManagerStatePoweredOn:
|
||||
return 5;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// 打开蓝牙设置页面
|
||||
void OpenBluetoothSettingsIOS() {
|
||||
// iOS 10+ 使用 UIApplicationOpenSettingsURLString
|
||||
NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
if ([[UIApplication sharedApplication] canOpenURL:settingsURL]) {
|
||||
[[UIApplication sharedApplication] openURL:settingsURL options:@{} completionHandler:nil];
|
||||
}
|
||||
}
|
||||
}
|
||||
33
Assets/Plugins/iOS/BluetoothHelper.mm.meta
Normal file
33
Assets/Plugins/iOS/BluetoothHelper.mm.meta
Normal file
@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b51f7ee4c32678a46a9b5a5441e0ab2f
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
AddToEmbeddedBinaries: false
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
29
Assets/Plugins/iOS/WiFiHelper.mm
Normal file
29
Assets/Plugins/iOS/WiFiHelper.mm
Normal file
@ -0,0 +1,29 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <SystemConfiguration/CaptiveNetwork.h>
|
||||
|
||||
extern "C" {
|
||||
const char* GetWiFiSSID() {
|
||||
NSString *ssid = nil;
|
||||
|
||||
NSArray *interfaces = (__bridge_transfer NSArray *)CNCopySupportedInterfaces();
|
||||
|
||||
for (NSString *interfaceName in interfaces) {
|
||||
NSDictionary *info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName);
|
||||
|
||||
if (info && info[@"SSID"]) {
|
||||
ssid = info[@"SSID"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ssid == nil) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *utf8String = [ssid UTF8String];
|
||||
char *result = (char *)malloc(strlen(utf8String) + 1);
|
||||
strcpy(result, utf8String);
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
33
Assets/Plugins/iOS/WiFiHelper.mm.meta
Normal file
33
Assets/Plugins/iOS/WiFiHelper.mm.meta
Normal file
@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 68b45a04bd851304e81662754e08006f
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
AddToEmbeddedBinaries: false
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Plugins/net2.0.meta
Normal file
8
Assets/Plugins/net2.0.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a788d68a8e802da41853b21948565145
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
14560
Assets/Plugins/net2.0/zxing.XML
Normal file
14560
Assets/Plugins/net2.0/zxing.XML
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 683775f18ffad45489f18e47e92d3b3f
|
||||
guid: 194b916ca7a1a744ea8a07bd61dcf461
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
BIN
Assets/Plugins/net2.0/zxing.dll
Normal file
BIN
Assets/Plugins/net2.0/zxing.dll
Normal file
Binary file not shown.
33
Assets/Plugins/net2.0/zxing.dll.meta
Normal file
33
Assets/Plugins/net2.0/zxing.dll.meta
Normal file
@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 663300484feb96d438e2f609415c49b9
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Windows Store Apps: WindowsStoreApps
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -398,6 +398,41 @@
|
||||
"key": "100080",
|
||||
"zh": "定时设置",
|
||||
"en": "Timer Settings"
|
||||
},
|
||||
{
|
||||
"key": "100081",
|
||||
"zh": "蓝牙未连接",
|
||||
"en": "Bluetooth not connected"
|
||||
},
|
||||
{
|
||||
"key": "100082",
|
||||
"zh": "请输入WiFi名称",
|
||||
"en": "Please enter the WiFi name"
|
||||
},
|
||||
{
|
||||
"key": "100083",
|
||||
"zh": "WiFi配置失败",
|
||||
"en": "WiFi configuration failed"
|
||||
},
|
||||
{
|
||||
"key": "100084",
|
||||
"zh": "不是可解析的二维码",
|
||||
"en": "Not a valid QR code"
|
||||
},
|
||||
{
|
||||
"key": "100085",
|
||||
"zh": "需要相机权限",
|
||||
"en": "Camera permission required"
|
||||
},
|
||||
{
|
||||
"key": "100086",
|
||||
"zh": "没有可用的相机",
|
||||
"en": "No available camera found"
|
||||
},
|
||||
{
|
||||
"key": "100087",
|
||||
"zh": "绑定设备失败",
|
||||
"en": "Bind device failed"
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
@ -435,7 +435,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 22.499966, y: 0}
|
||||
m_AnchoredPosition: {x: 22.49997, y: 0}
|
||||
m_SizeDelta: {x: -224.99992, y: -50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5023175048173340824
|
||||
@ -643,7 +643,7 @@ GameObject:
|
||||
- component: {fileID: 8699770605319373498}
|
||||
- component: {fileID: 3146394913032290597}
|
||||
m_Layer: 5
|
||||
m_Name: "\u8FD4\u56DE"
|
||||
m_Name: ok
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@ -750,7 +750,19 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 8699770605319373498}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: BackToHomePage
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!1 &988057154901937007
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1251,10 +1263,10 @@ RectTransform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5409940142953436106}
|
||||
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: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 79, y: -24}
|
||||
m_SizeDelta: {x: 48, y: 48}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3344092125837105518
|
||||
CanvasRenderer:
|
||||
@ -1428,7 +1440,19 @@ MonoBehaviour:
|
||||
m_Calls: []
|
||||
m_OnDidEndEdit:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: CheckWifiNameAndPassword
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@ -1574,7 +1598,19 @@ MonoBehaviour:
|
||||
m_Calls: []
|
||||
m_OnDidEndEdit:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: CheckWifiNameAndPassword
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@ -1619,10 +1655,10 @@ RectTransform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 5409940142953436106}
|
||||
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: 0, y: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 257.5, y: -24}
|
||||
m_SizeDelta: {x: 253, y: 33}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4250911166335314589
|
||||
CanvasRenderer:
|
||||
@ -1792,8 +1828,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 352.17856, y: -0.5}
|
||||
m_SizeDelta: {x: 654.3571, y: 1}
|
||||
m_AnchoredPosition: {x: 345, y: -0.5}
|
||||
m_SizeDelta: {x: 640, y: 1}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3091012864071486640
|
||||
CanvasRenderer:
|
||||
@ -1872,7 +1908,7 @@ RectTransform:
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 41}
|
||||
m_SizeDelta: {x: 0, y: 181}
|
||||
m_Pivot: {x: 0.5, y: 1}
|
||||
--- !u!222 &3494079613403270933
|
||||
CanvasRenderer:
|
||||
@ -2147,7 +2183,19 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 6325069307507327003}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: ShowSuccessPage
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!1 &2513300336666857560
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2401,7 +2449,8 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 7163027539311665957}
|
||||
- component: {fileID: 3037912135858668214}
|
||||
- component: {fileID: 6233728829341084841}
|
||||
- component: {fileID: 7322899035469920849}
|
||||
- component: {fileID: 595539671003003557}
|
||||
m_Layer: 5
|
||||
m_Name: Image
|
||||
m_TagString: Untagged
|
||||
@ -2436,7 +2485,7 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2945323903071304015}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6233728829341084841
|
||||
--- !u!114 &7322899035469920849
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -2445,7 +2494,7 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 2945323903071304015}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
@ -2456,16 +2505,27 @@ MonoBehaviour:
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
m_Texture: {fileID: 0}
|
||||
m_UVRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
--- !u!114 &595539671003003557
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2945323903071304015}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2f6d707cba0376a43bc6d9f0a27ea376, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
cameraPreview: {fileID: 7322899035469920849}
|
||||
scanInterval: 0.2
|
||||
--- !u!1 &3002205030434408749
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2587,9 +2647,9 @@ MonoBehaviour:
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 0}
|
||||
m_TargetAssemblyTypeName: Kill.UI.Pages.SafetylearningPageCtrl, Assembly-CSharp
|
||||
m_MethodName: ShowTestPage
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: OnWifiConfirmClick
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
@ -2910,6 +2970,7 @@ GameObject:
|
||||
- component: {fileID: 8470092863222596142}
|
||||
- component: {fileID: 2618585265216864651}
|
||||
- component: {fileID: 7563423994747515918}
|
||||
- component: {fileID: 7594996219059569243}
|
||||
m_Layer: 5
|
||||
m_Name: connectDevicePage
|
||||
m_TagString: Untagged
|
||||
@ -2979,6 +3040,39 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &7594996219059569243
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3618082575114099407}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cc4db0165ab541a44978ccde28b3bc29, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
sonPages:
|
||||
- {fileID: 8658000908082698746}
|
||||
- {fileID: 1611181877072402757}
|
||||
- {fileID: 3437907824073216706}
|
||||
- {fileID: 6686558202161898212}
|
||||
topBar: {fileID: 7798396753565683054}
|
||||
blueToothNameKeyWord: Photon
|
||||
backButton: {fileID: 1397406542994158436}
|
||||
skipButton: {fileID: 3347539392583723740}
|
||||
titleText: {fileID: 1585603659324209016}
|
||||
scanningIcon: {fileID: 8864897383993974507}
|
||||
qrCodePlane: {fileID: 2945323903071304015}
|
||||
wifiNameInput: {fileID: 5119858561715144003}
|
||||
wifiPasswordInput: {fileID: 2039610925894288914}
|
||||
wifiConfirmButtons:
|
||||
- {fileID: 5767282775733738409}
|
||||
- {fileID: 3002205030434408749}
|
||||
deviceObjects: []
|
||||
deviceListParent: {fileID: 2145748678941116742}
|
||||
devicePrefab: {fileID: 9109268087238204734}
|
||||
deviceListUi: {fileID: 7833149656934373945}
|
||||
--- !u!1 &3773169203690086790
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -3099,7 +3193,19 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 8153291896281977173}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: EnterConnectPage
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!1 &3789234655480925417
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -3740,7 +3846,7 @@ GameObject:
|
||||
- component: {fileID: 7745107914549048796}
|
||||
- component: {fileID: 4608673497435011388}
|
||||
m_Layer: 5
|
||||
m_Name: icon
|
||||
m_Name: "\u72B6\u6001"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@ -5876,7 +5982,19 @@ MonoBehaviour:
|
||||
m_TargetGraphic: {fileID: 2130092054336787548}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 7594996219059569243}
|
||||
m_TargetAssemblyTypeName: ConnectDevicePageCtrl, Assembly-CSharp
|
||||
m_MethodName: ScanQrCode
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!1 &7583618795190144410
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6226,13 +6344,14 @@ GameObject:
|
||||
- component: {fileID: 6427568242623183702}
|
||||
- component: {fileID: 4926338476861759006}
|
||||
- component: {fileID: 3397136473555053414}
|
||||
- component: {fileID: 1099820396088858073}
|
||||
m_Layer: 5
|
||||
m_Name: "\u84DD\u7259\u626B\u63CF\u5217\u8868"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6427568242623183702
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6291,6 +6410,36 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &1099820396088858073
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7833149656934373945}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Content: {fileID: 1027440964492730408}
|
||||
m_Horizontal: 0
|
||||
m_Vertical: 1
|
||||
m_MovementType: 1
|
||||
m_Elasticity: 0.1
|
||||
m_Inertia: 1
|
||||
m_DecelerationRate: 0.135
|
||||
m_ScrollSensitivity: 1
|
||||
m_Viewport: {fileID: 6427568242623183702}
|
||||
m_HorizontalScrollbar: {fileID: 0}
|
||||
m_VerticalScrollbar: {fileID: 0}
|
||||
m_HorizontalScrollbarVisibility: 0
|
||||
m_VerticalScrollbarVisibility: 0
|
||||
m_HorizontalScrollbarSpacing: 0
|
||||
m_VerticalScrollbarSpacing: 0
|
||||
m_OnValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &7872054224272033343
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6637,7 +6786,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &6952404845597796920
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6696,7 +6845,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
m_AnchoredPosition: {x: -48.999985, y: 0}
|
||||
m_AnchoredPosition: {x: -49, y: 0}
|
||||
m_SizeDelta: {x: 48, y: 48}
|
||||
m_Pivot: {x: 1, y: 0.5}
|
||||
--- !u!222 &3914966073945110401
|
||||
@ -6971,7 +7120,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &626860580578846986
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6991,8 +7140,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 352.17856, y: -91}
|
||||
m_SizeDelta: {x: 654.3571, y: 100}
|
||||
m_AnchoredPosition: {x: 345, y: -91}
|
||||
m_SizeDelta: {x: 640, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6890668240902078438
|
||||
CanvasRenderer:
|
||||
|
||||
BIN
Assets/Res/ui/homepage/3.3待机状态(产品图为亮屏状态,区分关机状态;设备实际为息屏) 1.png
Normal file
BIN
Assets/Res/ui/homepage/3.3待机状态(产品图为亮屏状态,区分关机状态;设备实际为息屏) 1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
@ -0,0 +1,127 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d8f2f6e443f107242b048e8eae4700eb
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Res/ui/homepage/网格 2.png
Normal file
BIN
Assets/Res/ui/homepage/网格 2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 125 KiB |
127
Assets/Res/ui/homepage/网格 2.png.meta
Normal file
127
Assets/Res/ui/homepage/网格 2.png.meta
Normal file
@ -0,0 +1,127 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd5678c2d7d53a049add20e7f6e34f3d
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -338,6 +338,8 @@ GameObject:
|
||||
- component: {fileID: 609900190}
|
||||
- component: {fileID: 609900193}
|
||||
- component: {fileID: 609900192}
|
||||
- component: {fileID: 609900195}
|
||||
- component: {fileID: 609900194}
|
||||
m_Layer: 0
|
||||
m_Name: Manager
|
||||
m_TagString: Untagged
|
||||
@ -454,6 +456,37 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: ab2938f4ffde3874dac6f3504af213b1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &609900194
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 609900186}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 91bf0ca06c32c924c82e026dbb6f2ad7, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
AutoConnect: 0
|
||||
ConnectionTimeout: 5
|
||||
--- !u!114 &609900195
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 609900186}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 988c4ecb3723c08459756ef8e35db200, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
ResponseTimeout: 5
|
||||
ServiceUUID: 0000ffe0-0000-1000-8000-00805f9b34fb
|
||||
WriteCharacteristicUUID: 0000ffe1-0000-1000-8000-00805f9b34fb
|
||||
NotifyCharacteristicUUID: 0000ffe1-0000-1000-8000-00805f9b34fb
|
||||
AutoInitialize: 1
|
||||
--- !u!1 &769989590
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1053,8 +1086,7 @@ RectTransform:
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 700841237938974310}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1547547273}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
@ -1160,200 +1192,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1996378183}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1001 &700841237938974309
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 1896827481}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1397406542994158436, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
|
||||
value:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3618082575114099407, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: connectDevicePage
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3618082575114099407, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5022358398572850883, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5022358398572850883, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5022358398572850883, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 253
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5022358398572850883, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 33
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5022358398572850883, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 257.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5022358398572850883, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -24
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8438725810015241756, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8438725810015241756, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8438725810015241756, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 48
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8438725810015241756, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 48
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8438725810015241756, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 79
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8438725810015241756, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -24
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 7bbd7ee77d6885a448f5da2020aad6d7, type: 3}
|
||||
--- !u!224 &700841237938974310 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 8470092863222596142, guid: 7bbd7ee77d6885a448f5da2020aad6d7,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 700841237938974309}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@ -2,6 +2,7 @@ using UnityEngine;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Kill.Bluetooth.Protocol;
|
||||
using Kill.UI.Components;
|
||||
|
||||
namespace Kill.Bluetooth
|
||||
{
|
||||
@ -256,7 +257,7 @@ namespace Kill.Bluetooth
|
||||
/// <summary>
|
||||
/// 查询设备注册状态 (命令 0x01)
|
||||
/// </summary>
|
||||
public void QueryRegistrationStatus(Action<DeviceRegistrationStatus> callback = null)
|
||||
public void QueryRegistrationStatus(Action<bool,DeviceRegistrationStatus> callback = null)
|
||||
{
|
||||
if (!CheckConnection()) return;
|
||||
|
||||
@ -276,13 +277,13 @@ namespace Kill.Bluetooth
|
||||
if (response.IsSuccess && response.Data != null)
|
||||
{
|
||||
var status = DeviceRegistrationStatus.FromBytes(response.Data);
|
||||
callback?.Invoke(status);
|
||||
callback?.Invoke(true,status);
|
||||
OnRegistrationStatusReceived?.Invoke(status);
|
||||
}
|
||||
else
|
||||
{
|
||||
LogError($"查询注册状态失败: 状态码={response.Status:X2}");
|
||||
callback?.Invoke(new DeviceRegistrationStatus());
|
||||
callback?.Invoke(false,new DeviceRegistrationStatus());
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -2309,17 +2310,91 @@ namespace Kill.Bluetooth
|
||||
#region 辅助方法
|
||||
|
||||
/// <summary>
|
||||
/// 检查蓝牙连接状态
|
||||
/// 检查蓝牙连接状态(带自动初始化)
|
||||
/// </summary>
|
||||
private bool CheckConnection()
|
||||
{
|
||||
if (BluetoothManager.Instance == null) return false;
|
||||
if (!BluetoothManager.Instance.IsConnected) return false;
|
||||
if (IsWaitingResponse) return false;
|
||||
// 检查蓝牙管理器
|
||||
if (BluetoothManager.Instance == null)
|
||||
{
|
||||
LogError("BluetoothManager.Instance 为 null");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 如果蓝牙未初始化,尝试自动初始化
|
||||
if (!BluetoothManager.Instance.IsInitialized)
|
||||
{
|
||||
Log("蓝牙未初始化,尝试自动初始化...");
|
||||
BluetoothManager.Instance.Initialize();
|
||||
return false;
|
||||
}
|
||||
|
||||
// 如果蓝牙未连接
|
||||
if (!BluetoothManager.Instance.IsConnected)
|
||||
{
|
||||
LogError("蓝牙未连接");
|
||||
ToastUI.Show("100081"); // "请先连接蓝牙设备"
|
||||
return false;
|
||||
}
|
||||
|
||||
// 如果正在等待响应
|
||||
if (IsWaitingResponse)
|
||||
{
|
||||
Log("正在等待上一个响应...");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确保蓝牙已初始化并连接(异步)
|
||||
/// </summary>
|
||||
public void EnsureBluetoothReady(System.Action onReady)
|
||||
{
|
||||
if (BluetoothManager.Instance == null)
|
||||
{
|
||||
LogError("BluetoothManager.Instance 为 null");
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果已经连接,直接回调
|
||||
if (BluetoothManager.Instance.IsConnected)
|
||||
{
|
||||
onReady?.Invoke();
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果未初始化,先初始化
|
||||
if (!BluetoothManager.Instance.IsInitialized)
|
||||
{
|
||||
Log("蓝牙未初始化,开始初始化...");
|
||||
BluetoothManager.Instance.Initialize();
|
||||
|
||||
// 订阅初始化完成事件
|
||||
System.Action<bool> onInitialized = null;
|
||||
onInitialized = (success) =>
|
||||
{
|
||||
BluetoothManager.Instance.OnInitialized -= onInitialized;
|
||||
if (success)
|
||||
{
|
||||
Log("蓝牙初始化成功,可以开始扫描设备");
|
||||
onReady?.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
LogError("蓝牙初始化失败");
|
||||
}
|
||||
};
|
||||
BluetoothManager.Instance.OnInitialized += onInitialized;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 已初始化但未连接
|
||||
onReady?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取状态码描述
|
||||
/// </summary>
|
||||
|
||||
@ -45,14 +45,10 @@ namespace Kill.Bluetooth
|
||||
public bool IsScanning { get; private set; }
|
||||
public bool IsConnected { get; private set; }
|
||||
public string ConnectedDeviceAddress { get; private set; }
|
||||
|
||||
private string aimMac = "";
|
||||
// 扫描到的设备列表
|
||||
public List<BluetoothDevice> DiscoveredDevices { get; private set; } = new List<BluetoothDevice>();
|
||||
|
||||
// 上一次连接的设备地址
|
||||
private const string LAST_DEVICE_ADDRESS_KEY = "LastConnectedDeviceAddress";
|
||||
private const string LAST_DEVICE_NAME_KEY = "LastConnectedDeviceName";
|
||||
|
||||
// 是否自动连接
|
||||
public bool AutoConnect = true;
|
||||
|
||||
@ -82,7 +78,10 @@ namespace Kill.Bluetooth
|
||||
Instance = null;
|
||||
}
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
// 检查连接超时
|
||||
@ -102,7 +101,7 @@ namespace Kill.Bluetooth
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化蓝牙
|
||||
/// 初始化蓝牙(带自动启用)
|
||||
/// </summary>
|
||||
public void Initialize()
|
||||
{
|
||||
@ -115,20 +114,228 @@ namespace Kill.Bluetooth
|
||||
|
||||
Log("正在初始化蓝牙...");
|
||||
|
||||
// 先检查蓝牙是否开启,如果没有则尝试启用
|
||||
CheckAndEnableBluetooth(() =>
|
||||
{
|
||||
// 蓝牙已启用,执行初始化
|
||||
DoInitialize();
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查并启用蓝牙
|
||||
/// </summary>
|
||||
private void CheckAndEnableBluetooth(System.Action onBluetoothReady)
|
||||
{
|
||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
||||
using (AndroidJavaClass bluetoothAdapterClass = new AndroidJavaClass("android.bluetooth.BluetoothAdapter"))
|
||||
{
|
||||
AndroidJavaObject bluetoothAdapter = bluetoothAdapterClass.CallStatic<AndroidJavaObject>("getDefaultAdapter");
|
||||
|
||||
if (bluetoothAdapter == null)
|
||||
{
|
||||
OnError?.Invoke("设备不支持蓝牙");
|
||||
OnInitialized?.Invoke(false);
|
||||
return;
|
||||
}
|
||||
|
||||
bool isEnabled = bluetoothAdapter.Call<bool>("isEnabled");
|
||||
|
||||
if (!isEnabled)
|
||||
{
|
||||
Log("蓝牙未开启,尝试启用...");
|
||||
|
||||
// 尝试静默启用蓝牙
|
||||
bool enableSuccess = bluetoothAdapter.Call<bool>("enable");
|
||||
|
||||
if (enableSuccess)
|
||||
{
|
||||
Log("正在启用蓝牙,等待...");
|
||||
// 等待蓝牙启用
|
||||
StartCoroutine(WaitForBluetoothEnabled(onBluetoothReady));
|
||||
}
|
||||
else
|
||||
{
|
||||
// 静默启用失败,请求用户启用
|
||||
RequestUserEnableBluetooth(onBluetoothReady);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Log("蓝牙已开启");
|
||||
onBluetoothReady?.Invoke();
|
||||
}
|
||||
}
|
||||
#elif UNITY_IOS && !UNITY_EDITOR
|
||||
// iOS 检查蓝牙状态
|
||||
CheckBluetoothStateIOS(onBluetoothReady);
|
||||
#else
|
||||
// 其他平台直接执行初始化
|
||||
onBluetoothReady?.Invoke();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if UNITY_IOS && !UNITY_EDITOR
|
||||
[System.Runtime.InteropServices.DllImport("__Internal")]
|
||||
private static extern int GetBluetoothStateIOS();
|
||||
|
||||
[System.Runtime.InteropServices.DllImport("__Internal")]
|
||||
private static extern void OpenBluetoothSettingsIOS();
|
||||
|
||||
/// <summary>
|
||||
/// iOS 检查蓝牙状态
|
||||
/// 0 = Unknown, 1 = Resetting, 2 = Unsupported, 3 = Unauthorized, 4 = PoweredOff, 5 = PoweredOn
|
||||
/// </summary>
|
||||
private void CheckBluetoothStateIOS(System.Action onBluetoothReady)
|
||||
{
|
||||
int state = GetBluetoothStateIOS();
|
||||
Log($"iOS 蓝牙状态: {state}");
|
||||
|
||||
// 5 = PoweredOn (蓝牙已开启)
|
||||
if (state == 5)
|
||||
{
|
||||
Log("iOS 蓝牙已开启");
|
||||
onBluetoothReady?.Invoke();
|
||||
}
|
||||
// 4 = PoweredOff (蓝牙关闭)
|
||||
else if (state == 4)
|
||||
{
|
||||
Log("iOS 蓝牙未开启,提示用户");
|
||||
// iOS 不能自动打开蓝牙,只能提示用户去设置中开启
|
||||
ShowIOSTurnOnBluetoothPrompt();
|
||||
OnError?.Invoke("请在系统设置中开启蓝牙");
|
||||
OnInitialized?.Invoke(false);
|
||||
}
|
||||
// 3 = Unauthorized (未授权)
|
||||
else if (state == 3)
|
||||
{
|
||||
LogError("iOS 蓝牙未授权");
|
||||
OnError?.Invoke("请在设置中允许使用蓝牙");
|
||||
OnInitialized?.Invoke(false);
|
||||
}
|
||||
// 2 = Unsupported (不支持蓝牙)
|
||||
else if (state == 2)
|
||||
{
|
||||
LogError("设备不支持蓝牙");
|
||||
OnError?.Invoke("设备不支持蓝牙");
|
||||
OnInitialized?.Invoke(false);
|
||||
}
|
||||
// 其他状态
|
||||
else
|
||||
{
|
||||
Log($"iOS 蓝牙状态未知: {state},尝试继续初始化");
|
||||
onBluetoothReady?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示 iOS 开启蓝牙提示
|
||||
/// </summary>
|
||||
private void ShowIOSTurnOnBluetoothPrompt()
|
||||
{
|
||||
// 可以在这里显示一个弹窗,引导用户去设置
|
||||
// 或者使用原生插件跳转到设置页面
|
||||
OpenBluetoothSettingsIOS();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
||||
/// <summary>
|
||||
/// 等待蓝牙启用
|
||||
/// </summary>
|
||||
private System.Collections.IEnumerator WaitForBluetoothEnabled(System.Action onBluetoothReady)
|
||||
{
|
||||
float timeout = 5f;
|
||||
float timer = 0f;
|
||||
|
||||
while (timer < timeout)
|
||||
{
|
||||
using (AndroidJavaClass bluetoothAdapterClass = new AndroidJavaClass("android.bluetooth.BluetoothAdapter"))
|
||||
{
|
||||
AndroidJavaObject bluetoothAdapter = bluetoothAdapterClass.CallStatic<AndroidJavaObject>("getDefaultAdapter");
|
||||
if (bluetoothAdapter != null && bluetoothAdapter.Call<bool>("isEnabled"))
|
||||
{
|
||||
Log("蓝牙已成功启用");
|
||||
onBluetoothReady?.Invoke();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
timer += 0.5f;
|
||||
}
|
||||
|
||||
Log("等待蓝牙启用超时");
|
||||
OnError?.Invoke("蓝牙启用超时");
|
||||
OnInitialized?.Invoke(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 请求用户启用蓝牙
|
||||
/// </summary>
|
||||
private void RequestUserEnableBluetooth(System.Action onBluetoothReady)
|
||||
{
|
||||
Log("请求用户启用蓝牙...");
|
||||
|
||||
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||||
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
|
||||
{
|
||||
AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "android.bluetooth.adapter.action.REQUEST_ENABLE");
|
||||
currentActivity.Call("startActivityForResult", intent, 1);
|
||||
}
|
||||
|
||||
// 等待用户响应
|
||||
StartCoroutine(WaitForUserEnableBluetooth(onBluetoothReady));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 等待用户启用蓝牙
|
||||
/// </summary>
|
||||
private System.Collections.IEnumerator WaitForUserEnableBluetooth(System.Action onBluetoothReady)
|
||||
{
|
||||
float timeout = 30f;
|
||||
float timer = 0f;
|
||||
|
||||
while (timer < timeout)
|
||||
{
|
||||
using (AndroidJavaClass bluetoothAdapterClass = new AndroidJavaClass("android.bluetooth.BluetoothAdapter"))
|
||||
{
|
||||
AndroidJavaObject bluetoothAdapter = bluetoothAdapterClass.CallStatic<AndroidJavaObject>("getDefaultAdapter");
|
||||
if (bluetoothAdapter != null && bluetoothAdapter.Call<bool>("isEnabled"))
|
||||
{
|
||||
Log("用户已启用蓝牙");
|
||||
onBluetoothReady?.Invoke();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
timer += 0.5f;
|
||||
}
|
||||
|
||||
Log("用户未启用蓝牙或超时");
|
||||
OnError?.Invoke("请启用蓝牙后重试");
|
||||
OnInitialized?.Invoke(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// 执行蓝牙初始化
|
||||
/// </summary>
|
||||
// 标记是否已完成初始化
|
||||
private bool _isFullyInitialized = false;
|
||||
|
||||
private void DoInitialize()
|
||||
{
|
||||
_isFullyInitialized = false;
|
||||
|
||||
BluetoothLEHardwareInterface.Initialize(true, false,
|
||||
() =>
|
||||
{
|
||||
IsInitialized = true;
|
||||
_isFullyInitialized = true;
|
||||
Log("蓝牙初始化成功");
|
||||
OnInitialized?.Invoke(true);
|
||||
|
||||
// 初始化成功后,延迟尝试自动连接上一次设备
|
||||
// 延迟是为了让用户有机会先进行手动扫描
|
||||
if (AutoConnect)
|
||||
{
|
||||
Log("将在3秒后尝试自动连接上一次设备...");
|
||||
Invoke(nameof(TryAutoConnectDelayed), 3f);
|
||||
}
|
||||
},
|
||||
(error) =>
|
||||
{
|
||||
@ -138,14 +345,14 @@ namespace Kill.Bluetooth
|
||||
Log($"蓝牙初始化警告: {error}");
|
||||
Log("继续初始化...");
|
||||
IsInitialized = true;
|
||||
_isFullyInitialized = true;
|
||||
OnInitialized?.Invoke(true);
|
||||
|
||||
// 初始化成功后,延迟尝试自动连接上一次设备
|
||||
if (AutoConnect)
|
||||
{
|
||||
Log("将在3秒后尝试自动连接上一次设备...");
|
||||
Invoke(nameof(TryAutoConnectDelayed), 3f);
|
||||
}
|
||||
}
|
||||
// 如果已经初始化完成,这是运行时错误,不是初始化错误
|
||||
else if (_isFullyInitialized)
|
||||
{
|
||||
Log($"蓝牙运行时错误: {error}");
|
||||
OnError?.Invoke(error);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -153,44 +360,45 @@ namespace Kill.Bluetooth
|
||||
OnError?.Invoke($"初始化失败: {error}");
|
||||
OnInitialized?.Invoke(false);
|
||||
}
|
||||
}
|
||||
},
|
||||
needLocation: true
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 延迟尝试自动连接(用于初始化后)
|
||||
/// </summary>
|
||||
private void TryAutoConnectDelayed()
|
||||
{
|
||||
// 如果用户已经开始扫描或连接,跳过自动连接
|
||||
if (IsScanning || IsConnected || _isConnecting)
|
||||
{
|
||||
Log("用户正在进行扫描或连接,跳过自动连接");
|
||||
return;
|
||||
}
|
||||
// /// <summary>
|
||||
// /// 延迟尝试自动连接(用于初始化后)
|
||||
// /// </summary>
|
||||
// private void TryAutoConnectDelayed()
|
||||
// {
|
||||
// // 如果用户已经开始扫描或连接,跳过自动连接
|
||||
// if (IsScanning || IsConnected || _isConnecting)
|
||||
// {
|
||||
// Log("用户正在进行扫描或连接,跳过自动连接");
|
||||
// return;
|
||||
// }
|
||||
|
||||
TryAutoConnect();
|
||||
}
|
||||
// TryAutoConnect();
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// 尝试自动连接上一次连接的设备
|
||||
/// </summary>
|
||||
private void TryAutoConnect()
|
||||
{
|
||||
string lastAddress = PlayerPrefs.GetString(LAST_DEVICE_ADDRESS_KEY, "");
|
||||
string lastName = PlayerPrefs.GetString(LAST_DEVICE_NAME_KEY, "");
|
||||
// /// <summary>
|
||||
// /// 尝试自动连接上一次连接的设备
|
||||
// /// </summary>
|
||||
// private void TryAutoConnect()
|
||||
// {
|
||||
// string lastAddress = PlayerPrefs.GetString(LAST_DEVICE_ADDRESS_KEY, "");
|
||||
// string lastName = PlayerPrefs.GetString(LAST_DEVICE_NAME_KEY, "");
|
||||
|
||||
if (string.IsNullOrEmpty(lastAddress))
|
||||
{
|
||||
Log("没有上一次连接的设备记录");
|
||||
return;
|
||||
}
|
||||
// if (string.IsNullOrEmpty(lastAddress))
|
||||
// {
|
||||
// Log("没有上一次连接的设备记录");
|
||||
// return;
|
||||
// }
|
||||
|
||||
Log($"尝试自动连接上一次设备: {lastName} [{lastAddress}]");
|
||||
// Log($"尝试自动连接上一次设备: {lastName} [{lastAddress}]");
|
||||
|
||||
// 先扫描设备,找到后再连接
|
||||
StartScanForAutoConnect(lastAddress);
|
||||
}
|
||||
// // 先扫描设备,找到后再连接
|
||||
// StartScanForAutoConnect(lastAddress);
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// 为自动连接扫描设备
|
||||
@ -263,29 +471,9 @@ namespace Kill.Bluetooth
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存连接的设备信息
|
||||
/// </summary>
|
||||
private void SaveLastConnectedDevice(string address, string name)
|
||||
{
|
||||
// 统一使用大写格式保存,确保地址格式一致
|
||||
string normalizedAddress = address.ToUpper();
|
||||
PlayerPrefs.SetString(LAST_DEVICE_ADDRESS_KEY, normalizedAddress);
|
||||
PlayerPrefs.SetString(LAST_DEVICE_NAME_KEY, name);
|
||||
PlayerPrefs.Save();
|
||||
Log($"保存设备连接记录: {name} [{normalizedAddress}]");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 清除设备连接记录
|
||||
/// </summary>
|
||||
public void ClearLastConnectedDevice()
|
||||
{
|
||||
PlayerPrefs.DeleteKey(LAST_DEVICE_ADDRESS_KEY);
|
||||
PlayerPrefs.DeleteKey(LAST_DEVICE_NAME_KEY);
|
||||
PlayerPrefs.Save();
|
||||
Log("清除设备连接记录");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 开始扫描蓝牙设备
|
||||
@ -299,9 +487,6 @@ namespace Kill.Bluetooth
|
||||
return;
|
||||
}
|
||||
|
||||
// 取消自动连接,避免干扰手动扫描
|
||||
CancelInvoke(nameof(TryAutoConnectDelayed));
|
||||
|
||||
if (IsScanning)
|
||||
{
|
||||
Log("已经在扫描中,先停止当前扫描...");
|
||||
@ -380,7 +565,6 @@ namespace Kill.Bluetooth
|
||||
// 取消所有扫描相关的Invoke
|
||||
CancelInvoke(nameof(StopScan));
|
||||
CancelInvoke(nameof(DelayedStartScan));
|
||||
CancelInvoke(nameof(TryAutoConnectDelayed));
|
||||
|
||||
BluetoothLEHardwareInterface.StopScan();
|
||||
Log("停止扫描蓝牙设备");
|
||||
@ -449,7 +633,7 @@ namespace Kill.Bluetooth
|
||||
// 保存连接的设备信息
|
||||
var device = DiscoveredDevices.Find(d => d.Address.ToUpper() == address.ToUpper());
|
||||
string deviceName = device != null ? device.Name : "Unknown";
|
||||
SaveLastConnectedDevice(address, deviceName);
|
||||
//SaveLastConnectedDevice(address, deviceName);
|
||||
|
||||
OnConnected?.Invoke(address);
|
||||
|
||||
@ -592,7 +776,6 @@ namespace Kill.Bluetooth
|
||||
// 取消可能冲突的Invoke
|
||||
CancelInvoke(nameof(StopScan));
|
||||
CancelInvoke(nameof(DelayedStartScan));
|
||||
CancelInvoke(nameof(TryAutoConnectDelayed));
|
||||
|
||||
// 清理设备列表,为下次扫描做准备
|
||||
DiscoveredDevices.Clear();
|
||||
@ -608,10 +791,6 @@ namespace Kill.Bluetooth
|
||||
{
|
||||
Log("开始完全重置蓝牙...");
|
||||
|
||||
// 保存上一次连接的设备信息
|
||||
string lastAddress = PlayerPrefs.GetString(LAST_DEVICE_ADDRESS_KEY, "");
|
||||
string lastName = PlayerPrefs.GetString(LAST_DEVICE_NAME_KEY, "");
|
||||
|
||||
// 停止扫描
|
||||
if (IsScanning)
|
||||
{
|
||||
@ -748,6 +927,10 @@ namespace Kill.Bluetooth
|
||||
var newDevice = new BluetoothDevice(address, name, rssi);
|
||||
DiscoveredDevices.Add(newDevice);
|
||||
Log($"发现新设备: {name} [{address}] RSSI: {rssi}");
|
||||
if (aimMac.ToUpper() == address.ToUpper())
|
||||
{
|
||||
Connect(address);
|
||||
}
|
||||
OnDeviceFound?.Invoke(newDevice);
|
||||
}
|
||||
}
|
||||
@ -769,5 +952,19 @@ namespace Kill.Bluetooth
|
||||
Log("蓝牙连接已就绪,可以开始通信");
|
||||
OnConnectedSuccess?.Invoke();
|
||||
}
|
||||
|
||||
public void ChangeAimMac(string mac)
|
||||
{
|
||||
aimMac = mac;
|
||||
if (IsConnected&& mac.ToUpper() != ConnectedDeviceAddress.ToUpper())
|
||||
{
|
||||
Disconnect();
|
||||
StartScan();
|
||||
}
|
||||
else
|
||||
{
|
||||
StartScan();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,5 +214,11 @@ namespace Kill.Managers
|
||||
public int totalAnsweredCount; // 总答题序号(累加)
|
||||
}
|
||||
#endregion
|
||||
[Serializable]
|
||||
public class BandDeviceRequest
|
||||
{
|
||||
public string device_sn;
|
||||
public string user_id;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ namespace Kill.Managers
|
||||
PlayerPrefs.DeleteKey("token");
|
||||
PlayerPrefs.DeleteKey("userData");
|
||||
}
|
||||
public async Task TokenLogin()
|
||||
public async Task<bool> TokenLogin()
|
||||
{
|
||||
LoadingUI.Show();
|
||||
|
||||
@ -57,18 +57,23 @@ namespace Kill.Managers
|
||||
// 获取用户详情
|
||||
var response = await NetworkCtrl.Instance.Post<LoginResponse>("/api/v1/auth/token-login");
|
||||
LoadingUI.Hide();
|
||||
ResponseCodeHandler.HandleResponse(response,
|
||||
onSuccess: (data) =>
|
||||
{
|
||||
SetToken(data.data.token,data.data.user);
|
||||
}
|
||||
);
|
||||
if(response.Data.code==200)
|
||||
{
|
||||
SetToken(response.Data.data.token,response.Data.data.user);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearInfo();
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
Debug.LogError($"TokenLogin 异常: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,6 +67,12 @@ namespace Kill.Network
|
||||
Instance = this;
|
||||
localPath = Application.persistentDataPath;
|
||||
streamingPath = Application.streamingAssetsPath;
|
||||
// 设置目标帧率为 60 FPS
|
||||
Application.targetFrameRate = 60;
|
||||
|
||||
// 禁用垂直同步,允许更高帧率
|
||||
QualitySettings.vSyncCount = 0;
|
||||
|
||||
}
|
||||
|
||||
async void Start()
|
||||
@ -521,7 +527,7 @@ namespace Kill.Network
|
||||
}
|
||||
else
|
||||
{
|
||||
ToastUI.ShowText("资源更新失败");
|
||||
ToastUI.ShowText("resource error");
|
||||
Debug.LogError("资源更新失败");
|
||||
}
|
||||
}
|
||||
|
||||
@ -686,7 +686,7 @@ namespace Kill.UI.Pages
|
||||
UpdateStatus("正在查询设备注册状态...");
|
||||
Log("发送查询注册状态命令 (0x01)");
|
||||
|
||||
BLECommunicationManager.Instance.QueryRegistrationStatus((status) =>
|
||||
BLECommunicationManager.Instance.QueryRegistrationStatus((success,status) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
|
||||
8
Assets/Scripts/UI/Pages/ConnectDevice.meta
Normal file
8
Assets/Scripts/UI/Pages/ConnectDevice.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: acd23947c4ead6440a0d7f44deb2fc42
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
494
Assets/Scripts/UI/Pages/ConnectDevice/ConnectDevicePageCtrl.cs
Normal file
494
Assets/Scripts/UI/Pages/ConnectDevice/ConnectDevicePageCtrl.cs
Normal file
@ -0,0 +1,494 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Kill.Bluetooth;
|
||||
using Kill.Core;
|
||||
using Kill.Managers;
|
||||
using Kill.Network;
|
||||
using Kill.UI;
|
||||
using Kill.UI.Components;
|
||||
using Kill.UI.Pages;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// 0连接 1 失败 2 成功 3 选择wifi
|
||||
/// </summary>
|
||||
public GameObject[] sonPages;
|
||||
public GameObject topBar;
|
||||
public string blueToothNameKeyWord;
|
||||
private List<BluetoothDevice> deviceList = new List<BluetoothDevice>();
|
||||
public Button backButton;
|
||||
public Button skipButton;
|
||||
public GameObject titleText;
|
||||
public GameObject scanningIcon;
|
||||
void Start()
|
||||
{
|
||||
BluetoothManager.Instance.OnDeviceFound += OnDeviceFound;
|
||||
BluetoothManager.Instance.OnConnectedSuccess += OnDeviceConnected;
|
||||
BluetoothManager.Instance.OnConnectFailed += OnConnectFailed;
|
||||
BluetoothManager.Instance.OnDisconnected += OnDeviceDisconnected;
|
||||
EnterConnectPage();
|
||||
}
|
||||
void OnDestroy()
|
||||
{
|
||||
BluetoothManager.Instance.OnDeviceFound -= OnDeviceFound;
|
||||
BluetoothManager.Instance.OnConnectedSuccess -= OnDeviceConnected;
|
||||
BluetoothManager.Instance.OnConnectFailed -= OnConnectFailed;
|
||||
BluetoothManager.Instance.OnDisconnected -= OnDeviceDisconnected;
|
||||
}
|
||||
public void EnterConnectPage()
|
||||
{
|
||||
OnStopScanClick();
|
||||
if(BluetoothManager.Instance.IsConnected)
|
||||
BluetoothManager.Instance.Disconnect();
|
||||
topBar.SetActive(true);
|
||||
titleText.SetActive(false);
|
||||
backButton.onClick.RemoveAllListeners();
|
||||
backButton.onClick.AddListener(BackToHomePage);
|
||||
backButton.gameObject.SetActive(true);
|
||||
skipButton.gameObject.SetActive(false);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[0].SetActive(true);
|
||||
UIManager.Instance.RegisterBackAction(BackToHomePage);
|
||||
OnScanClick();
|
||||
}
|
||||
public GameObject qrCodePlane;
|
||||
public void ScanQrCode()
|
||||
{
|
||||
qrCodePlane.SetActive(true);
|
||||
qrCodePlane.GetComponent<ScanQRcode>().OnQRCodeScanned+=GetQrResult;
|
||||
}
|
||||
public void GetQrResult(string result)
|
||||
{
|
||||
BluetoothManager.Instance.Connect(result);
|
||||
LoadingUI.Show();
|
||||
qrCodePlane.SetActive(false);
|
||||
nowDeviceMac=result;
|
||||
}
|
||||
|
||||
string errorTip="";
|
||||
private void ShowErrorPage()
|
||||
{
|
||||
if(BluetoothManager.Instance.IsConnected)
|
||||
BluetoothManager.Instance.Disconnect();
|
||||
topBar.SetActive(false);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[1].SetActive(true);
|
||||
Text errorText=sonPages[1].transform.Find("提示").GetComponent<Text>();
|
||||
if(errorTip!="")
|
||||
{
|
||||
errorText.text=LanguageManager.Instance.GetLanguage(errorTip);
|
||||
}
|
||||
else
|
||||
{
|
||||
errorText.text=LanguageManager.Instance.GetLanguage("100069");
|
||||
}
|
||||
UIManager.Instance.RegisterBackAction(EnterConnectPage);
|
||||
LoadingUI.Hide();
|
||||
}
|
||||
public InputField wifiNameInput;
|
||||
public InputField wifiPasswordInput;
|
||||
|
||||
public void ShowWifiPage()
|
||||
{
|
||||
topBar.SetActive(true);
|
||||
titleText.SetActive(true);
|
||||
backButton.gameObject.SetActive(false);
|
||||
UIManager.Instance.ClearBackAction();
|
||||
skipButton.gameObject.SetActive(true);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[3].SetActive(true);
|
||||
|
||||
// 获取当前 WiFi 名称
|
||||
string wifiName = GetCurrentWiFiName();
|
||||
wifiNameInput.text = wifiName ?? "";
|
||||
wifiPasswordInput.text="";
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确认配置 WiFi
|
||||
/// </summary>
|
||||
public void OnWifiConfirmClick()
|
||||
{
|
||||
string ssid = wifiNameInput.text.Trim();
|
||||
string password = wifiPasswordInput.text;
|
||||
|
||||
if (string.IsNullOrEmpty(ssid))
|
||||
{
|
||||
ToastUI.ShowText(LanguageManager.Instance.GetLanguage("100071") ?? "请输入WiFi名称");
|
||||
return;
|
||||
}
|
||||
|
||||
// 创建 WiFi 配置
|
||||
var wifiControl = new Kill.Bluetooth.Protocol.WIFIControl
|
||||
{
|
||||
Enable = true,
|
||||
SSID = ssid,
|
||||
Password = password
|
||||
};
|
||||
|
||||
LoadingUI.Show();
|
||||
|
||||
// 发送 WiFi 配置到设备
|
||||
BLECommunicationManager.Instance.WriteWIFIControl(wifiControl, (success) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
if (success)
|
||||
{
|
||||
UnityEngine.Debug.Log("WiFi 配置成功");
|
||||
ShowSuccessPage();
|
||||
}
|
||||
else
|
||||
{
|
||||
ToastUI.ShowText(LanguageManager.Instance.GetLanguage("100072") ?? "WiFi配置失败");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
/// 0不可点击 1可点击
|
||||
/// </summary>
|
||||
public GameObject[] wifiConfirmButtons;
|
||||
public void CheckWifiNameAndPassword()
|
||||
{
|
||||
string ssid = wifiNameInput.text.Trim();
|
||||
string password = wifiPasswordInput.text;
|
||||
if(string.IsNullOrEmpty(ssid) || string.IsNullOrEmpty(password))
|
||||
{
|
||||
wifiConfirmButtons[0].SetActive(true);
|
||||
wifiConfirmButtons[1].SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
wifiConfirmButtons[0].SetActive(false);
|
||||
wifiConfirmButtons[1].SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前连接的 WiFi 名称
|
||||
/// </summary>
|
||||
private string GetCurrentWiFiName()
|
||||
{
|
||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
||||
try
|
||||
{
|
||||
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||||
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
|
||||
using (AndroidJavaObject wifiManager = currentActivity.Call<AndroidJavaObject>("getSystemService", "wifi"))
|
||||
{
|
||||
if (wifiManager == null) return null;
|
||||
|
||||
using (AndroidJavaObject wifiInfo = wifiManager.Call<AndroidJavaObject>("getConnectionInfo"))
|
||||
{
|
||||
if (wifiInfo == null) return null;
|
||||
|
||||
string ssid = wifiInfo.Call<string>("getSSID");
|
||||
if (!string.IsNullOrEmpty(ssid) && ssid != "<unknown ssid>")
|
||||
{
|
||||
return ssid.Trim('"');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Debug.LogError($"获取 WiFi 名称失败: {ex.Message}");
|
||||
}
|
||||
return null;
|
||||
#elif UNITY_IOS && !UNITY_EDITOR
|
||||
// iOS 调用原生插件
|
||||
return GetWiFiNameIOS();
|
||||
#else
|
||||
return "Editor_WiFi"; // 编辑器返回模拟值
|
||||
#endif
|
||||
}
|
||||
|
||||
#if UNITY_IOS && !UNITY_EDITOR
|
||||
[System.Runtime.InteropServices.DllImport("__Internal")]
|
||||
private static extern System.IntPtr GetWiFiSSID();
|
||||
|
||||
/// <summary>
|
||||
/// iOS 获取 WiFi 名称
|
||||
/// </summary>
|
||||
private string GetWiFiNameIOS()
|
||||
{
|
||||
try
|
||||
{
|
||||
System.IntPtr ptr = GetWiFiSSID();
|
||||
if (ptr == System.IntPtr.Zero)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
string ssid = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ptr);
|
||||
// 释放内存
|
||||
System.Runtime.InteropServices.Marshal.FreeHGlobal(ptr);
|
||||
return ssid;
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Debug.LogError($"iOS 获取 WiFi 名称失败: {ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
public void ShowSuccessPage()
|
||||
{
|
||||
topBar.SetActive(false);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[2].SetActive(true);
|
||||
UIManager.Instance.RegisterBackAction(EnterConnectPage);
|
||||
}
|
||||
private void OnDeviceFound(BluetoothDevice device)
|
||||
{
|
||||
if(string.IsNullOrEmpty(device.Name))
|
||||
return;
|
||||
AddOneDevice(device);
|
||||
|
||||
}
|
||||
private void OnDeviceConnected()
|
||||
{
|
||||
if (selectedIndex >= 0 && selectedIndex < deviceObjects.Count)
|
||||
{
|
||||
deviceObjects[selectedIndex].transform.Find("状态").Find("loading").gameObject.SetActive(false);
|
||||
deviceObjects[selectedIndex].transform.Find("状态").Find("成功").gameObject.SetActive(true);
|
||||
}
|
||||
// 延迟 500ms 再查询,确保 BLE 连接完全就绪
|
||||
StartCoroutine(DelayedQueryRegistration());
|
||||
isconnecting =false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 延迟查询注册状态
|
||||
/// </summary>
|
||||
private System.Collections.IEnumerator DelayedQueryRegistration()
|
||||
{
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
OnQueryRegistrationClick();
|
||||
}
|
||||
|
||||
private void OnConnectFailed(string address)
|
||||
{
|
||||
if(!isconnecting)
|
||||
return;
|
||||
errorTip="100069";
|
||||
ShowErrorPage();
|
||||
isconnecting=false;
|
||||
}
|
||||
|
||||
private void OnDeviceDisconnected(string address)
|
||||
{
|
||||
// UpdateStatus($"已断开连接: {address}");
|
||||
// if (deviceStatusText != null)
|
||||
// deviceStatusText.text = "未连接";
|
||||
}
|
||||
public List<GameObject> deviceObjects;
|
||||
/// <summary>
|
||||
/// 开始扫描
|
||||
/// </summary>
|
||||
public void OnScanClick()
|
||||
{
|
||||
scanningIcon.SetActive(true);
|
||||
devicePrefab.SetActive(false);
|
||||
if (BluetoothManager.Instance != null)
|
||||
{
|
||||
// 清空列表
|
||||
deviceList.Clear();
|
||||
if (deviceObjects != null && deviceObjects.Count > 0)
|
||||
{
|
||||
foreach (var item in deviceObjects)
|
||||
{
|
||||
Destroy(item);
|
||||
}
|
||||
deviceObjects.Clear();
|
||||
}
|
||||
deviceObjects = new List<GameObject>();
|
||||
BluetoothManager.Instance.StartScan(999f); // 扫描999秒
|
||||
}
|
||||
}
|
||||
public GameObject deviceListParent;
|
||||
public GameObject devicePrefab;
|
||||
public GameObject deviceListUi;
|
||||
bool isconnecting=false;
|
||||
public void AddOneDevice(BluetoothDevice device)
|
||||
{
|
||||
if (deviceList.Contains(device))
|
||||
return;
|
||||
if(!device.Name.Contains(blueToothNameKeyWord))
|
||||
return;
|
||||
if(!deviceListUi.activeSelf)
|
||||
deviceListUi.SetActive(true);
|
||||
deviceList.Add(device);
|
||||
GameObject deviceObject = Instantiate(devicePrefab, deviceListParent.transform);
|
||||
deviceObject.transform.Find("name").GetComponent<Text>().text=device.Name;
|
||||
deviceObject.SetActive(true);
|
||||
deviceObjects.Add(deviceObject);
|
||||
int index = deviceObjects.Count-1;
|
||||
deviceObject.GetComponent<Button>().onClick.AddListener(() =>ClickOneDevice(index));
|
||||
isconnecting=true;
|
||||
}
|
||||
int selectedIndex=-1;
|
||||
string nowDeviceMac="";
|
||||
public void ClickOneDevice(int index)
|
||||
{
|
||||
if (BluetoothManager.Instance == null) return;
|
||||
OnStopScanClick();
|
||||
selectedIndex = index;
|
||||
if (selectedIndex >= 0 && selectedIndex < deviceList.Count)
|
||||
{
|
||||
var device = deviceList[selectedIndex];
|
||||
Debug.Log("设备mac:"+device.Address);
|
||||
nowDeviceMac=device.Address;
|
||||
BluetoothManager.Instance.Connect(device.Address);
|
||||
LoadingUI.Show();
|
||||
deviceObjects[index].transform.Find("状态").Find("loading").gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止扫描
|
||||
/// </summary>
|
||||
public void OnStopScanClick()
|
||||
{
|
||||
scanningIcon.SetActive(false);
|
||||
if (BluetoothManager.Instance != null)
|
||||
{
|
||||
BluetoothManager.Instance.StopScan();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 查询设备注册状态
|
||||
/// </summary>
|
||||
private void OnQueryRegistrationClick()
|
||||
{
|
||||
|
||||
BLECommunicationManager.Instance.QueryRegistrationStatus((success,status) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
bool IsRegistered = status.IsRegistered;
|
||||
if (IsRegistered)
|
||||
{
|
||||
errorTip = "100070";
|
||||
ShowErrorPage();
|
||||
}
|
||||
else
|
||||
{
|
||||
BandDevice();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
errorTip = "100069";
|
||||
ShowErrorPage();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
/// 注册设备
|
||||
/// </summary>
|
||||
private void OnRegisterDeviceClick()
|
||||
{
|
||||
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
|
||||
|
||||
BLECommunicationManager.Instance.RegisterDevice(username, (success, message) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
if (success)
|
||||
{
|
||||
ShowWifiPage();
|
||||
}
|
||||
else
|
||||
{
|
||||
errorTip = "100070";
|
||||
ShowErrorPage();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
/// 注销用户
|
||||
/// </summary>
|
||||
private void OnUnregisterUserClick()
|
||||
{
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
BLECommunicationManager.Instance.UnregisterUser(username, (response) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
if (response.IsSuccess)
|
||||
{
|
||||
Debug.Log($"用户 {username} 注销成功!");
|
||||
}
|
||||
else
|
||||
{
|
||||
OnUnregisterUserClick();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
public void BackToHomePage()
|
||||
{
|
||||
OnStopScanClick();
|
||||
UIManager.Instance.OpenPage(UIManager.PageName.homePage);
|
||||
}
|
||||
/// <summary>
|
||||
/// 绑定设备
|
||||
/// </summary>
|
||||
public async void BandDevice()
|
||||
{
|
||||
|
||||
LoadingUI.Show();
|
||||
try
|
||||
{
|
||||
BandDeviceRequest request = new BandDeviceRequest
|
||||
{
|
||||
device_sn = nowDeviceMac,
|
||||
user_id = DataManager.Instance.userInfo.id,
|
||||
};
|
||||
|
||||
Debug.Log($"绑定设备请求: deviceSn={request.device_sn}, userId={request.user_id}");
|
||||
|
||||
var response = await NetworkCtrl.Instance.Post<NoDataResponse>("/api/v1/device/bind", request);
|
||||
LoadingUI.Hide();
|
||||
ResponseCodeHandler.HandleResponse(response,
|
||||
onSuccess: (data) =>
|
||||
{
|
||||
Debug.Log($"绑定设备成功");
|
||||
OnRegisterDeviceClick();
|
||||
}
|
||||
,
|
||||
onError: (code,message) =>
|
||||
{
|
||||
Debug.Log($"绑定设备失败:{code},{message}");
|
||||
errorTip = "100070";
|
||||
ShowErrorPage();
|
||||
}
|
||||
);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
Debug.LogError($"绑定设备异常: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cc4db0165ab541a44978ccde28b3bc29
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
51
Assets/Scripts/UI/Pages/ConnectDevice/NativeQRScanner.cs
Normal file
51
Assets/Scripts/UI/Pages/ConnectDevice/NativeQRScanner.cs
Normal file
@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Kill.UI.Pages
|
||||
{
|
||||
/// <summary>
|
||||
/// 原生二维码扫描 - 调用系统相机扫码
|
||||
/// </summary>
|
||||
public class NativeQRScanner : MonoBehaviour
|
||||
{
|
||||
// 扫码结果回调
|
||||
public event Action<string> OnQRCodeScanned;
|
||||
|
||||
/// <summary>
|
||||
/// 开始扫码
|
||||
/// </summary>
|
||||
public void StartScan()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
// 编辑器模拟
|
||||
Debug.Log("[NativeQRScanner] 编辑器模式,模拟扫码");
|
||||
// 可以弹窗输入测试
|
||||
#elif UNITY_ANDROID
|
||||
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||||
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
|
||||
using (AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "com.google.zxing.client.android.SCAN"))
|
||||
{
|
||||
intent.Call<AndroidJavaObject>("putExtra", "SCAN_MODE", "QR_CODE_MODE");
|
||||
currentActivity.Call("startActivityForResult", intent, 0);
|
||||
}
|
||||
#elif UNITY_IOS
|
||||
// iOS 需要写原生插件
|
||||
_StartScanIOS();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if UNITY_IOS
|
||||
[System.Runtime.InteropServices.DllImport("__Internal")]
|
||||
private static extern void _StartScanIOS();
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// 接收扫码结果(从原生回调)
|
||||
/// </summary>
|
||||
public void OnScanResult(string result)
|
||||
{
|
||||
Debug.Log($"[NativeQRScanner] 扫码结果: {result}");
|
||||
OnQRCodeScanned?.Invoke(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8d70b0b013c29954fa1ae22f479ae83a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
319
Assets/Scripts/UI/Pages/ConnectDevice/ScanQRcode.cs
Normal file
319
Assets/Scripts/UI/Pages/ConnectDevice/ScanQRcode.cs
Normal file
@ -0,0 +1,319 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Kill.UI.Components;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Kill.UI.Pages
|
||||
{
|
||||
/// <summary>
|
||||
/// 二维码扫描器 - 调用摄像头扫描二维码
|
||||
/// </summary>
|
||||
public class ScanQRcode : MonoBehaviour
|
||||
{
|
||||
[Header("UI组件")]
|
||||
public RawImage cameraPreview; // 摄像头预览
|
||||
[Header("扫描设置")]
|
||||
public float scanInterval = 0.2f; // 扫描间隔(秒)
|
||||
|
||||
// 摄像头相关
|
||||
private WebCamTexture webCamTexture;
|
||||
private bool isScanning = false;
|
||||
|
||||
// 扫描结果回调
|
||||
public event Action<string> OnQRCodeScanned;
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
StartScan();
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
StopScan();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始扫描
|
||||
/// </summary>
|
||||
public void StartScan()
|
||||
{
|
||||
if (isScanning) return;
|
||||
|
||||
StartCoroutine(InitializeCamera());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止扫描
|
||||
/// </summary>
|
||||
public void StopScan()
|
||||
{
|
||||
isScanning = false;
|
||||
StopAllCoroutines();
|
||||
|
||||
if (webCamTexture != null && webCamTexture.isPlaying)
|
||||
{
|
||||
webCamTexture.Stop();
|
||||
webCamTexture = null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭扫码界面
|
||||
/// </summary>
|
||||
public void Close()
|
||||
{
|
||||
StopScan();
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化摄像头
|
||||
/// </summary>
|
||||
private IEnumerator InitializeCamera()
|
||||
{
|
||||
// Android 使用 Permission API 请求权限
|
||||
#if UNITY_ANDROID && !UNITY_EDITOR
|
||||
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.Camera))
|
||||
{
|
||||
UnityEngine.Android.Permission.RequestUserPermission(UnityEngine.Android.Permission.Camera);
|
||||
// 等待权限请求结果
|
||||
yield return new WaitUntil(() => UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.Camera));
|
||||
}
|
||||
|
||||
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(UnityEngine.Android.Permission.Camera))
|
||||
{
|
||||
UpdateStatus("100085");
|
||||
yield break;
|
||||
}
|
||||
#else
|
||||
// 其他平台使用传统方式
|
||||
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
|
||||
|
||||
if (!Application.HasUserAuthorization(UserAuthorization.WebCam))
|
||||
{
|
||||
UpdateStatus("100085");
|
||||
yield break;
|
||||
}
|
||||
#endif
|
||||
|
||||
// 获取后置摄像头
|
||||
WebCamDevice[] devices = WebCamTexture.devices;
|
||||
if (devices.Length == 0)
|
||||
{
|
||||
UpdateStatus("100086");
|
||||
yield break;
|
||||
}
|
||||
|
||||
// 优先使用后置摄像头
|
||||
string deviceName = devices[0].name;
|
||||
for (int i = 0; i < devices.Length; i++)
|
||||
{
|
||||
if (!devices[i].isFrontFacing)
|
||||
{
|
||||
deviceName = devices[i].name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 创建摄像头纹理
|
||||
webCamTexture = new WebCamTexture(deviceName, 1280, 720, 30);
|
||||
cameraPreview.texture = webCamTexture;
|
||||
|
||||
// 开始播放
|
||||
webCamTexture.Play();
|
||||
|
||||
// 等待摄像头启动
|
||||
yield return new WaitUntil(() => webCamTexture.width > 100);
|
||||
|
||||
// 调整预览画面比例
|
||||
AdjustPreviewAspect();
|
||||
|
||||
isScanning = true;
|
||||
// 开始扫描
|
||||
StartCoroutine(ScanCoroutine());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 调整预览画面比例
|
||||
/// </summary>
|
||||
private void AdjustPreviewAspect()
|
||||
{
|
||||
if (webCamTexture == null) return;
|
||||
|
||||
float videoRatio = (float)webCamTexture.width / webCamTexture.height;
|
||||
float screenRatio = (float)Screen.width / Screen.height;
|
||||
|
||||
// 根据摄像头方向调整
|
||||
int rotation = webCamTexture.videoRotationAngle;
|
||||
cameraPreview.rectTransform.localEulerAngles = new Vector3(0, 0, -rotation);
|
||||
|
||||
// 调整缩放以适应屏幕
|
||||
if (rotation == 90 || rotation == 270)
|
||||
{
|
||||
videoRatio = 1f / videoRatio;
|
||||
}
|
||||
|
||||
// 保持比例填充
|
||||
if (videoRatio > screenRatio)
|
||||
{
|
||||
cameraPreview.rectTransform.localScale = new Vector3(screenRatio / videoRatio, 1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
cameraPreview.rectTransform.localScale = new Vector3(1, videoRatio / screenRatio, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 扫描协程
|
||||
/// </summary>
|
||||
private IEnumerator ScanCoroutine()
|
||||
{
|
||||
// 等待一帧确保摄像头已准备好
|
||||
yield return null;
|
||||
|
||||
while (isScanning && webCamTexture != null && webCamTexture.isPlaying)
|
||||
{
|
||||
// 获取当前帧
|
||||
Texture2D snapshot = GetSnapshot();
|
||||
if (snapshot != null)
|
||||
{
|
||||
// 解析二维码
|
||||
string result = DecodeQRCode(snapshot);
|
||||
Destroy(snapshot);
|
||||
|
||||
if (!string.IsNullOrEmpty(result))
|
||||
{
|
||||
// 从结果中提取 MAC 地址
|
||||
string macAddress = ExtractMacAddress(result);
|
||||
if (!string.IsNullOrEmpty(macAddress))
|
||||
{
|
||||
// 扫描成功,仅回传 MAC 地址
|
||||
OnQRCodeScanned?.Invoke(macAddress);
|
||||
yield break;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 二维码不符合要求,显示提示
|
||||
UpdateStatus("100084");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(scanInterval);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取摄像头当前帧
|
||||
/// </summary>
|
||||
private Texture2D GetSnapshot()
|
||||
{
|
||||
if (webCamTexture == null || !webCamTexture.isPlaying) return null;
|
||||
|
||||
try
|
||||
{
|
||||
Texture2D snapshot = new Texture2D(webCamTexture.width, webCamTexture.height);
|
||||
snapshot.SetPixels(webCamTexture.GetPixels());
|
||||
snapshot.Apply();
|
||||
return snapshot;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解析二维码
|
||||
/// </summary>
|
||||
private string DecodeQRCode(Texture2D texture)
|
||||
{
|
||||
try
|
||||
{
|
||||
int width = texture.width;
|
||||
int height = texture.height;
|
||||
|
||||
// 获取像素数据
|
||||
Color32[] pixels = texture.GetPixels32();
|
||||
|
||||
// 转换为灰度图
|
||||
byte[] grayscale = new byte[width * height];
|
||||
for (int i = 0; i < pixels.Length; i++)
|
||||
{
|
||||
// 使用标准亮度公式: Y = 0.299R + 0.587G + 0.114B
|
||||
grayscale[i] = (byte)(0.299f * pixels[i].r + 0.587f * pixels[i].g + 0.114f * pixels[i].b);
|
||||
}
|
||||
|
||||
// 创建 LuminanceSource
|
||||
var luminanceSource = new ZXing.PlanarYUVLuminanceSource(
|
||||
grayscale,
|
||||
width,
|
||||
height,
|
||||
0,
|
||||
0,
|
||||
width,
|
||||
height,
|
||||
false
|
||||
);
|
||||
|
||||
// 创建 BinaryBitmap
|
||||
var binarizer = new ZXing.Common.HybridBinarizer(luminanceSource);
|
||||
var binaryBitmap = new ZXing.BinaryBitmap(binarizer);
|
||||
|
||||
// 解码
|
||||
var reader = new ZXing.QrCode.QRCodeReader();
|
||||
var hints = new Dictionary<ZXing.DecodeHintType, object>
|
||||
{
|
||||
{ ZXing.DecodeHintType.TRY_HARDER, true }
|
||||
};
|
||||
|
||||
var result = reader.decode(binaryBitmap, hints);
|
||||
return result?.Text;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"二维码解析失败: {ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从字符串中提取 MAC 地址(格式如 98:EA:A0:02:4E:06)
|
||||
/// </summary>
|
||||
private string ExtractMacAddress(string input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input))
|
||||
return null;
|
||||
|
||||
// MAC 地址正则表达式:匹配 XX:XX:XX:XX:XX:XX 格式(X 为十六进制字符)
|
||||
System.Text.RegularExpressions.Regex macRegex =
|
||||
new System.Text.RegularExpressions.Regex(@"[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}");
|
||||
|
||||
System.Text.RegularExpressions.Match match = macRegex.Match(input);
|
||||
if (match.Success)
|
||||
{
|
||||
// 返回大写的 MAC 地址
|
||||
return match.Value.ToUpper();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新状态文字
|
||||
/// </summary>
|
||||
private void UpdateStatus(string code)
|
||||
{
|
||||
ToastUI.Show(code);
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
StopScan();
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/UI/Pages/ConnectDevice/ScanQRcode.cs.meta
Normal file
11
Assets/Scripts/UI/Pages/ConnectDevice/ScanQRcode.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2f6d707cba0376a43bc6d9f0a27ea376
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -78,8 +78,8 @@ namespace Kill.UI.Pages
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从服务器加载全部题目
|
||||
/// <summary>
|
||||
/// 完成考试
|
||||
/// </summary>
|
||||
public async void ExamCompletion()
|
||||
{
|
||||
@ -87,7 +87,6 @@ namespace Kill.UI.Pages
|
||||
|
||||
try
|
||||
{
|
||||
// 调用获取题目列表接口,获取全部题目
|
||||
var response = await NetworkCtrl.Instance.Post<NoDataResponse>("/api/v1/exam/completion");
|
||||
LoadingUI.Hide();
|
||||
ResponseCodeHandler.HandleResponse(response,
|
||||
@ -137,7 +136,6 @@ namespace Kill.UI.Pages
|
||||
}
|
||||
public void BackAction()
|
||||
{
|
||||
ToastUI.ShowText("返回");
|
||||
UIManager.Instance.OpenPage(UIManager.PageName.homePage,null,true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,8 +124,11 @@ namespace Kill.UI
|
||||
}
|
||||
else
|
||||
{
|
||||
await DataManager.Instance.TokenLogin();
|
||||
OpenPage(PageName.homePage, null, true);
|
||||
bool hasToken=await DataManager.Instance.TokenLogin();
|
||||
if(hasToken)
|
||||
OpenPage(PageName.homePage, null, true);
|
||||
else
|
||||
OpenPage(PageName.loginPage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
Assets/StreamingAssets/Android
Normal file
BIN
Assets/StreamingAssets/Android
Normal file
Binary file not shown.
31
Assets/StreamingAssets/Android.manifest
Normal file
31
Assets/StreamingAssets/Android.manifest
Normal file
@ -0,0 +1,31 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 256577813
|
||||
AssetBundleManifest:
|
||||
AssetBundleInfos:
|
||||
Info_0:
|
||||
Name: ui_homepage.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_common.ab
|
||||
Info_1:
|
||||
Name: common.ab
|
||||
Dependencies: {}
|
||||
Info_2:
|
||||
Name: language.ab
|
||||
Dependencies: {}
|
||||
Info_3:
|
||||
Name: ui_common.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_loginpage.ab
|
||||
Info_4:
|
||||
Name: ui_loginpage.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_common.ab
|
||||
Info_5:
|
||||
Name: ui_safetylearningpage.ab
|
||||
Dependencies:
|
||||
Dependency_0: ui_common.ab
|
||||
Info_6:
|
||||
Name: ui_connectdevicepage.ab
|
||||
Dependencies:
|
||||
Dependency_0: common.ab
|
||||
Dependency_1: ui_common.ab
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8efc0a24208a4ad4199a43f0fff4f33d
|
||||
guid: bfeac3e50a0ed524bb50d8407c4ad613
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2beb8f636348f43418639d8d3b8398f8
|
||||
guid: 7adac15e824e41346ae35f73066b03b0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
Binary file not shown.
@ -1,66 +1,21 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 233218370
|
||||
CRC: 374579679
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: c80e189aa6f9c8d7ee6bc50f7300305d
|
||||
Hash: 23b30b8b7538d15e7e1f5c745bb57c50
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: be157f972cb3f854d77a3240d64a7387
|
||||
Hash: 958b54fb77cc0a35b3bf79f07d0e96ea
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: c80e189aa6f9c8d7ee6bc50f7300305d
|
||||
Hash: 23b30b8b7538d15e7e1f5c745bb57c50
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 21
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 74
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 128
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FaceInfo_Legacy
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FontAssetCreationSettings
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.KerningTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_Character
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontFeatureTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontWeightPair
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphPairAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphValueRecord
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.FaceInfo
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.Glyph
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphMetrics
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphRect
|
||||
SerializeReferenceClassIdentifiers: []
|
||||
Assets:
|
||||
- Assets/Res/common/LiberationSans SDF - Drop Shadow.mat
|
||||
- Assets/Res/common/TMP_SDF-Mobile.shader
|
||||
- Assets/Res/common/LiberationSans SDF - Fallback.asset
|
||||
- Assets/Res/common/LiberationSans SDF - Outline.mat
|
||||
- Assets/Res/common/loadingNew.anim
|
||||
- Assets/Res/common/loading.anim
|
||||
- Assets/Res/common/MiSans-Medium.ttf
|
||||
- Assets/Res/common/MiSans-Medium SDF.asset
|
||||
- Assets/Res/common/LiberationSans SDF.asset
|
||||
- Assets/Res/common/LiberationSans.ttf
|
||||
Dependencies: []
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c24a7550296d5d54d91f866dd40936db
|
||||
guid: d01210176d312724abe424f9e0706b83
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 749593259
|
||||
CRC: 142284609
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 81a8de0bb4c5928c43220b249b335c6b
|
||||
Hash: 98e62aa9d1a917725e16d689a36329b2
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 5ad585dd02dfb5016c0dad519eab8f49
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 81a8de0bb4c5928c43220b249b335c6b
|
||||
Hash: 98e62aa9d1a917725e16d689a36329b2
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 49
|
||||
|
||||
@ -1,55 +1,75 @@
|
||||
{
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.0",
|
||||
"assetbundles": [
|
||||
{
|
||||
"name": "common.ab",
|
||||
"size": 12854223,
|
||||
"md5": "c2fa51b131e3d8a65d4134c8670ee99b"
|
||||
"size": 4149,
|
||||
"md5": "6bffb017f95228475917b37052e012b5"
|
||||
},
|
||||
{
|
||||
"name": "language.ab",
|
||||
"size": 2226,
|
||||
"md5": "6e10d9c8c23778a25684dd8d69350510"
|
||||
"size": 4575,
|
||||
"md5": "42dc603fabf00795994e2e06fa035234"
|
||||
},
|
||||
{
|
||||
"name": "ui_common.ab",
|
||||
"size": 12606,
|
||||
"md5": "1dfaf11957a90b775e0be5f6fe37452b"
|
||||
"size": 381825,
|
||||
"md5": "f4d664ac4e17eaeca0ad04ce6db80533"
|
||||
},
|
||||
{
|
||||
"name": "ui_connectdevicepage.ab",
|
||||
"size": 53652,
|
||||
"md5": "eba6cdc3aeab75162c82c6f8d7c1feca"
|
||||
},
|
||||
{
|
||||
"name": "ui_homepage.ab",
|
||||
"size": 9787,
|
||||
"md5": "4c4595943f5c31673338e2ca83147ee8"
|
||||
"size": 1241443,
|
||||
"md5": "cac757cae980de60feadb066719f1172"
|
||||
},
|
||||
{
|
||||
"name": "ui_loginpage.ab",
|
||||
"size": 241923,
|
||||
"md5": "520989d12bfdae3368c3fd88f8381d3e"
|
||||
"size": 238816,
|
||||
"md5": "65a43b0e0936cf36e992d185bbc36b8b"
|
||||
},
|
||||
{
|
||||
"name": "ui_safetylearningpage.ab",
|
||||
"size": 144194,
|
||||
"md5": "0513ab30e2cdebd0cfb3ccdbb9204688"
|
||||
},
|
||||
{
|
||||
"name": "common.ab.manifest",
|
||||
"size": 2173,
|
||||
"md5": "7f35fb8fc14986f31d17c6483a90b4f3"
|
||||
"size": 506,
|
||||
"md5": "6755e41e58a4d23f328dd46d1822f4d5"
|
||||
},
|
||||
{
|
||||
"name": "language.ab.manifest",
|
||||
"size": 473,
|
||||
"md5": "335cc7d7481861141ee8e6fff52f3976"
|
||||
"md5": "4aa993facac5dc7e23e95870ba621c51"
|
||||
},
|
||||
{
|
||||
"name": "ui_common.ab.manifest",
|
||||
"size": 2905,
|
||||
"md5": "a05683fbffe6068095d6b7ef877f0ef4"
|
||||
"size": 4592,
|
||||
"md5": "9c454b18639c86108a26d2018b5234c7"
|
||||
},
|
||||
{
|
||||
"name": "ui_connectdevicepage.ab.manifest",
|
||||
"size": 3786,
|
||||
"md5": "d34af45d99fb0bc976e0b2a906d28a9c"
|
||||
},
|
||||
{
|
||||
"name": "ui_homepage.ab.manifest",
|
||||
"size": 2419,
|
||||
"md5": "c3971548d08125ef72bade017cebabdc"
|
||||
"size": 2252,
|
||||
"md5": "d4c7113c74565bb0e3a1d91bae3f313b"
|
||||
},
|
||||
{
|
||||
"name": "ui_loginpage.ab.manifest",
|
||||
"size": 4757,
|
||||
"md5": "99941302876547c4759f674f80fee5db"
|
||||
"size": 4454,
|
||||
"md5": "0dc94595c1a8470faa832afa9c87666a"
|
||||
},
|
||||
{
|
||||
"name": "ui_safetylearningpage.ab.manifest",
|
||||
"size": 5165,
|
||||
"md5": "b1a85a84cd9496ec871d8b24d0dbb79a"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e56d42cf285d10847a9084054c83be13
|
||||
guid: 84abb08dd6d2e3f4988e8f3f85b04262
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
75
Assets/StreamingAssets/list1.json
Normal file
75
Assets/StreamingAssets/list1.json
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"assetbundles": [
|
||||
{
|
||||
"name": "common.ab",
|
||||
"size": 4149,
|
||||
"md5": "6bffb017f95228475917b37052e012b5"
|
||||
},
|
||||
{
|
||||
"name": "language.ab",
|
||||
"size": 4575,
|
||||
"md5": "42dc603fabf00795994e2e06fa035234"
|
||||
},
|
||||
{
|
||||
"name": "ui_common.ab",
|
||||
"size": 381825,
|
||||
"md5": "f4d664ac4e17eaeca0ad04ce6db80533"
|
||||
},
|
||||
{
|
||||
"name": "ui_connectdevicepage.ab",
|
||||
"size": 53619,
|
||||
"md5": "07c34734c98163f4f2e4a8c62b5a173d"
|
||||
},
|
||||
{
|
||||
"name": "ui_homepage.ab",
|
||||
"size": 1241443,
|
||||
"md5": "cac757cae980de60feadb066719f1172"
|
||||
},
|
||||
{
|
||||
"name": "ui_loginpage.ab",
|
||||
"size": 238816,
|
||||
"md5": "65a43b0e0936cf36e992d185bbc36b8b"
|
||||
},
|
||||
{
|
||||
"name": "ui_safetylearningpage.ab",
|
||||
"size": 144194,
|
||||
"md5": "0513ab30e2cdebd0cfb3ccdbb9204688"
|
||||
},
|
||||
{
|
||||
"name": "common.ab.manifest",
|
||||
"size": 506,
|
||||
"md5": "6755e41e58a4d23f328dd46d1822f4d5"
|
||||
},
|
||||
{
|
||||
"name": "language.ab.manifest",
|
||||
"size": 473,
|
||||
"md5": "4aa993facac5dc7e23e95870ba621c51"
|
||||
},
|
||||
{
|
||||
"name": "ui_common.ab.manifest",
|
||||
"size": 4592,
|
||||
"md5": "9c454b18639c86108a26d2018b5234c7"
|
||||
},
|
||||
{
|
||||
"name": "ui_connectdevicepage.ab.manifest",
|
||||
"size": 3786,
|
||||
"md5": "34176002c1ff7a29873e053d322b2b86"
|
||||
},
|
||||
{
|
||||
"name": "ui_homepage.ab.manifest",
|
||||
"size": 2252,
|
||||
"md5": "d4c7113c74565bb0e3a1d91bae3f313b"
|
||||
},
|
||||
{
|
||||
"name": "ui_loginpage.ab.manifest",
|
||||
"size": 4454,
|
||||
"md5": "0dc94595c1a8470faa832afa9c87666a"
|
||||
},
|
||||
{
|
||||
"name": "ui_safetylearningpage.ab.manifest",
|
||||
"size": 5165,
|
||||
"md5": "b1a85a84cd9496ec871d8b24d0dbb79a"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 714414049
|
||||
CRC: 2161279840
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 1153a9a71c2079962f868c3866d681ad
|
||||
Hash: 4ea1223b61d0b2425614da34c0e9dd5c
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 24e7573d98028b3cc7bcae0654eab5fa
|
||||
Hash: 3d0aa9280e2017137102b2dcf180d097
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 1153a9a71c2079962f868c3866d681ad
|
||||
Hash: 4ea1223b61d0b2425614da34c0e9dd5c
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -21,15 +21,15 @@ ClassTypes:
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
Script: {fileID: 11500000, guid: 767fbd85f067c1a4da213c13282cc05e, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 767fbd85f067c1a4da213c13282cc05e, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||
- Class: 114
|
||||
@ -49,12 +49,38 @@ ClassTypes:
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FaceInfo_Legacy
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.FontAssetCreationSettings
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.KerningTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_Character
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontFeatureTable
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_FontWeightPair
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphPairAdjustmentRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.TMP_GlyphValueRecord
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.VertexGradient
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.RectOffset
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.FaceInfo
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.Glyph
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphMetrics
|
||||
- AssemblyName: UnityEngine.TextCoreFontEngineModule
|
||||
ClassName: UnityEngine.TextCore.GlyphRect
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
@ -76,10 +102,24 @@ SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- "Assets/Res/ui/common/\u9009\u53D6\u5934\u50CF.prefab"
|
||||
- "Assets/Res/ui/common/\u8FD4\u56DE.png"
|
||||
- "Assets/Res/ui/common/\u9009\u62E9\u6846.png"
|
||||
- "Assets/Res/ui/common/\u9A8C\u8BC1\u7801\u7EC4\u4EF6.prefab"
|
||||
- Assets/Res/ui/common/Rectangle 132 (2).png
|
||||
- "Assets/Res/ui/common/\u5C0F\u6309\u94AE.png"
|
||||
- "Assets/Res/ui/common/Check-small (\u6821\u9A8C-\u5C0F).png"
|
||||
- "Assets/Res/ui/common/\u9009\u53D6\u5934\u50CF.prefab"
|
||||
- "Assets/Res/ui/common/\u6307\u7EB9.png"
|
||||
- "Assets/Res/ui/common/\u8FD4\u56DE.png"
|
||||
- "Assets/Res/ui/common/Right (\u53F3) (1).png"
|
||||
- Assets/Res/ui/common/Loading.png
|
||||
- "Assets/Res/ui/common/\u89C6\u9891.png"
|
||||
- "Assets/Res/ui/common/\u9009\u62E9\u6846.png"
|
||||
- "Assets/Res/ui/common/\u58F0\u97F3.png"
|
||||
- "Assets/Res/ui/common/\u8BBE\u5907\u540D\u6B21.png"
|
||||
- Assets/Res/ui/common/Rectangle 148 (1).png
|
||||
- "Assets/Res/ui/common/\u5BC6\u7801 - \u5C55\u793A.png"
|
||||
- Assets/Res/ui/common/Rectangle 148.png
|
||||
- "Assets/Res/ui/common/Close (\u5173\u95ED).png"
|
||||
- Assets/Res/ui/common/Ellipse 32.png
|
||||
- "Assets/Res/ui/common/\u5B9A\u65F6.png"
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/common.ab
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_loginpage.ab
|
||||
|
||||
BIN
Assets/StreamingAssets/ui_connectdevicepage.ab
Normal file
BIN
Assets/StreamingAssets/ui_connectdevicepage.ab
Normal file
Binary file not shown.
106
Assets/StreamingAssets/ui_connectdevicepage.ab.manifest
Normal file
106
Assets/StreamingAssets/ui_connectdevicepage.ab.manifest
Normal file
@ -0,0 +1,106 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 1954010819
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: c0f0a227dcda8c2fa20631441d246eaa
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: f416264907a65aa92adeeb00bf60fec2
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: c0f0a227dcda8c2fa20631441d246eaa
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
Script: {instanceID: 0}
|
||||
- Class: 21
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 74
|
||||
Script: {instanceID: 0}
|
||||
- Class: 111
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 2f6d707cba0376a43bc6d9f0a27ea376, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: cc4db0165ab541a44978ccde28b3bc29, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 128
|
||||
Script: {instanceID: 0}
|
||||
- Class: 213
|
||||
Script: {instanceID: 0}
|
||||
- Class: 222
|
||||
Script: {instanceID: 0}
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.ArgumentCache
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentListenerMode
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.RectOffset
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Button/ButtonClickedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ColorBlock
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.FontData
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/EndEditEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/OnChangeEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/SubmitEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Navigation
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ScrollRect/ScrollRectEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- Assets/Res/ui/connectdevicepage/Frame 19.png
|
||||
- Assets/Res/ui/connectdevicepage/icon.png
|
||||
- Assets/Res/ui/connectdevicepage/Rectangle 132 (3).png
|
||||
- Assets/Res/ui/connectdevicepage/Frame 20.png
|
||||
- "Assets/Res/ui/connectdevicepage/\u786E\u8BA4.png"
|
||||
- Assets/Res/ui/connectdevicepage/connectDevicePage.prefab
|
||||
- Assets/Res/ui/connectdevicepage/Rectangle 136.png
|
||||
- "Assets/Res/ui/connectdevicepage/\u626B\u63CF.png"
|
||||
- Assets/Res/ui/connectdevicepage/Vector.png
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/common.ab
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e4b248a1ea1d1647b673d83229260a8
|
||||
guid: 489d03fc6785b9a499ffe111ede1101b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92d0cbb4b3e260c4fb37b1f2def9aacd
|
||||
guid: b0da6655dcf15ff4fbe7e917f7c71dff
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 3121207904
|
||||
CRC: 2873620311
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: c751eb049ed9e8f8eb1a7678ce2327e6
|
||||
Hash: a5e8163239fbf5550ab3beedb10929b1
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 2da964eb972714674342a2708c4b8066
|
||||
Hash: 252cf1d368eeed7b0aa25c6e638ef9a7
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: c751eb049ed9e8f8eb1a7678ce2327e6
|
||||
Hash: a5e8163239fbf5550ab3beedb10929b1
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -24,14 +24,10 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 7fdaf0aeaf14a6d4c9beb4770e903acf, type: 3}
|
||||
- Class: 115
|
||||
@ -45,10 +41,12 @@ ClassTypes:
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Unity.TextMeshPro
|
||||
ClassName: TMPro.VertexGradient
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.ArgumentCache
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentListenerMode
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
@ -57,12 +55,6 @@ SerializeReferenceClassIdentifiers:
|
||||
ClassName: UnityEngine.UI.ColorBlock
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.FontData
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/EndEditEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/OnChangeEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.InputField/SubmitEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
@ -70,6 +62,9 @@ SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- "Assets/Res/ui/homepage/\u65E0\u8BBE\u5907.png"
|
||||
- Assets/Res/ui/homepage/homePage.prefab
|
||||
- "Assets/Res/ui/homepage/\u4E2A\u4EBA\u4E2D\u5FC3.png"
|
||||
- "Assets/Res/ui/homepage/\u6D88\u606F.png"
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/common.ab
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
|
||||
Binary file not shown.
@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 4028950989
|
||||
CRC: 1506138910
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 59dce4d2a0ce9e0ae41212946c77f075
|
||||
Hash: 111b08c284632c8965632707d85adb47
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 70589c2c13c216b3c5fa3022c1dc899e
|
||||
Hash: 481727e0eda7646426efebfcf2086aca
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 59dce4d2a0ce9e0ae41212946c77f075
|
||||
Hash: 111b08c284632c8965632707d85adb47
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -21,9 +21,13 @@ ClassTypes:
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
Script: {fileID: 11500000, guid: 1a5913bec98c8024087f4dbe7b40ab1c, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
@ -36,8 +40,6 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 271b50f7241504b49a6a7493d13721e7, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: f53257c6334f5224a8c3d192d5653d1c, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
- Class: 114
|
||||
@ -50,8 +52,6 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1a5913bec98c8024087f4dbe7b40ab1c, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
- Class: 114
|
||||
@ -104,23 +104,17 @@ SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Toggle/ToggleEvent
|
||||
Assets:
|
||||
- "Assets/Res/ui/loginPage/\u5BC6\u7801 (1) 1.png"
|
||||
- Assets/Res/ui/loginPage/Rectangle 135.png
|
||||
- Assets/Res/ui/loginPage/Frame 2 (1).png
|
||||
- Assets/Res/ui/loginPage/Rectangle 132 (1).png
|
||||
- "Assets/Res/ui/loginPage/\u9009\u62E9\u6846.png"
|
||||
- "Assets/Res/ui/loginPage/Check-small (\u6821\u9A8C-\u5C0F).png"
|
||||
- Assets/Res/ui/loginPage/Group 144.png
|
||||
- "Assets/Res/ui/loginPage/\u90AE\u7BB1-F 1.png"
|
||||
- Assets/Res/ui/loginPage/Group 143.png
|
||||
- "Assets/Res/ui/loginPage/\u9690\u79C1\u534F\u8BAE\u6846.png"
|
||||
- Assets/Res/ui/loginPage/Rectangle 148 (1).png
|
||||
- Assets/Res/ui/loginPage/Rectangle 132.png
|
||||
- Assets/Res/ui/loginPage/Rectangle 148.png
|
||||
- Assets/Res/ui/loginPage/loginPage.prefab
|
||||
- "Assets/Res/ui/loginPage/Close (\u5173\u95ED).png"
|
||||
- Assets/Res/ui/loginPage/bg.png
|
||||
- Assets/Res/ui/loginPage/Ellipse 32.png
|
||||
- Assets/Res/ui/loginPage/Rectangle 67.png
|
||||
- "Assets/Res/ui/loginpage/\u5BC6\u7801 (1) 1.png"
|
||||
- Assets/Res/ui/loginpage/Rectangle 135.png
|
||||
- Assets/Res/ui/loginpage/Frame 2 (1).png
|
||||
- Assets/Res/ui/loginpage/Rectangle 132 (1).png
|
||||
- Assets/Res/ui/loginpage/Group 144.png
|
||||
- "Assets/Res/ui/loginpage/\u90AE\u7BB1-F 1.png"
|
||||
- Assets/Res/ui/loginpage/Group 143.png
|
||||
- "Assets/Res/ui/loginpage/\u9690\u79C1\u534F\u8BAE\u6846.png"
|
||||
- Assets/Res/ui/loginpage/Rectangle 132.png
|
||||
- Assets/Res/ui/loginpage/loginPage.prefab
|
||||
- Assets/Res/ui/loginpage/bg.png
|
||||
- Assets/Res/ui/loginpage/Rectangle 67.png
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
|
||||
BIN
Assets/StreamingAssets/ui_safetylearningpage.ab
Normal file
BIN
Assets/StreamingAssets/ui_safetylearningpage.ab
Normal file
Binary file not shown.
131
Assets/StreamingAssets/ui_safetylearningpage.ab.manifest
Normal file
131
Assets/StreamingAssets/ui_safetylearningpage.ab.manifest
Normal file
@ -0,0 +1,131 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 3023159928
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: e7d4b9173c45ea64a3cc42487ba61dea
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: b6d37feeab1eec1182d85292d55ae196
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: e7d4b9173c45ea64a3cc42487ba61dea
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
Script: {instanceID: 0}
|
||||
- Class: 21
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 48
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: e982ad7d1eca06640864d29509a997f8, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 15f5bd88ea349c4488f6e34e51cecd59, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 271b50f7241504b49a6a7493d13721e7, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 6153f65e187d768439e5be590953dfb1, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89f1d49b50a31514787b4e268b1c73bb, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 7b6c36ccd2295994fa13a1cc24de7db4, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 89cec4ea05849a04981cec13b33447ea, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: fa3a4570827eff04fb79b0bdd622e953, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 50d2a45eec2b4a34e9aa449adf569f10, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 128
|
||||
Script: {instanceID: 0}
|
||||
- Class: 213
|
||||
Script: {instanceID: 0}
|
||||
- Class: 222
|
||||
Script: {instanceID: 0}
|
||||
- Class: 224
|
||||
Script: {instanceID: 0}
|
||||
- Class: 328
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.ArgumentCache
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentCallGroup
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.Events.PersistentListenerMode
|
||||
- AssemblyName: UnityEngine.CoreModule
|
||||
ClassName: UnityEngine.RectOffset
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.EventSystems.EventTrigger/Entry
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.EventSystems.EventTrigger/TriggerEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.AnimationTriggers
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Button/ButtonClickedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ColorBlock
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.FontData
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Navigation
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.ScrollRect/ScrollRectEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Scrollbar/ScrollEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.Slider/SliderEvent
|
||||
- AssemblyName: UnityEngine.UI
|
||||
ClassName: UnityEngine.UI.SpriteState
|
||||
Assets:
|
||||
- "Assets/Res/ui/safetylearningpage/\u666E\u901A\u80CC\u666F.png"
|
||||
- Assets/Res/ui/safetylearningpage/Group 152.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u9519\u8BEFicon.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u5168\u5C4F\u6846.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u64AD\u653E.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u9009\u4E2D.png"
|
||||
- Assets/Res/ui/safetylearningpage/Ellipse 29.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u6B63\u786E\u80CC\u666F.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u89E3\u6790.prefab"
|
||||
- Assets/Res/ui/safetylearningpage/Rectangle 165.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u95EE\u9898.prefab"
|
||||
- "Assets/Res/ui/safetylearningpage/\u5168\u5C4F\u56FE\u6807.png"
|
||||
- Assets/Res/ui/safetylearningpage/Group 146.png
|
||||
- "Assets/Res/ui/safetylearningpage/\u64AD\u653E\u5668\u80CC\u666F.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u9898\u76EE.prefab"
|
||||
- "Assets/Res/ui/safetylearningpage/\u9519\u8BEF\u80CC\u666F.png"
|
||||
- "Assets/Res/ui/safetylearningpage/\u6B63\u786Eicon.png"
|
||||
- Assets/Res/ui/safetylearningpage/Rectangle 119.png
|
||||
- Assets/Res/ui/safetylearningpage/safetylearningPage.prefab
|
||||
Dependencies:
|
||||
- D:/unity_project/Kill/AssetBundles/Android/ui_common.ab
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7cd428f8995d2134da545eab86700270
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
7
Assets/StreamingAssets/ui_safetylearningpage.ab.meta
Normal file
7
Assets/StreamingAssets/ui_safetylearningpage.ab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5cbccd02009b43544b4051a1774b1b13
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user