From 5079d6304c12f8cbf852fce09fb3155ac9db4359 Mon Sep 17 00:00:00 2001
From: bzx <496597135@qq.com>
Date: Tue, 5 Aug 2025 12:06:31 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=B7=BB=E5=8A=A0=E4=BD=93?=
=?UTF-8?q?=E6=84=9F=E6=9C=8D=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/.idea.FutureMen/.idea/.gitignore | 13 +
.idea/.idea.FutureMen/.idea/encodings.xml | 4 +
.idea/.idea.FutureMen/.idea/indexLayout.xml | 8 +
.idea/.idea.FutureMen/.idea/vcs.xml | 6 +
.../PRO Effects Sci fi FX/Demo/Scripts/RPG.cs | 10 +-
.../Android.meta} | 6 +-
Assets/Plugins/Android/AndroidManifest.xml | 36 +
.../Plugins/Android/AndroidManifest.xml.meta | 7 +
.../Plugins/ThirdParty/Reporter/Reporter.cs | 582 +++-
.../ThirdParty/Reporter/Reporter.cs.meta | 5 +-
Assets/Prefabs/Player.prefab | 252 +-
Assets/Resources/PXR_SDKSettingAsset.asset | 2 +-
Assets/Scenes/Company1Floor.unity | 448 ++-
Assets/Scripts/GameInit.cs | 12 +-
Assets/Scripts/MRInput.cs | 1 +
Assets/Scripts/Manager/GameManager.cs | 7 +
.../Scripts/Manager/TrueGearEffectManager.cs | 235 ++
.../Manager/TrueGearEffectManager.cs.meta | 11 +
Assets/Scripts/Player/Player.cs | 11 +-
Assets/Scripts/UI/LoginPanel.cs | 3 +
Assets/StreamingAssets.meta | 8 +
Assets/StreamingAssets/build_info | 1 +
Assets/StreamingAssets/build_info.meta | 7 +
Assets/TruegearSdk.meta | 8 +
Assets/TruegearSdk/Scripts.meta | 8 +
Assets/TruegearSdk/Scripts/Android.meta | 8 +
.../Scripts/Android/truegear_sdk.aar | Bin 0 -> 53657 bytes
.../Scripts/Android/truegear_sdk.aar.meta | 32 +
Assets/TruegearSdk/Scripts/DeviceData.cs | 9 +
Assets/TruegearSdk/Scripts/DeviceData.cs.meta | 11 +
Assets/TruegearSdk/Scripts/EffectObject.cs | 225 ++
.../TruegearSdk/Scripts/EffectObject.cs.meta | 11 +
.../Scripts/Effect_AutoGenerated.cs | 56 +
.../Scripts/Effect_AutoGenerated.cs.meta | 11 +
Assets/TruegearSdk/Scripts/SimpleJSON.cs | 1434 +++++++++
Assets/TruegearSdk/Scripts/SimpleJSON.cs.meta | 11 +
Assets/TruegearSdk/Scripts/Test.cs | 17 +
Assets/TruegearSdk/Scripts/Test.cs.meta | 11 +
Assets/TruegearSdk/Scripts/TestHaptic.cs | 154 +
Assets/TruegearSdk/Scripts/TestHaptic.cs.meta | 11 +
.../Scripts/TruegearAndroidConnector.cs | 193 ++
.../Scripts/TruegearAndroidConnector.cs.meta | 11 +
Assets/TutorialInfo.meta | 8 +
Assets/TutorialInfo/Icons.meta | 9 +
Assets/TutorialInfo/Icons/Help_Icon.png | Bin 0 -> 18108 bytes
Assets/TutorialInfo/Icons/Help_Icon.png.meta | 128 +
Assets/TutorialInfo/Icons/Mobile 2D.png | Bin 0 -> 5072 bytes
Assets/TutorialInfo/Icons/Mobile 2D.png.meta | 122 +
Assets/TutorialInfo/Layout.wlt | 654 ++++
Assets/TutorialInfo/Layout.wlt.meta | 8 +
Assets/TutorialInfo/Scripts.meta | 9 +
Assets/TutorialInfo/Scripts/Editor.meta | 9 +
.../Scripts/Editor/ReadmeEditor.cs | 242 ++
.../Scripts/Editor/ReadmeEditor.cs.meta | 12 +
Assets/TutorialInfo/Scripts/Readme.cs | 16 +
Assets/TutorialInfo/Scripts/Readme.cs.meta | 12 +
Assets/Unity-Logs-Viewer.meta | 8 +
Assets/Unity-Logs-Viewer/README.md | 40 +
Assets/Unity-Logs-Viewer/README.md.meta | 7 +
Assets/Unity-Logs-Viewer/Reporter.meta | 8 +
Assets/Unity-Logs-Viewer/Reporter/Editor.meta | 5 +
.../Reporter/Editor/ReporterEditor.cs | 94 +
.../Reporter/Editor/ReporterEditor.cs.meta | 8 +
Assets/Unity-Logs-Viewer/Reporter/Images.meta | 5 +
.../Reporter/Images/ComputerIcon.png | Bin 0 -> 5924 bytes
.../Reporter/Images/ComputerIcon.png.meta | 47 +
.../Reporter/Images/Save.png | Bin 0 -> 26883 bytes
.../Reporter/Images/Save.png.meta | 101 +
.../Reporter/Images/UnityIcon.png | Bin 0 -> 7213 bytes
.../Reporter/Images/UnityIcon.png.meta | 47 +
.../Reporter/Images/back.png | Bin 0 -> 5831 bytes
.../Reporter/Images/back.png.meta | 47 +
.../Unity-Logs-Viewer/Reporter/Images/bar.png | Bin 0 -> 3098 bytes
.../Reporter/Images/bar.png.meta | 47 +
.../Reporter/Images/buildFrom.png | Bin 0 -> 6777 bytes
.../Reporter/Images/buildFrom.png.meta | 47 +
.../Reporter/Images/button_active.png | Bin 0 -> 3056 bytes
.../Reporter/Images/button_active.png.meta | 47 +
.../Reporter/Images/chart.png | Bin 0 -> 7209 bytes
.../Reporter/Images/chart.png.meta | 47 +
.../Reporter/Images/clear.png | Bin 0 -> 8116 bytes
.../Reporter/Images/clear.png.meta | 47 +
.../Reporter/Images/clearOnSceneLoaded.png | Bin 0 -> 10569 bytes
.../Images/clearOnSceneLoaded.png.meta | 47 +
.../Reporter/Images/close.png | Bin 0 -> 5784 bytes
.../Reporter/Images/close.png.meta | 47 +
.../Reporter/Images/collapse.png | Bin 0 -> 3936 bytes
.../Reporter/Images/collapse.png.meta | 47 +
.../Reporter/Images/copy.png | Bin 0 -> 5250 bytes
.../Reporter/Images/copy.png.meta | 112 +
.../Reporter/Images/date.png | Bin 0 -> 7184 bytes
.../Reporter/Images/date.png.meta | 47 +
.../Reporter/Images/error_icon.png | Bin 0 -> 4298 bytes
.../Reporter/Images/error_icon.png.meta | 47 +
.../Reporter/Images/even_log.png | Bin 0 -> 2843 bytes
.../Reporter/Images/even_log.png.meta | 47 +
.../Unity-Logs-Viewer/Reporter/Images/fps.png | Bin 0 -> 4112 bytes
.../Reporter/Images/fps.png.meta | 47 +
.../Reporter/Images/graphicCard.png | Bin 0 -> 10861 bytes
.../Reporter/Images/graphicCard.png.meta | 47 +
.../Reporter/Images/info.png | Bin 0 -> 9134 bytes
.../Reporter/Images/info.png.meta | 47 +
.../Reporter/Images/log_icon.png | Bin 0 -> 4880 bytes
.../Reporter/Images/log_icon.png.meta | 47 +
.../Reporter/Images/memory.png | Bin 0 -> 6373 bytes
.../Reporter/Images/memory.png.meta | 47 +
.../Reporter/Images/odd_log.png | Bin 0 -> 2826 bytes
.../Reporter/Images/odd_log.png.meta | 47 +
.../Images/reporterScrollerSkin.guiskin | 1427 +++++++++
.../Images/reporterScrollerSkin.guiskin.meta | 4 +
.../Reporter/Images/scroller_down_arraw.png | Bin 0 -> 3466 bytes
.../Images/scroller_down_arraw.png.meta | 47 +
.../Images/scroller_horizental_back.png | Bin 0 -> 2876 bytes
.../Images/scroller_horizental_back.png.meta | 47 +
.../Images/scroller_horizental_thumb.png | Bin 0 -> 2882 bytes
.../Images/scroller_horizental_thumb.png.meta | 47 +
.../Reporter/Images/scroller_left_arraw.png | Bin 0 -> 3423 bytes
.../Images/scroller_left_arraw.png.meta | 47 +
.../Reporter/Images/scroller_right_arraw.png | Bin 0 -> 3433 bytes
.../Images/scroller_right_arraw.png.meta | 47 +
.../Reporter/Images/scroller_up_arraw.png | Bin 0 -> 3458 bytes
.../Images/scroller_up_arraw.png.meta | 47 +
.../Images/scroller_vertical_back.png | Bin 0 -> 2875 bytes
.../Images/scroller_vertical_back.png.meta | 47 +
.../Images/scroller_vertical_thumb.png | Bin 0 -> 2886 bytes
.../Images/scroller_vertical_thumb.png.meta | 47 +
.../Reporter/Images/search.png | Bin 0 -> 2446 bytes
.../Reporter/Images/search.png.meta | 47 +
.../Reporter/Images/selected.png | Bin 0 -> 2819 bytes
.../Reporter/Images/selected.png.meta | 47 +
.../Reporter/Images/software.png | Bin 0 -> 12708 bytes
.../Reporter/Images/software.png.meta | 47 +
.../Reporter/Images/timer_1.png | Bin 0 -> 5753 bytes
.../Reporter/Images/timer_1.png.meta | 47 +
.../Reporter/Images/user.png | Bin 0 -> 7845 bytes
.../Reporter/Images/user.png.meta | 47 +
.../Reporter/Images/warning_icon.png | Bin 0 -> 3979 bytes
.../Reporter/Images/warning_icon.png.meta | 47 +
.../Reporter/ReporterMessageReceiver.cs | 42 +
.../Reporter/ReporterMessageReceiver.cs.meta | 8 +
Assets/Unity-Logs-Viewer/Reporter/Test.meta | 5 +
.../Reporter/Test/ReporterScene.unity | 472 +++
.../Reporter/Test/ReporterScene.unity.meta | 4 +
.../Unity-Logs-Viewer/Reporter/Test/Rotate.cs | 19 +
.../Reporter/Test/Rotate.cs.meta | 8 +
.../Reporter/Test/TestReporter.cs | 157 +
.../Reporter/Test/TestReporter.cs.meta | 8 +
.../Reporter/Test/test1.unity | 366 +++
.../Reporter/Test/test1.unity.meta | 4 +
.../Reporter/Test/test2.unity | 366 +++
.../Reporter/Test/test2.unity.meta | 4 +
.../ReporterDocumentation.meta | 8 +
.../ReporterDocumentation/GCMem.png | Bin 0 -> 10175 bytes
.../ReporterDocumentation/GCMem.png.meta | 90 +
.../ReporterDocumentation/clear.png | Bin 0 -> 10707 bytes
.../ReporterDocumentation/clear.png.meta | 90 +
.../ReporterDocumentation/clearOnNewScene.png | Bin 0 -> 13166 bytes
.../clearOnNewScene.png.meta | 90 +
.../ReporterDocumentation/collapse.png | Bin 0 -> 7985 bytes
.../ReporterDocumentation/collapse.png.meta | 90 +
.../ReporterDocumentation/error.png | Bin 0 -> 6244 bytes
.../ReporterDocumentation/error.png.meta | 90 +
.../ReporterDocumentation/fps.png | Bin 0 -> 9748 bytes
.../ReporterDocumentation/fps.png.meta | 90 +
.../ReporterDocumentation/index.htm | 98 +
.../ReporterDocumentation/index.htm.meta | 7 +
.../ReporterDocumentation/info.png | Bin 0 -> 10331 bytes
.../ReporterDocumentation/info.png.meta | 90 +
.../ReporterDocumentation/log.png | Bin 0 -> 6909 bytes
.../ReporterDocumentation/log.png.meta | 90 +
.../ReporterDocumentation/scene.png | Bin 0 -> 11278 bytes
.../ReporterDocumentation/scene.png.meta | 90 +
.../ReporterDocumentation/screenShot11.png | Bin 0 -> 174067 bytes
.../screenShot11.png.meta | 90 +
.../ReporterDocumentation/screenShot21.png | Bin 0 -> 142431 bytes
.../screenShot21.png.meta | 90 +
.../ReporterDocumentation/screenShot3.png | Bin 0 -> 42377 bytes
.../screenShot3.png.meta | 90 +
.../ReporterDocumentation/style.css | 2657 +++++++++++++++++
.../ReporterDocumentation/style.css.meta | 7 +
.../ReporterDocumentation/time.png | Bin 0 -> 10032 bytes
.../ReporterDocumentation/time.png.meta | 90 +
.../ReporterDocumentation/warning.png | Bin 0 -> 6740 bytes
.../ReporterDocumentation/warning.png.meta | 90 +
Assets/sucai/BOSS/Materials/SkyMecha_MAT.mat | 2 +-
Assets/sucai/Materials/Material #0.mat | 2 +-
Assets/sucai/开局塔/Materials/color2.mat | 2 +-
Assets/sucai/开局塔/Materials/glass.mat | 2 +-
ProjectSettings/GraphicsSettings.asset | 9 +-
ProjectSettings/InputManager.asset | 192 ++
.../Editor/PXR_SDKBuildCheck.cs | 1 -
.../Runtime/Scripts/PXR_Manager.cs | 5 +-
192 files changed, 14085 insertions(+), 172 deletions(-)
create mode 100644 .idea/.idea.FutureMen/.idea/.gitignore
create mode 100644 .idea/.idea.FutureMen/.idea/encodings.xml
create mode 100644 .idea/.idea.FutureMen/.idea/indexLayout.xml
create mode 100644 .idea/.idea.FutureMen/.idea/vcs.xml
rename Assets/{FR2_Cache.asset.meta => Plugins/Android.meta} (54%)
create mode 100644 Assets/Plugins/Android/AndroidManifest.xml
create mode 100644 Assets/Plugins/Android/AndroidManifest.xml.meta
create mode 100644 Assets/Scripts/Manager/TrueGearEffectManager.cs
create mode 100644 Assets/Scripts/Manager/TrueGearEffectManager.cs.meta
create mode 100644 Assets/StreamingAssets.meta
create mode 100644 Assets/StreamingAssets/build_info
create mode 100644 Assets/StreamingAssets/build_info.meta
create mode 100644 Assets/TruegearSdk.meta
create mode 100644 Assets/TruegearSdk/Scripts.meta
create mode 100644 Assets/TruegearSdk/Scripts/Android.meta
create mode 100644 Assets/TruegearSdk/Scripts/Android/truegear_sdk.aar
create mode 100644 Assets/TruegearSdk/Scripts/Android/truegear_sdk.aar.meta
create mode 100644 Assets/TruegearSdk/Scripts/DeviceData.cs
create mode 100644 Assets/TruegearSdk/Scripts/DeviceData.cs.meta
create mode 100644 Assets/TruegearSdk/Scripts/EffectObject.cs
create mode 100644 Assets/TruegearSdk/Scripts/EffectObject.cs.meta
create mode 100644 Assets/TruegearSdk/Scripts/Effect_AutoGenerated.cs
create mode 100644 Assets/TruegearSdk/Scripts/Effect_AutoGenerated.cs.meta
create mode 100644 Assets/TruegearSdk/Scripts/SimpleJSON.cs
create mode 100644 Assets/TruegearSdk/Scripts/SimpleJSON.cs.meta
create mode 100644 Assets/TruegearSdk/Scripts/Test.cs
create mode 100644 Assets/TruegearSdk/Scripts/Test.cs.meta
create mode 100644 Assets/TruegearSdk/Scripts/TestHaptic.cs
create mode 100644 Assets/TruegearSdk/Scripts/TestHaptic.cs.meta
create mode 100644 Assets/TruegearSdk/Scripts/TruegearAndroidConnector.cs
create mode 100644 Assets/TruegearSdk/Scripts/TruegearAndroidConnector.cs.meta
create mode 100644 Assets/TutorialInfo.meta
create mode 100644 Assets/TutorialInfo/Icons.meta
create mode 100644 Assets/TutorialInfo/Icons/Help_Icon.png
create mode 100644 Assets/TutorialInfo/Icons/Help_Icon.png.meta
create mode 100644 Assets/TutorialInfo/Icons/Mobile 2D.png
create mode 100644 Assets/TutorialInfo/Icons/Mobile 2D.png.meta
create mode 100644 Assets/TutorialInfo/Layout.wlt
create mode 100644 Assets/TutorialInfo/Layout.wlt.meta
create mode 100644 Assets/TutorialInfo/Scripts.meta
create mode 100644 Assets/TutorialInfo/Scripts/Editor.meta
create mode 100644 Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs
create mode 100644 Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta
create mode 100644 Assets/TutorialInfo/Scripts/Readme.cs
create mode 100644 Assets/TutorialInfo/Scripts/Readme.cs.meta
create mode 100644 Assets/Unity-Logs-Viewer.meta
create mode 100644 Assets/Unity-Logs-Viewer/README.md
create mode 100644 Assets/Unity-Logs-Viewer/README.md.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Editor.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Editor/ReporterEditor.cs
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Editor/ReporterEditor.cs.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/ComputerIcon.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/ComputerIcon.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/Save.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/Save.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/UnityIcon.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/UnityIcon.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/back.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/back.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/bar.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/bar.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/buildFrom.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/buildFrom.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/button_active.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/button_active.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/chart.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/chart.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/clear.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/clear.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/clearOnSceneLoaded.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/clearOnSceneLoaded.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/close.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/close.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/collapse.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/collapse.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/copy.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/copy.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/date.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/date.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/error_icon.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/error_icon.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/even_log.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/even_log.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/fps.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/fps.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/graphicCard.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/graphicCard.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/info.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/info.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/log_icon.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/log_icon.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/memory.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/memory.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/odd_log.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/odd_log.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/reporterScrollerSkin.guiskin
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/reporterScrollerSkin.guiskin.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_down_arraw.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_down_arraw.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_horizental_back.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_horizental_back.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_horizental_thumb.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_horizental_thumb.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_left_arraw.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_left_arraw.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_right_arraw.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_right_arraw.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_up_arraw.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_up_arraw.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_vertical_back.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_vertical_back.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_vertical_thumb.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/scroller_vertical_thumb.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/search.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/search.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/selected.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/selected.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/software.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/software.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/timer_1.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/timer_1.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/user.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/user.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/warning_icon.png
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Images/warning_icon.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/ReporterMessageReceiver.cs
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/ReporterMessageReceiver.cs.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/ReporterScene.unity
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/ReporterScene.unity.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/Rotate.cs
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/Rotate.cs.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/TestReporter.cs
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/TestReporter.cs.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/test1.unity
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/test1.unity.meta
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/test2.unity
create mode 100644 Assets/Unity-Logs-Viewer/Reporter/Test/test2.unity.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/GCMem.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/GCMem.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/clear.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/clear.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/clearOnNewScene.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/clearOnNewScene.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/collapse.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/collapse.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/error.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/error.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/fps.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/fps.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/index.htm
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/index.htm.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/info.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/info.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/log.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/log.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/scene.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/scene.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/screenShot11.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/screenShot11.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/screenShot21.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/screenShot21.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/screenShot3.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/screenShot3.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/style.css
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/style.css.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/time.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/time.png.meta
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/warning.png
create mode 100644 Assets/Unity-Logs-Viewer/ReporterDocumentation/warning.png.meta
diff --git a/.idea/.idea.FutureMen/.idea/.gitignore b/.idea/.idea.FutureMen/.idea/.gitignore
new file mode 100644
index 00000000..a7177042
--- /dev/null
+++ b/.idea/.idea.FutureMen/.idea/.gitignore
@@ -0,0 +1,13 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# Rider 忽略的文件
+/.idea.FutureMen.iml
+/contentModel.xml
+/projectSettingsUpdater.xml
+/modules.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.FutureMen/.idea/encodings.xml b/.idea/.idea.FutureMen/.idea/encodings.xml
new file mode 100644
index 00000000..df87cf95
--- /dev/null
+++ b/.idea/.idea.FutureMen/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.FutureMen/.idea/indexLayout.xml b/.idea/.idea.FutureMen/.idea/indexLayout.xml
new file mode 100644
index 00000000..7b08163c
--- /dev/null
+++ b/.idea/.idea.FutureMen/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.FutureMen/.idea/vcs.xml b/.idea/.idea.FutureMen/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/.idea.FutureMen/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Knife/PRO Effects Sci fi FX/Demo/Scripts/RPG.cs b/Assets/Knife/PRO Effects Sci fi FX/Demo/Scripts/RPG.cs
index d125858b..d10b5fdf 100644
--- a/Assets/Knife/PRO Effects Sci fi FX/Demo/Scripts/RPG.cs
+++ b/Assets/Knife/PRO Effects Sci fi FX/Demo/Scripts/RPG.cs
@@ -12,28 +12,28 @@ namespace Knife.Effects.SimpleController
///
/// Projectile spawn point.
///
- [SerializeField] [Tooltip("Projectile spawn point")] private Transform projectileSpawnPoint;
+ [Tooltip("Projectile spawn point")] private Transform _projectileSpawnPoint;
///
/// Projectile prefab.
///
- [SerializeField] [Tooltip("Projectile prefab")] private GameObject projectilePrefab;
+ [Tooltip("Projectile prefab")] private GameObject _projectilePrefab;
///
/// Player root transform.
///
- [SerializeField] [Tooltip("Player root transform")] private GameObject playerRoot;
+ [Tooltip("Player root transform")] private GameObject _playerRoot;
private Collider[] playerColliders;
protected override void OnEnableHook()
{
- playerColliders = playerRoot.GetComponents();
+ playerColliders = _playerRoot.GetComponents();
}
protected override void Shot()
{
PlayFX();
handsAnimator.Play("Shot", 0, 0);
- var instance = Instantiate(projectilePrefab, projectileSpawnPoint.position, projectileSpawnPoint.rotation);
+ var instance = Instantiate(_projectilePrefab, _projectileSpawnPoint.position, _projectileSpawnPoint.rotation);
var ignoreCollision = instance.GetComponent();
if (ignoreCollision != null)
{
diff --git a/Assets/FR2_Cache.asset.meta b/Assets/Plugins/Android.meta
similarity index 54%
rename from Assets/FR2_Cache.asset.meta
rename to Assets/Plugins/Android.meta
index 53562131..9a494bff 100644
--- a/Assets/FR2_Cache.asset.meta
+++ b/Assets/Plugins/Android.meta
@@ -1,8 +1,8 @@
fileFormatVersion: 2
-guid: 916708e003318dc4f8bc796d94c431fc
-NativeFormatImporter:
+guid: 04c134676ce27fa46a96a4bfecb7e1af
+folderAsset: yes
+DefaultImporter:
externalObjects: {}
- mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml
new file mode 100644
index 00000000..99bd5ac3
--- /dev/null
+++ b/Assets/Plugins/Android/AndroidManifest.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Plugins/Android/AndroidManifest.xml.meta b/Assets/Plugins/Android/AndroidManifest.xml.meta
new file mode 100644
index 00000000..a3f53ff7
--- /dev/null
+++ b/Assets/Plugins/Android/AndroidManifest.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7cb8fbf21ffcf5d40933baf255eb46db
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/ThirdParty/Reporter/Reporter.cs b/Assets/Plugins/ThirdParty/Reporter/Reporter.cs
index 04f8487f..3131a9c5 100644
--- a/Assets/Plugins/ThirdParty/Reporter/Reporter.cs
+++ b/Assets/Plugins/ThirdParty/Reporter/Reporter.cs
@@ -1,4 +1,4 @@
-#if UNITY_CHANGE1 || UNITY_CHANGE2 || UNITY_CHANGE3
+#if UNITY_CHANGE1 || UNITY_CHANGE2 || UNITY_CHANGE3 || UNITY_CHANGE4
#warning UNITY_CHANGE has been set manually
#elif UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7
#define UNITY_CHANGE1
@@ -7,21 +7,29 @@
#else
#define UNITY_CHANGE3
#endif
+#if UNITY_2018_3_OR_NEWER
+#define UNITY_CHANGE4
+#endif
//use UNITY_CHANGE1 for unity older than "unity 5"
//use UNITY_CHANGE2 for unity 5.0 -> 5.3
-//use UNITY_CHANGE3 for unity 5.3 (fix for new SceneManger system )
-
+//use UNITY_CHANGE3 for unity 5.3 (fix for new SceneManger system)
+//use UNITY_CHANGE4 for unity 2018.3 (Networking system)
using UnityEngine;
+using System.IO;
using System.Collections;
using System.Collections.Generic;
#if UNITY_CHANGE3
using UnityEngine.SceneManagement;
#endif
+#if UNITY_CHANGE4
+using UnityEngine.Networking;
+#endif
[System.Serializable]
-public class Images {
+public class Images
+{
public Texture2D clearImage;
public Texture2D collapseImage;
public Texture2D clearOnNewSceneImage;
@@ -33,8 +41,10 @@ public class Images {
public Texture2D dateImage;
public Texture2D showFpsImage;
public Texture2D infoImage;
- public Texture2D searchImage;
- public Texture2D closeImage;
+ public Texture2D saveLogsImage;
+ public Texture2D searchImage;
+ public Texture2D copyImage;
+ public Texture2D closeImage;
public Texture2D buildFromImage;
public Texture2D systemInfoImage;
@@ -61,38 +71,44 @@ public class Images {
//or your finger (touch and drag) on the screen to show all these logs
//no coding is required
-public class Reporter : MonoBehaviour {
+public class Reporter : MonoBehaviour
+{
- public enum _LogType {
- Assert = LogType.Assert,
- Error = LogType.Error,
+ public enum _LogType
+ {
+ Assert = LogType.Assert,
+ Error = LogType.Error,
Exception = LogType.Exception,
- Log = LogType.Log,
- Warning = LogType.Warning,
+ Log = LogType.Log,
+ Warning = LogType.Warning,
}
- public class Sample {
+ public class Sample
+ {
public float time;
public byte loadedScene;
public float memory;
public float fps;
public string fpsText;
- public static float MemSize() {
+ public static float MemSize()
+ {
float s = sizeof(float) + sizeof(byte) + sizeof(float) + sizeof(float);
return s;
}
- public string GetSceneName() {
- if ((int)loadedScene == -1)
+ public string GetSceneName()
+ {
+ if (loadedScene == 255)
return "AssetBundleScene";
return scenes[loadedScene];
}
}
- List samples = new List(60 * 60 * 60);
+ List samples = new List();
- public class Log {
+ public class Log
+ {
public int count = 1;
public _LogType logType;
public string condition;
@@ -101,10 +117,12 @@ public class Reporter : MonoBehaviour {
//public string objectName="" ;//object who send error
//public string rootName =""; //root of object send error
- public Log CreateCopy() {
+ public Log CreateCopy()
+ {
return (Log)this.MemberwiseClone();
}
- public float GetMemoryUsage() {
+ public float GetMemoryUsage()
+ {
return (float)(sizeof(int) +
sizeof(_LogType) +
condition.Length * sizeof(char) +
@@ -125,7 +143,7 @@ public class Reporter : MonoBehaviour {
//to save memory
Dictionary cachedString = new Dictionary();
- [System.NonSerialized]
+ [HideInInspector]
//show hide In Game Logs
public bool show = false;
//collapse logs
@@ -172,12 +190,17 @@ public class Reporter : MonoBehaviour {
bool showMemButton = true;
bool showFpsButton = true;
bool showSearchText = true;
+ bool showCopyButton = true;
+ bool showSaveButton = true;
+ string buildDate;
string logDate;
float logsMemUsage;
float graphMemUsage;
- public float TotalMemUsage {
- get {
+ public float TotalMemUsage
+ {
+ get
+ {
return logsMemUsage + graphMemUsage;
}
}
@@ -185,17 +208,20 @@ public class Reporter : MonoBehaviour {
public string UserData = "";
//frame rate per second
public float fps;
+ public string fpsText;
//List snapshots = new List() ;
- enum ReportView {
+ enum ReportView
+ {
None,
Logs,
Info,
Snapshot,
}
ReportView currentView = ReportView.Logs;
- enum DetailView {
+ enum DetailView
+ {
None,
StackTrace,
Graph,
@@ -221,8 +247,10 @@ public class Reporter : MonoBehaviour {
GUIContent showFpsContent;
//GUIContent graphContent;
GUIContent infoContent;
+ GUIContent saveLogsContent;
GUIContent searchContent;
- GUIContent closeContent;
+ GUIContent copyContent;
+ GUIContent closeContent;
GUIContent buildFromContent;
GUIContent systemInfoContent;
@@ -264,46 +292,45 @@ public class Reporter : MonoBehaviour {
string deviceModel;
string deviceType;
string deviceName;
- string deviceId;
string graphicsMemorySize;
#if !UNITY_CHANGE1
string maxTextureSize;
#endif
string systemMemorySize;
- void Awake() {
- if (!Initialized) {
+ void Awake()
+ {
+ if (!Initialized)
Initialize();
- }
- SceneManager.sceneLoaded += (scene, mode) => {
- if (clearOnNewSceneLoaded)
- clear();
#if UNITY_CHANGE3
- currentScene = SceneManager.GetActiveScene().name;
-#else
- currentScene = Application.loadedLevelName;
+ SceneManager.sceneLoaded += _OnLevelWasLoaded;
#endif
- };
- }
+ }
- void OnEnable() {
+ private void OnDestroy()
+ {
+#if UNITY_CHANGE3
+ SceneManager.sceneLoaded -= _OnLevelWasLoaded;
+#endif
+ }
+
+ void OnEnable()
+ {
if (logs.Count == 0)//if recompile while in play mode
clear();
}
- void OnDisable() {
+ void OnDisable()
+ {
}
- private void OnDestroy() {
- created = false;
- }
-
- void addSample() {
+ void addSample()
+ {
Sample sample = new Sample();
sample.fps = fps;
- sample.fpsText = this.fps.ToString("0.0");
+ sample.fpsText = fpsText;
#if UNITY_CHANGE3
sample.loadedScene = (byte)SceneManager.GetActiveScene().buildIndex;
#else
@@ -316,13 +343,18 @@ public class Reporter : MonoBehaviour {
graphMemUsage = (samples.Count * Sample.MemSize()) / 1024 / 1024;
}
-
- [System.NonSerialized]
public bool Initialized = false;
- public void Initialize() {
+ public void Initialize()
+ {
if (!created) {
+ try {
+ gameObject.SendMessage("OnPreStart");
+ }
+ catch (System.Exception e) {
+ Debug.LogException(e);
+ }
#if UNITY_CHANGE3
- scenes = new string[SceneManager.sceneCountInBuildSettings];
+ scenes = new string[ SceneManager.sceneCountInBuildSettings ];
currentScene = SceneManager.GetActiveScene().name;
#else
scenes = new string[Application.levelCount];
@@ -338,7 +370,8 @@ public class Reporter : MonoBehaviour {
#endif
created = true;
//addSample();
- } else {
+ }
+ else {
Debug.LogWarning("tow manager is exists delete the second");
DestroyImmediate(gameObject, true);
return;
@@ -357,8 +390,10 @@ public class Reporter : MonoBehaviour {
dateContent = new GUIContent("", images.dateImage, "Date");
showFpsContent = new GUIContent("", images.showFpsImage, "Show Hide fps");
infoContent = new GUIContent("", images.infoImage, "Information about application");
- searchContent = new GUIContent("", images.searchImage, "Search for logs");
- closeContent = new GUIContent("", images.closeImage, "Hide logs");
+ saveLogsContent = new GUIContent("", images.saveLogsImage, "Save logs to device");
+ searchContent = new GUIContent("", images.searchImage, "Search for logs");
+ copyContent = new GUIContent("", images.copyImage, "Copy log to clipboard");
+ closeContent = new GUIContent("", images.closeImage, "Hide logs");
userContent = new GUIContent("", images.userImage, "User");
buildFromContent = new GUIContent("", images.buildFromImage, "Build From");
@@ -395,9 +430,11 @@ public class Reporter : MonoBehaviour {
showMemButton = (PlayerPrefs.GetInt("Reporter_showMemButton", 1) == 1) ? true : false;
showFpsButton = (PlayerPrefs.GetInt("Reporter_showFpsButton", 1) == 1) ? true : false;
showSearchText = (PlayerPrefs.GetInt("Reporter_showSearchText", 1) == 1) ? true : false;
+ showCopyButton = (PlayerPrefs.GetInt("Reporter_showCopyButton", 1) == 1) ? true : false;
+ showSaveButton = (PlayerPrefs.GetInt("Reporter_showSaveButton", 1) == 1) ? true : false;
- initializeStyle();
+ initializeStyle();
Initialized = true;
@@ -408,7 +445,6 @@ public class Reporter : MonoBehaviour {
deviceModel = SystemInfo.deviceModel.ToString();
deviceType = SystemInfo.deviceType.ToString();
deviceName = SystemInfo.deviceName.ToString();
- this.deviceId = SystemInfo.deviceUniqueIdentifier;
graphicsMemorySize = SystemInfo.graphicsMemorySize.ToString();
#if !UNITY_CHANGE1
maxTextureSize = SystemInfo.maxTextureSize.ToString();
@@ -417,7 +453,8 @@ public class Reporter : MonoBehaviour {
}
- void initializeStyle() {
+ void initializeStyle()
+ {
int paddingX = (int)(size.x * 0.2f);
int paddingY = (int)(size.y * 0.2f);
nonStyle = new GUIStyle();
@@ -556,12 +593,15 @@ public class Reporter : MonoBehaviour {
//inGameLogsScrollerSkin.verticalScrollbar.fixedWidth = size.x * 2;
}
- void Start() {
+ void Start()
+ {
logDate = System.DateTime.Now.ToString();
+ StartCoroutine("readInfo");
}
//clear all logs
- void clear() {
+ void clear()
+ {
logs.Clear();
collapsedLogs.Clear();
currentLog.Clear();
@@ -581,15 +621,16 @@ public class Reporter : MonoBehaviour {
selectedLog = null;
}
- Rect screenRect;
- Rect toolBarRect;
- Rect logsRect;
- Rect stackRect;
- Rect graphRect;
- Rect graphMinRect;
- Rect graphMaxRect;
- Rect buttomRect;
- Rect detailRect;
+ Rect screenRect = Rect.zero;
+ Rect toolBarRect = Rect.zero;
+ Rect logsRect = Rect.zero;
+ Rect stackRect = Rect.zero;
+ Rect graphRect = Rect.zero;
+ Rect graphMinRect = Rect.zero;
+ Rect graphMaxRect = Rect.zero;
+ Rect buttomRect = Rect.zero ;
+ Vector2 stackRectTopLeft;
+ Rect detailRect = Rect.zero;
Vector2 scrollPosition;
Vector2 scrollPosition2;
@@ -605,7 +646,8 @@ public class Reporter : MonoBehaviour {
int startIndex;
//calculate what is the currentLog : collapsed or not , hide or view warnings ......
- void calculateCurrentLog() {
+ void calculateCurrentLog()
+ {
bool filter = !string.IsNullOrEmpty(filterText);
string _filterText = "";
if (filter)
@@ -628,11 +670,13 @@ public class Reporter : MonoBehaviour {
if (filter) {
if (log.condition.ToLower().Contains(_filterText))
currentLog.Add(log);
- } else {
+ }
+ else {
currentLog.Add(log);
}
}
- } else {
+ }
+ else {
for (int i = 0; i < logs.Count; i++) {
Log log = logs[i];
if (log.logType == _LogType.Log && !showLog)
@@ -649,7 +693,8 @@ public class Reporter : MonoBehaviour {
if (filter) {
if (log.condition.ToLower().Contains(_filterText))
currentLog.Add(log);
- } else {
+ }
+ else {
currentLog.Add(log);
}
}
@@ -662,27 +707,29 @@ public class Reporter : MonoBehaviour {
newSelectedIndex = currentLog.IndexOf(collapsedSelected);
if (newSelectedIndex != -1)
scrollPosition.y = newSelectedIndex * size.y;
- } else {
+ }
+ else {
scrollPosition.y = newSelectedIndex * size.y;
}
}
}
- Rect countRect;
- Rect timeRect;
- Rect timeLabelRect;
- Rect sceneRect;
- Rect sceneLabelRect;
- Rect memoryRect;
- Rect memoryLabelRect;
- Rect fpsRect;
- Rect fpsLabelRect;
+ Rect countRect = Rect.zero;
+ Rect timeRect = Rect.zero;
+ Rect timeLabelRect = Rect.zero;
+ Rect sceneRect = Rect.zero;
+ Rect sceneLabelRect = Rect.zero;
+ Rect memoryRect = Rect.zero;
+ Rect memoryLabelRect = Rect.zero;
+ Rect fpsRect = Rect.zero;
+ Rect fpsLabelRect = Rect.zero;
GUIContent tempContent = new GUIContent();
Vector2 infoScrollPosition;
Vector2 oldInfoDrag;
- void DrawInfo() {
+ void DrawInfo()
+ {
GUILayout.BeginArea(screenRect, backStyle);
@@ -702,6 +749,7 @@ public class Reporter : MonoBehaviour {
GUILayout.Space(size.x);
GUILayout.Box(buildFromContent, nonStyle, GUILayout.Width(size.x), GUILayout.Height(size.y));
GUILayout.Space(size.x);
+ GUILayout.Label(buildDate, nonStyle, GUILayout.Height(size.y));
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
@@ -714,8 +762,6 @@ public class Reporter : MonoBehaviour {
GUILayout.Label(deviceType, nonStyle, GUILayout.Height(size.y));
GUILayout.Space(size.x);
GUILayout.Label(deviceName, nonStyle, GUILayout.Height(size.y));
- GUILayout.Space(size.x);
- GUILayout.Label(this.deviceId, nonStyle, GUILayout.Height(size.y));
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
@@ -793,7 +839,7 @@ public class Reporter : MonoBehaviour {
GUILayout.Space(size.x);
GUILayout.Box(showFpsContent, nonStyle, GUILayout.Width(size.x), GUILayout.Height(size.y));
GUILayout.Space(size.x);
- GUILayout.Label(this.fps.ToString("0.0"), nonStyle, GUILayout.Height(size.y));
+ GUILayout.Label(fpsText, nonStyle, GUILayout.Height(size.y));
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
@@ -861,7 +907,8 @@ public class Reporter : MonoBehaviour {
}
- void drawInfo_enableDisableToolBarButtons() {
+ void drawInfo_enableDisableToolBarButtons()
+ {
GUILayout.BeginHorizontal();
GUILayout.Space(size.x);
GUILayout.Label("Hide or Show tool bar buttons", nonStyle, GUILayout.Height(size.y));
@@ -896,7 +943,7 @@ public class Reporter : MonoBehaviour {
showFpsButton = !showFpsButton;
}
tempRect = GUILayoutUtility.GetLastRect();
- GUI.Label(tempRect, this.fps.ToString("0.0"), lowerLeftFontStyle);
+ GUI.Label(tempRect, fpsText, lowerLeftFontStyle);
/*if( GUILayout.Button( graphContent , (showGraph)?buttonActiveStyle:barStyle , GUILayout.Width(size.x*2) ,GUILayout.Height(size.y*2)))
{
showGraph = !showGraph ;
@@ -906,7 +953,15 @@ public class Reporter : MonoBehaviour {
if (GUILayout.Button(searchContent, (showSearchText) ? buttonActiveStyle : barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2))) {
showSearchText = !showSearchText;
}
- tempRect = GUILayoutUtility.GetLastRect();
+ if (GUILayout.Button(copyContent, (showCopyButton) ? buttonActiveStyle : barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2)))
+ {
+ showCopyButton = !showCopyButton;
+ }
+ if (GUILayout.Button(saveLogsContent, (showSaveButton) ? buttonActiveStyle : barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2)))
+ {
+ showSaveButton = !showSaveButton;
+ }
+ tempRect = GUILayoutUtility.GetLastRect();
GUI.TextField(tempRect, filterText, searchStyle);
@@ -914,7 +969,8 @@ public class Reporter : MonoBehaviour {
GUILayout.EndHorizontal();
}
- void DrawReport() {
+ void DrawReport()
+ {
screenRect.x = 0f;
screenRect.y = 0f;
screenRect.width = Screen.width;
@@ -948,7 +1004,8 @@ public class Reporter : MonoBehaviour {
GUILayout.EndArea();
}
- void drawToolBar() {
+ void drawToolBar()
+ {
toolBarRect.x = 0f;
toolBarRect.y = 0f;
@@ -1003,7 +1060,7 @@ public class Reporter : MonoBehaviour {
showFps = !showFps;
}
tempRect = GUILayoutUtility.GetLastRect();
- GUI.Label(tempRect, this.fps.ToString("0.0"), lowerLeftFontStyle);
+ GUI.Label(tempRect, fpsText, lowerLeftFontStyle);
}
/*if( GUILayout.Button( graphContent , (showGraph)?buttonActiveStyle:barStyle , GUILayout.Width(size.x*2) ,GUILayout.Height(size.y*2)))
{
@@ -1022,31 +1079,53 @@ public class Reporter : MonoBehaviour {
}
}
- if (GUILayout.Button(infoContent, barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2))) {
+ if (showCopyButton)
+ {
+ if (GUILayout.Button(copyContent, barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2)))
+ {
+ if (selectedLog == null)
+ GUIUtility.systemCopyBuffer = "No log selected";
+ else
+ GUIUtility.systemCopyBuffer = selectedLog.condition + System.Environment.NewLine + System.Environment.NewLine + selectedLog.stacktrace;
+ }
+ }
+
+ if (showSaveButton)
+ {
+ if (GUILayout.Button(saveLogsContent, barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2)))
+ {
+ SaveLogsToDevice();
+ }
+ }
+
+ if (GUILayout.Button(infoContent, barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2))) {
currentView = ReportView.Info;
}
+
-
- GUILayout.FlexibleSpace();
+ GUILayout.FlexibleSpace();
string logsText = " ";
if (collapse) {
logsText += numOfCollapsedLogs;
- } else {
+ }
+ else {
logsText += numOfLogs;
}
string logsWarningText = " ";
if (collapse) {
logsWarningText += numOfCollapsedLogsWarning;
- } else {
+ }
+ else {
logsWarningText += numOfLogsWarning;
}
string logsErrorText = " ";
if (collapse) {
logsErrorText += numOfCollapsedLogsError;
- } else {
+ }
+ else {
logsErrorText += numOfLogsError;
}
@@ -1082,7 +1161,16 @@ public class Reporter : MonoBehaviour {
GUILayout.EndHorizontal();
if (GUILayout.Button(closeContent, barStyle, GUILayout.Width(size.x * 2), GUILayout.Height(size.y * 2))) {
- doClose();
+ show = false;
+ ReporterGUI gui = gameObject.GetComponent();
+ DestroyImmediate(gui);
+
+ try {
+ gameObject.SendMessage("OnHideReporter");
+ }
+ catch (System.Exception e) {
+ Debug.LogException(e);
+ }
}
@@ -1095,7 +1183,8 @@ public class Reporter : MonoBehaviour {
Rect tempRect;
- void DrawLogs() {
+ void DrawLogs()
+ {
GUILayout.BeginArea(logsRect, backStyle);
@@ -1166,7 +1255,8 @@ public class Reporter : MonoBehaviour {
if (log == selectedLog) {
//selectedLog = log ;
currentLogStyle = selectedLogStyle;
- } else {
+ }
+ else {
}
tempContent.text = log.count.ToString();
@@ -1253,7 +1343,8 @@ public class Reporter : MonoBehaviour {
}
- } else {
+ }
+ else {
if (GUILayout.Button(content, nonStyle, GUILayout.Width(size.x), GUILayout.Height(size.y))) {
//selectedIndex = startIndex + index ;
selectedLog = log;
@@ -1320,7 +1411,8 @@ public class Reporter : MonoBehaviour {
float maxMemoryValue;
float minMemoryValue;
- void drawGraph() {
+ void drawGraph()
+ {
graphRect = stackRect;
graphRect.height = Screen.height * 0.25f;//- size.y ;
@@ -1436,7 +1528,8 @@ public class Reporter : MonoBehaviour {
//GUI.EndGroup();
}
- void drawStack() {
+ void drawStack()
+ {
if (selectedLog != null) {
Vector2 drag = getDrag();
@@ -1452,7 +1545,8 @@ public class Reporter : MonoBehaviour {
Sample selectedSample = null;
try {
selectedSample = samples[selectedLog.sampleId];
- } catch (System.Exception e) {
+ }
+ catch (System.Exception e) {
Debug.LogException(e);
}
@@ -1494,7 +1588,8 @@ public class Reporter : MonoBehaviour {
- } else {
+ }
+ else {
GUILayout.BeginArea(stackRect, backStyle);
GUILayout.EndArea();
GUILayout.BeginArea(buttomRect, backStyle);
@@ -1504,7 +1599,8 @@ public class Reporter : MonoBehaviour {
}
- public void OnGUIDraw() {
+ public void OnGUIDraw()
+ {
if (!show) {
return;
@@ -1523,7 +1619,9 @@ public class Reporter : MonoBehaviour {
logsRect.width = Screen.width;
logsRect.height = Screen.height * 0.75f - size.y * 2f;
+ stackRectTopLeft.x = 0f;
stackRect.x = 0f;
+ stackRectTopLeft.y = Screen.height * 0.75f;
stackRect.y = Screen.height * 0.75f;
stackRect.width = Screen.width;
stackRect.height = Screen.height * 0.25f - size.y;
@@ -1545,11 +1643,121 @@ public class Reporter : MonoBehaviour {
}
+ List gestureDetector = new List();
+ Vector2 gestureSum = Vector2.zero;
+ float gestureLength = 0;
+ int gestureCount = 0;
+ bool isGestureDone()
+ {
+ if (Application.platform == RuntimePlatform.Android ||
+ Application.platform == RuntimePlatform.IPhonePlayer) {
+ if (Input.touches.Length != 1) {
+ gestureDetector.Clear();
+ gestureCount = 0;
+ }
+ else {
+ if (Input.touches[0].phase == TouchPhase.Canceled || Input.touches[0].phase == TouchPhase.Ended)
+ gestureDetector.Clear();
+ else if (Input.touches[0].phase == TouchPhase.Moved) {
+ Vector2 p = Input.touches[0].position;
+ if (gestureDetector.Count == 0 || (p - gestureDetector[gestureDetector.Count - 1]).magnitude > 10)
+ gestureDetector.Add(p);
+ }
+ }
+ }
+ else {
+ if (Input.GetMouseButtonUp(0)) {
+ gestureDetector.Clear();
+ gestureCount = 0;
+ }
+ else {
+ if (Input.GetMouseButton(0)) {
+ Vector2 p = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
+ if (gestureDetector.Count == 0 || (p - gestureDetector[gestureDetector.Count - 1]).magnitude > 10)
+ gestureDetector.Add(p);
+ }
+ }
+ }
+
+ if (gestureDetector.Count < 10)
+ return false;
+
+ gestureSum = Vector2.zero;
+ gestureLength = 0;
+ Vector2 prevDelta = Vector2.zero;
+ for (int i = 0; i < gestureDetector.Count - 2; i++) {
+
+ Vector2 delta = gestureDetector[i + 1] - gestureDetector[i];
+ float deltaLength = delta.magnitude;
+ gestureSum += delta;
+ gestureLength += deltaLength;
+
+ float dot = Vector2.Dot(delta, prevDelta);
+ if (dot < 0f) {
+ gestureDetector.Clear();
+ gestureCount = 0;
+ return false;
+ }
+
+ prevDelta = delta;
+ }
+
+ int gestureBase = (Screen.width + Screen.height) / 4;
+
+ if (gestureLength > gestureBase && gestureSum.magnitude < gestureBase / 2) {
+ gestureDetector.Clear();
+ gestureCount++;
+ if (gestureCount >= numOfCircleToShow)
+ return true;
+ }
+
+ return false;
+ }
+
+ float lastClickTime = -1;
+ bool isDoubleClickDone()
+ {
+ if (Application.platform == RuntimePlatform.Android ||
+ Application.platform == RuntimePlatform.IPhonePlayer) {
+ if (Input.touches.Length != 1) {
+ lastClickTime = -1;
+ }
+ else {
+ if (Input.touches[0].phase == TouchPhase.Began) {
+ if (lastClickTime == -1)
+ lastClickTime = Time.realtimeSinceStartup;
+ else if (Time.realtimeSinceStartup - lastClickTime < 0.2f) {
+ lastClickTime = -1;
+ return true;
+ }
+ else {
+ lastClickTime = Time.realtimeSinceStartup;
+ }
+ }
+ }
+ }
+ else {
+ if (Input.GetMouseButtonDown(0)) {
+ if (lastClickTime == -1)
+ lastClickTime = Time.realtimeSinceStartup;
+ else if (Time.realtimeSinceStartup - lastClickTime < 0.2f) {
+ lastClickTime = -1;
+ return true;
+ }
+ else {
+ lastClickTime = Time.realtimeSinceStartup;
+ }
+ }
+ }
+ return false;
+ }
+
//calculate pos of first click on screen
Vector2 startPos;
Vector2 downPos;
- Vector2 getDownPos() {
+ Vector2 getDownPos()
+ {
if (Application.platform == RuntimePlatform.Android ||
Application.platform == RuntimePlatform.IPhonePlayer) {
@@ -1557,7 +1765,8 @@ public class Reporter : MonoBehaviour {
downPos = Input.touches[0].position;
return downPos;
}
- } else {
+ }
+ else {
if (Input.GetMouseButtonDown(0)) {
downPos.x = Input.mousePosition.x;
downPos.y = Input.mousePosition.y;
@@ -1570,7 +1779,8 @@ public class Reporter : MonoBehaviour {
//calculate drag amount , this is used for scrolling
Vector2 mousePosition;
- Vector2 getDrag() {
+ Vector2 getDrag()
+ {
if (Application.platform == RuntimePlatform.Android ||
Application.platform == RuntimePlatform.IPhonePlayer) {
@@ -1578,18 +1788,21 @@ public class Reporter : MonoBehaviour {
return Vector2.zero;
}
return Input.touches[0].position - downPos;
- } else {
+ }
+ else {
if (Input.GetMouseButton(0)) {
mousePosition = Input.mousePosition;
return mousePosition - downPos;
- } else {
+ }
+ else {
return Vector2.zero;
}
}
}
//calculate the start index of visible log
- void calculateStartIndex() {
+ void calculateStartIndex()
+ {
startIndex = (int)(scrollPosition.y / size.y);
startIndex = Mathf.Clamp(startIndex, 0, currentLog.Count);
}
@@ -1605,26 +1818,31 @@ public class Reporter : MonoBehaviour {
float lastUpdate2 = 0;
#endif
- void doShow() {
+ void doShow()
+ {
show = true;
currentView = ReportView.Logs;
gameObject.AddComponent();
+
+
+ try {
+ gameObject.SendMessage("OnShowReporter");
+ }
+ catch (System.Exception e) {
+ Debug.LogException(e);
+ }
}
- void doClose() {
- show = false;
- ReporterGUI gui = gameObject.GetComponent();
- DestroyImmediate(gui);
- }
-
- void Update() {
+ void Update()
+ {
+ fpsText = fps.ToString("0.000");
gcTotalMemory = (((float)System.GC.GetTotalMemory(false)) / 1024 / 1024);
//addSample();
#if UNITY_CHANGE3
- int sceneIndex = SceneManager.GetActiveScene().buildIndex;
- if (sceneIndex != -1 && string.IsNullOrEmpty(scenes[sceneIndex]))
- scenes[SceneManager.GetActiveScene().buildIndex] = SceneManager.GetActiveScene().name;
+ int sceneIndex = SceneManager.GetActiveScene().buildIndex ;
+ if( sceneIndex != -1 && string.IsNullOrEmpty( scenes[sceneIndex] ))
+ scenes[ SceneManager.GetActiveScene().buildIndex ] = SceneManager.GetActiveScene().name ;
#else
int sceneIndex = Application.loadedLevel;
if (sceneIndex != -1 && string.IsNullOrEmpty(scenes[Application.loadedLevel]))
@@ -1632,16 +1850,11 @@ public class Reporter : MonoBehaviour {
#endif
calculateStartIndex();
- if (this.show) {
- if (Input.GetKeyDown(KeyCode.F2)) {
- doClose();
- }
- } else {
- if (Input.GetKeyDown(KeyCode.F2) || Input.touchCount == 4) {//f2键或者4指开启
- doShow();
- }
+ if (!show && isGestureDone()) {
+ doShow();
}
+
if (threadedLogs.Count > 0) {
lock (threadedLogs) {
for (int i = 0; i < threadedLogs.Count; i++) {
@@ -1679,16 +1892,19 @@ public class Reporter : MonoBehaviour {
}
- void CaptureLog(string condition, string stacktrace, LogType type) {
+ void CaptureLog(string condition, string stacktrace, LogType type)
+ {
AddLog(condition, stacktrace, type);
}
- void AddLog(string condition, string stacktrace, LogType type) {
+ void AddLog(string condition, string stacktrace, LogType type)
+ {
float memUsage = 0f;
string _condition = "";
if (cachedString.ContainsKey(condition)) {
_condition = cachedString[condition];
- } else {
+ }
+ else {
_condition = condition;
cachedString.Add(_condition, _condition);
memUsage += (string.IsNullOrEmpty(_condition) ? 0 : _condition.Length * sizeof(char));
@@ -1697,7 +1913,8 @@ public class Reporter : MonoBehaviour {
string _stacktrace = "";
if (cachedString.ContainsKey(stacktrace)) {
_stacktrace = cachedString[stacktrace];
- } else {
+ }
+ else {
_stacktrace = stacktrace;
cachedString.Add(_stacktrace, _stacktrace);
memUsage += (string.IsNullOrEmpty(_stacktrace) ? 0 : _stacktrace.Length * sizeof(char));
@@ -1723,7 +1940,8 @@ public class Reporter : MonoBehaviour {
if (logsDic.ContainsKey(_condition, stacktrace)) {
isNew = false;
logsDic[_condition][stacktrace].count++;
- } else {
+ }
+ else {
isNew = true;
collapsedLogs.Add(log);
logsDic[_condition][stacktrace] = log;
@@ -1774,18 +1992,53 @@ public class Reporter : MonoBehaviour {
scrollPosition.y += size.y;
}
+ try {
+ gameObject.SendMessage("OnLog", log);
+ }
+ catch (System.Exception e) {
+ Debug.LogException(e);
+ }
}
List threadedLogs = new List();
- void CaptureLogThread(string condition, string stacktrace, LogType type) {
+ void CaptureLogThread(string condition, string stacktrace, LogType type)
+ {
Log log = new Log() { condition = condition, stacktrace = stacktrace, logType = (_LogType)type };
lock (threadedLogs) {
threadedLogs.Add(log);
}
}
+#if !UNITY_CHANGE3
+ class Scene
+ {
+ }
+ class LoadSceneMode
+ {
+ }
+ void OnLevelWasLoaded()
+ {
+ _OnLevelWasLoaded( null );
+ }
+#endif
+ //new scene is loaded
+ void _OnLevelWasLoaded( Scene _null1 , LoadSceneMode _null2 )
+ {
+ if (clearOnNewSceneLoaded)
+ clear();
+
+#if UNITY_CHANGE3
+ currentScene = SceneManager.GetActiveScene().name ;
+ Debug.Log( "Scene " + SceneManager.GetActiveScene().name + " is loaded");
+#else
+ currentScene = Application.loadedLevelName;
+ Debug.Log("Scene " + Application.loadedLevelName + " is loaded");
+#endif
+ }
+
//save user config
- void OnApplicationQuit() {
+ void OnApplicationQuit()
+ {
PlayerPrefs.SetInt("Reporter_currentView", (int)currentView);
PlayerPrefs.SetInt("Reporter_show", (show == true) ? 1 : 0);
PlayerPrefs.SetInt("Reporter_collapse", (collapse == true) ? 1 : 0);
@@ -1811,6 +2064,59 @@ public class Reporter : MonoBehaviour {
PlayerPrefs.Save();
}
+ //read build information
+ IEnumerator readInfo()
+ {
+ string prefFile = "build_info";
+ string url = prefFile;
+
+ if (prefFile.IndexOf("://") == -1) {
+ string streamingAssetsPath = Application.streamingAssetsPath;
+ if (streamingAssetsPath == "")
+ streamingAssetsPath = Application.dataPath + "/StreamingAssets/";
+ url = System.IO.Path.Combine(streamingAssetsPath, prefFile);
+ }
+
+ //if (Application.platform != RuntimePlatform.OSXWebPlayer && Application.platform != RuntimePlatform.WindowsWebPlayer)
+ if (!url.Contains("://"))
+ url = "file://" + url;
+
+
+ // float startTime = Time.realtimeSinceStartup;
+#if UNITY_CHANGE4
+ UnityWebRequest www = UnityWebRequest.Get(url);
+ yield return www.SendWebRequest();
+#else
+ WWW www = new WWW(url);
+ yield return www;
+#endif
+
+ if (!string.IsNullOrEmpty(www.error)) {
+ Debug.LogError(www.error);
+ }
+ else {
+#if UNITY_CHANGE4
+ buildDate = www.downloadHandler.text;
+#else
+ buildDate = www.text;
+#endif
+ }
+
+ yield break;
+ }
+
+ private void SaveLogsToDevice()
+ {
+ string filePath = Application.persistentDataPath + "/logs.txt";
+ List fileContentsList = new List();
+ Debug.Log("Saving logs to " + filePath);
+ File.Delete(filePath);
+ for (int i = 0; i < logs.Count; i++)
+ {
+ fileContentsList.Add(logs[i].logType + "\n" + logs[i].condition + "\n" + logs[i].stacktrace);
+ }
+ File.WriteAllLines(filePath, fileContentsList.ToArray());
+ }
}
diff --git a/Assets/Plugins/ThirdParty/Reporter/Reporter.cs.meta b/Assets/Plugins/ThirdParty/Reporter/Reporter.cs.meta
index 09283fde..c9ea4b90 100644
--- a/Assets/Plugins/ThirdParty/Reporter/Reporter.cs.meta
+++ b/Assets/Plugins/ThirdParty/Reporter/Reporter.cs.meta
@@ -1,11 +1,10 @@
fileFormatVersion: 2
guid: 600c02144c4813244abd262cbcbe8825
-timeCreated: 1476853654
-licenseType: Pro
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
- executionOrder: -1000
+ executionOrder: -12000
icon: {instanceID: 0}
userData:
assetBundleName:
diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab
index 42215608..3af4ead8 100644
--- a/Assets/Prefabs/Player.prefab
+++ b/Assets/Prefabs/Player.prefab
@@ -10656,6 +10656,61 @@ Transform:
m_Children: []
m_Father: {fileID: 8800635673009307732}
m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 0}
+--- !u!1 &2180858198043313945
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8276409859194505135}
+ - component: {fileID: 6330160261482280170}
+ m_Layer: 7
+ m_Name: qian_left_down
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &8276409859194505135
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2180858198043313945}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4948796608574586183}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &6330160261482280170
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2180858198043313945}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.23
+ m_Height: 0.64
+ m_Direction: 1
+ m_Center: {x: 0.33, y: -0.33, z: 0.3}
--- !u!1 &2470602220036522963
GameObject:
m_ObjectHideFlags: 0
@@ -20999,6 +21054,37 @@ ParticleSystemRenderer:
m_MeshWeighting2: 1
m_MeshWeighting3: 1
m_MaskInteraction: 0
+--- !u!1 &4340389840830538098
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7712391449711456776}
+ m_Layer: 7
+ m_Name: qian_left_up
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &7712391449711456776
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4340389840830538098}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4948796608574586183}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &4608340059915287238
GameObject:
m_ObjectHideFlags: 0
@@ -21211,7 +21297,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &4948796607817774772
Transform:
m_ObjectHideFlags: 0
@@ -21314,6 +21400,10 @@ GameObject:
- component: {fileID: 1236513869101973597}
- component: {fileID: 2034487098903386869}
- component: {fileID: 373189262018097913}
+ - component: {fileID: 1707855043351598533}
+ - component: {fileID: 3725749376190324970}
+ - component: {fileID: 4466946086566809613}
+ - component: {fileID: 4750601385798454190}
m_Layer: 7
m_Name: Player
m_TagString: Player
@@ -21337,6 +21427,10 @@ Transform:
- {fileID: 8575633883618100031}
- {fileID: 4948796607817774772}
- {fileID: 4948796609349078462}
+ - {fileID: 7712391449711456776}
+ - {fileID: 8276409859194505135}
+ - {fileID: 4782877744894973025}
+ - {fileID: 8303551465144774159}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!82 &4948796608574586187
@@ -21565,6 +21659,98 @@ MonoBehaviour:
Indices:
weaponSelector: {fileID: 0}
player: {fileID: 1236513869101973597}
+--- !u!136 &1707855043351598533
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4948796608574586180}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 2
+ m_Radius: 0.23
+ m_Height: 0.64
+ m_Direction: 1
+ m_Center: {x: 0.33, y: -0.33, z: 0.3}
+--- !u!136 &3725749376190324970
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4948796608574586180}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 2
+ m_Radius: 0.23
+ m_Height: 0.64
+ m_Direction: 1
+ m_Center: {x: -0.21, y: -0.33, z: 0.3}
+--- !u!136 &4466946086566809613
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4948796608574586180}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 2
+ m_Radius: 0.23
+ m_Height: 0.64
+ m_Direction: 1
+ m_Center: {x: -0.21, y: 0.43, z: 0.3}
+--- !u!136 &4750601385798454190
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4948796608574586180}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 2
+ m_Radius: 0.23
+ m_Height: 0.64
+ m_Direction: 1
+ m_Center: {x: 0.26, y: 0.43, z: 0.3}
--- !u!1 &4948796609349078463
GameObject:
m_ObjectHideFlags: 0
@@ -21583,7 +21769,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &4948796609349078462
Transform:
m_ObjectHideFlags: 0
@@ -22726,6 +22912,37 @@ MonoBehaviour:
bulletsLeft: 0
isAudioStop: 0
fireSoundName: bulletEffect
+--- !u!1 &6871309394894440366
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8303551465144774159}
+ m_Layer: 7
+ m_Name: qian_right_down
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &8303551465144774159
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6871309394894440366}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4948796608574586183}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6884228665792059083
GameObject:
m_ObjectHideFlags: 0
@@ -23434,6 +23651,37 @@ MonoBehaviour:
bulletsLeft: 0
isAudioStop: 1
fireSoundName: "\u706B\u7BAD\u70AE"
+--- !u!1 &7535514657036510098
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4782877744894973025}
+ m_Layer: 7
+ m_Name: qian_right_up
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &4782877744894973025
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7535514657036510098}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4948796608574586183}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7541753884224646487
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Resources/PXR_SDKSettingAsset.asset b/Assets/Resources/PXR_SDKSettingAsset.asset
index ec86d9c5..3dd88736 100644
--- a/Assets/Resources/PXR_SDKSettingAsset.asset
+++ b/Assets/Resources/PXR_SDKSettingAsset.asset
@@ -12,6 +12,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8e08befb1867d8945b4f1ddac43e65c5, type: 3}
m_Name: PXR_SDKSettingAsset
m_EditorClassIdentifier:
- ignoreSDKSetting: 0
+ ignoreSDKSetting: 1
doNotShowBuildWarning: 0
appIDChecked: 1
diff --git a/Assets/Scenes/Company1Floor.unity b/Assets/Scenes/Company1Floor.unity
index 344df3f7..c71aa55f 100644
--- a/Assets/Scenes/Company1Floor.unity
+++ b/Assets/Scenes/Company1Floor.unity
@@ -5281,6 +5281,327 @@ MonoBehaviour:
m_Flags: 0
m_Reference: {fileID: 0}
m_ButtonPressPoint: 0.5
+--- !u!1001 &354159613
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 132536, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_Name
+ value: IngameDebugConsole
+ objectReference: {fileID: 0}
+ - target: {fileID: 132536, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 11414302, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_Value
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 11440770, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_PresetInfoIsWorld
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22331464, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_Camera
+ value:
+ objectReference: {fileID: 419651620}
+ - target: {fileID: 22331464, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_RenderMode
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 22400762, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0.00012207031
+ objectReference: {fileID: 0}
+ - target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 213.80646
+ objectReference: {fileID: 0}
+ - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 938.129
+ objectReference: {fileID: 0}
+ - target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 213.80646
+ objectReference: {fileID: 0}
+ - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 1151.9354
+ objectReference: {fileID: 0}
+ - target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 1686.4517
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 600
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.005
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.005
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.005
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 4.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: -2.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0.87
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_ConstrainProportionsScale
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 213.80646
+ objectReference: {fileID: 0}
+ - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 1579.5482
+ objectReference: {fileID: 0}
+ - target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ - target: {fileID: 22477946, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_ConstrainProportionsScale
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 213.80646
+ objectReference: {fileID: 0}
+ - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 320.7097
+ objectReference: {fileID: 0}
+ - target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 213.80646
+ objectReference: {fileID: 0}
+ - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 1365.7418
+ objectReference: {fileID: 0}
+ - target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 403.6129
+ objectReference: {fileID: 0}
+ - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 629.4194
+ objectReference: {fileID: 0}
+ - target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 213.80646
+ objectReference: {fileID: 0}
+ - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 106.90323
+ objectReference: {fileID: 0}
+ - target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: -18
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
--- !u!1 &367725844
GameObject:
m_ObjectHideFlags: 0
@@ -15888,6 +16209,8 @@ Transform:
m_Children:
- {fileID: 398566737836198098}
- {fileID: 1980961103}
+ - {fileID: 1306763404}
+ - {fileID: 1169175029}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1152205476
@@ -16138,6 +16461,37 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
+--- !u!1 &1169175028
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1169175029}
+ m_Layer: 0
+ m_Name: TruegearAndroidConnector
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1169175029
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1169175028}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1132763769}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1172880700
GameObject:
m_ObjectHideFlags: 0
@@ -16395,7 +16749,6 @@ MonoBehaviour:
playerCam: {fileID: 419651620}
leftHand: {fileID: 666635359}
rightHand: {fileID: 353037434}
- tc: {fileID: 869511489}
gamePlace: 0
--- !u!1 &1205552005
GameObject:
@@ -17435,6 +17788,52 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
+--- !u!1 &1306763403
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1306763404}
+ - component: {fileID: 1306763405}
+ m_Layer: 0
+ m_Name: TrueGearEffectManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1306763404
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1306763403}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1132763769}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1306763405
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1306763403}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5dbcd8bb7b4431e45912317e57105206, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ isGetConnect: 0
+ hitParts: []
--- !u!1 &1316810889
GameObject:
m_ObjectHideFlags: 0
@@ -24010,6 +24409,7 @@ GameObject:
- component: {fileID: 1893781698}
- component: {fileID: 1893781697}
- component: {fileID: 1893781701}
+ - component: {fileID: 1893781702}
m_Layer: 0
m_Name: Canvas
m_TagString: Untagged
@@ -24132,6 +24532,50 @@ MonoBehaviour:
m_EditorClassIdentifier:
CreateGroupGameObject: 0
CreateCanvasPerObject: 0
+--- !u!114 &1893781702
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1893781695}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c3cc1b407f337e641ad32a2e91d5b478, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ embeddedEventSystem: {fileID: 1878647291}
+--- !u!1 &1903151665
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1903151666}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1903151666
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1903151665}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 5.1563764, y: 1.7675674, z: 10.612768}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1909598927
GameObject:
m_ObjectHideFlags: 0
@@ -27380,3 +27824,5 @@ SceneRoots:
- {fileID: 705507995}
- {fileID: 1132763769}
- {fileID: 509911535}
+ - {fileID: 1903151666}
+ - {fileID: 354159613}
diff --git a/Assets/Scripts/GameInit.cs b/Assets/Scripts/GameInit.cs
index ae2591f7..ed670ec6 100644
--- a/Assets/Scripts/GameInit.cs
+++ b/Assets/Scripts/GameInit.cs
@@ -2,8 +2,11 @@ using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections;
+using System.Collections.Generic;
+using System.Net.WebSockets;
using DarkTonic.MasterAudio;
using TMPro;
+using TruegearSdk;
using Unity.XR.PXR;
using UnityEngine.XR.Interaction.Toolkit;
@@ -14,7 +17,7 @@ public class GameInit : MonoBehaviour
public Camera playerCam;
public Transform leftHand;
public Transform rightHand;
- public AudioSource tc;
+ public TruegearAndroidConnector androidConnector;
[NonSerialized]
public GameObject HitUI;
@@ -56,6 +59,8 @@ public class GameInit : MonoBehaviour
CloseLine();
}
+
+
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
@@ -87,10 +92,7 @@ public class GameInit : MonoBehaviour
}
}
}
+
- public void StopAudio(Transform tran)
- {
- MasterAudio.StopAllSoundsOfTransform(tran);
- }
}
diff --git a/Assets/Scripts/MRInput.cs b/Assets/Scripts/MRInput.cs
index d3328d4a..ab59926d 100644
--- a/Assets/Scripts/MRInput.cs
+++ b/Assets/Scripts/MRInput.cs
@@ -32,6 +32,7 @@ public class MRInput : MonoBehaviour
///
public void VibrateRightController(float amplitude, int duration, int frequency = 150)
{
+
#if !UNITY_EDITOR && UNITY_ANDROID && (PICO || VIVE)
PXR_Input.SendHapticImpulse(VibrateType.RightController, amplitude, duration, frequency);
#endif
diff --git a/Assets/Scripts/Manager/GameManager.cs b/Assets/Scripts/Manager/GameManager.cs
index a07cc40d..3d0f3d85 100644
--- a/Assets/Scripts/Manager/GameManager.cs
+++ b/Assets/Scripts/Manager/GameManager.cs
@@ -107,14 +107,21 @@ public class GameManager : MonoBehaviour
public int curLevel = 0;
+ private void Awake()
+ {
+
+ }
+
public void Start()
{
Ins = this;
CreatePlayer();
LoginPanel.Show();
+
#if !UNITY_EDITOR
PXR_Enterprise.InitEnterpriseService();
PXR_Enterprise.BindEnterpriseService();
+ TrueGearEffectManager.Ins.StartRequestTrueGear();
#endif
CoroutineTaskManager.Instance.WaitSecondTodo(ShowPlayerUI, 1.5f);
}
diff --git a/Assets/Scripts/Manager/TrueGearEffectManager.cs b/Assets/Scripts/Manager/TrueGearEffectManager.cs
new file mode 100644
index 00000000..abae9d55
--- /dev/null
+++ b/Assets/Scripts/Manager/TrueGearEffectManager.cs
@@ -0,0 +1,235 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using BehaviorDesigner.Runtime.Tasks;
+using TruegearSdk;
+using UnityEngine;
+
+public class TrueGearEffectManager : MonoBehaviour
+{
+
+ public static TrueGearEffectManager Ins;
+
+ private void Awake()
+ {
+ Ins = this;
+
+ isAvailableIndex = 20;
+ GetConnectIndex = 20;
+ AddHitPart();
+#if !UNITY_EDITOR
+ TrueGearEffectManager.Ins.StartRequestTrueGear();
+#endif
+ }
+
+
+ private void Start()
+ {
+
+ }
+
+ public void StartRequestTrueGear()
+ {
+ TruegearAndroidConnector androidConnector = new TruegearAndroidConnector();
+ androidConnector.InitShellJavaObject();
+ androidConnector.RequestPermission();
+ Debug.Log("开始连接");
+ StartCoroutine(TrueGearAndroidConnector());
+ }
+
+ public bool isGetConnect;
+
+ private int isAvailableIndex = 0;
+ private int GetConnectIndex;
+ IEnumerator TrueGearAndroidConnector()
+ {
+ TruegearAndroidConnector androidConnector = TruegearAndroidConnector.Instance;
+ bool res = androidConnector.IsAvailable();
+ Debug.Log("蓝牙是否授权成功:"+res);
+ while (!res&& isAvailableIndex>0)
+ {
+ yield return new WaitForSeconds(1f);
+ Debug.Log("蓝牙尝试连接中....");
+ androidConnector.InitShellJavaObject();
+ androidConnector.RequestPermission();
+ res = androidConnector.IsAvailable();
+ isAvailableIndex--;
+ }
+
+ if (isAvailableIndex <= 0)
+ {
+ Debug.Log("蓝牙授权失败");
+ }
+ else
+ {
+ Debug.Log("蓝牙授权成功");
+ StartScanTrueGear();
+ while (!isGetConnect&& GetConnectIndex>0)
+ {
+ GetScanedDevices();
+ StartConnect();
+ yield return new WaitForSeconds(1);
+ Debug.Log("正在重新连接...");
+ GetConnectIndex--;
+ }
+ }
+ }
+
+ //搜索设备
+ public void StartScanTrueGear()
+ {
+ TruegearAndroidConnector androidConnector = TruegearAndroidConnector.Instance;
+ bool res = androidConnector.IsAvailable();
+ if (res)
+ androidConnector.StartScan();
+ Debug.Log("OnStartScanClick" + res);
+ }
+
+ //获取设备列表
+ public void GetScanedDevices()
+ {
+ TruegearAndroidConnector androidConnector = TruegearAndroidConnector.Instance;
+ bool res = androidConnector.IsAvailable();
+ Debug.Log("OnGetScanedDevicesClick" + res);
+ if (!res)
+ return;
+ List res1 = androidConnector.GetScanedDevices();
+ string str = "";
+ foreach (var item in res1)
+ {
+ str += (string.Format("{0}, {1} ", item.name, item.address));
+ }
+ Debug.Log("OnGetScanedDevicesClick " + str);
+ }
+
+ //开始连接设备
+ public void StartConnect()
+ {
+ TruegearAndroidConnector androidConnector = TruegearAndroidConnector.Instance;
+ bool res = androidConnector.IsAvailable();
+ Debug.Log("OnStartConnectClick" + res);
+ if (!res)
+ return;
+
+ List res1 = androidConnector.GetScanedDevices();
+ Debug.Log(res1.ToString());
+ foreach (var item in res1)
+ {
+ {
+ androidConnector.ConnectToDevice(item.address);
+ Debug.Log(string.Format("Device Connect: {0}, {1}", item.name, item.address));
+ isGetConnect = true;
+ return;
+ }
+ }
+ Debug.Log("No device found");
+ }
+
+ ///
+ /// 断开连接
+ ///
+ public void CloseConnect()
+ {
+ TruegearAndroidConnector androidConnector = TruegearAndroidConnector.Instance;
+ androidConnector.DisconnectFromDevice();
+ }
+
+ private void OnApplicationQuit()
+ {
+ //断开连接
+ Debug.Log("断开连接");
+ CloseConnect();
+ }
+
+
+ ///
+ /// 触发TrueGear震动
+ ///
+ /// 效果名,可自定义
+ /// 作用的电机ID列表
+ /// 起始时间,单位ms
+ /// 结束时间,单位ms
+ /// 起始强度(0-100)
+ /// 结束强度(0-100)
+ /// 强度模式:Const/Fade/FadeInAndOut
+ public void PlayVibrationEffect(
+ string effectName,
+ List motorIndex,
+ int startTime = 0,
+ int endTime = 300,
+ int startIntensity = 30,
+ int endIntensity = 30,
+ string intensityMode = "Const"
+ )
+ {
+ string indexStr = string.Join(",", motorIndex);
+
+ string json = $@"
+ {{
+ ""name"":""{effectName}"",
+ ""uuid"":""{effectName}"",
+ ""keep"":""False"",
+ ""priority"": 0,
+ ""tracks"":[
+ {{
+ ""start_time"":{startTime},
+ ""end_time"":{endTime},
+ ""stop_name"":"""",
+ ""start_intensity"":{startIntensity},
+ ""end_intensity"":{endIntensity},
+ ""intensity_mode"":""{intensityMode}"",
+ ""action_type"":""Shake"",
+ ""once"":""False"",
+ ""interval"":0,
+ ""index"":[{indexStr}]
+ }}
+ ]
+ }}";
+ SendPlayEffectByContent(json);
+ }
+
+ public void SendPlayEffectByContent(string jsonStr)
+ {
+ TruegearAndroidConnector androidConnector = TruegearAndroidConnector.Instance;
+ bool res = androidConnector.IsAvailable();
+ Debug.Log("OnTestClick" + res);
+ if (!res)
+ return;
+
+ androidConnector.SendPlayEffectByContent(jsonStr);
+ }
+ public List hitParts=new List();
+
+ public void AddHitPart()
+ {
+ hitParts.Add("leftUp");
+ hitParts.Add("leftDown");
+ hitParts.Add("rightUp");
+ hitParts.Add("rightDown");
+ }
+ public void OnHit(bool isUp, int index)
+ {
+ List motorIDs = new List();
+ string hitPart= hitParts[index];
+ switch (hitPart)
+ {
+ case "leftUp":
+ motorIDs.AddRange( isUp?new int[] { 0, 1, 4,5 }: new int[] { 100, 101, 104,105 }); break;
+ case "leftDown":
+ motorIDs.AddRange(isUp?new int[] { 8, 9, 12,13 }: new int[] { 108, 109, 112,113 }); break;
+ case "rightUp":
+ motorIDs.AddRange(isUp?new int[] { 2,3,6,7}: new int[] { 102, 103, 106,107 }); break;
+ case "rightDown":
+ motorIDs.AddRange(isUp?new int[] { 10,11,14,15}: new int[] { 114, 115, 118,119 }); break;
+ default:
+ motorIDs.Add(0); break;
+ }
+ PlayVibrationEffect(
+ effectName: $"Hit_{hitPart}",
+ motorIndex: motorIDs,
+ startIntensity: 50,
+ endIntensity: 50,
+ endTime: 400
+ );
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Manager/TrueGearEffectManager.cs.meta b/Assets/Scripts/Manager/TrueGearEffectManager.cs.meta
new file mode 100644
index 00000000..a1c422bf
--- /dev/null
+++ b/Assets/Scripts/Manager/TrueGearEffectManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5dbcd8bb7b4431e45912317e57105206
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Player/Player.cs b/Assets/Scripts/Player/Player.cs
index 9dbf453c..6750d790 100644
--- a/Assets/Scripts/Player/Player.cs
+++ b/Assets/Scripts/Player/Player.cs
@@ -132,7 +132,16 @@ public class Player : MonoBehaviour
{
float curDamage = (GameManager.Ins.buffDef > 0) ? (damage / GameManager.Ins.buffDef) : damage;
SetBlood(-curDamage);
-
+#if !UNITY_EDITOR && UNITY_ANDROID && PICO
+ if (_sender != null)
+ {
+ Vector3 forward = transform.forward;
+ Vector3 directionFormHit=(transform.position-_sender.position).normalized;
+ float angle = Vector3.Angle(forward, directionFormHit);
+ int index = Random.Range(0, 4);
+ TrueGearEffectManager.Ins.OnHit(angle > 90,index);
+ }
+#endif
if (currentHp <= 0 && IsAlive)
{
IsAlive = false;
diff --git a/Assets/Scripts/UI/LoginPanel.cs b/Assets/Scripts/UI/LoginPanel.cs
index 465b3031..3ce9c592 100644
--- a/Assets/Scripts/UI/LoginPanel.cs
+++ b/Assets/Scripts/UI/LoginPanel.cs
@@ -55,6 +55,7 @@ public class LoginPanel : MonoBehaviour
public void Author()
{
+
//延迟请求
MonoSingleton.Instance.WaitSecondTodo(() =>
{
@@ -102,6 +103,8 @@ public class LoginPanel : MonoBehaviour
progressText.text = "0%";
_progress = 0;
_isLogin = false;
+ // GameManager.Ins.InitData();
+ // _isLogin = true;
float curWaitTime = 0;
while (_progress<=90)
{
diff --git a/Assets/StreamingAssets.meta b/Assets/StreamingAssets.meta
new file mode 100644
index 00000000..c7315d7a
--- /dev/null
+++ b/Assets/StreamingAssets.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fb8905bc239c5de4c80a9ab4264dfd40
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/build_info b/Assets/StreamingAssets/build_info
new file mode 100644
index 00000000..9abf076e
--- /dev/null
+++ b/Assets/StreamingAssets/build_info
@@ -0,0 +1 @@
+Build from CHINAMI-UKDLSK3 at 2025/7/31 17:08:06
\ No newline at end of file
diff --git a/Assets/StreamingAssets/build_info.meta b/Assets/StreamingAssets/build_info.meta
new file mode 100644
index 00000000..f68cc167
--- /dev/null
+++ b/Assets/StreamingAssets/build_info.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ba118ce0c024750479d08efc98b1befc
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TruegearSdk.meta b/Assets/TruegearSdk.meta
new file mode 100644
index 00000000..009f1d59
--- /dev/null
+++ b/Assets/TruegearSdk.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4974895698c81cf4ca5e2faf8f1d7615
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TruegearSdk/Scripts.meta b/Assets/TruegearSdk/Scripts.meta
new file mode 100644
index 00000000..1c0137d4
--- /dev/null
+++ b/Assets/TruegearSdk/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 14b6501e71cd08844ba85bd2943886b1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TruegearSdk/Scripts/Android.meta b/Assets/TruegearSdk/Scripts/Android.meta
new file mode 100644
index 00000000..7277a780
--- /dev/null
+++ b/Assets/TruegearSdk/Scripts/Android.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dbb7ec3783353264c9d6a3be0d2b520d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TruegearSdk/Scripts/Android/truegear_sdk.aar b/Assets/TruegearSdk/Scripts/Android/truegear_sdk.aar
new file mode 100644
index 0000000000000000000000000000000000000000..df1a8bf1e6062c9ac2c4183d5a1ed364ac3ac831
GIT binary patch
literal 53657
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