diff --git a/Runtime/GuruAdjust/AdjustService.cs b/Runtime/GuruAdjust/AdjustService.cs
index 7d698df..79dd0f0 100644
--- a/Runtime/GuruAdjust/AdjustService.cs
+++ b/Runtime/GuruAdjust/AdjustService.cs
@@ -53,9 +53,12 @@ namespace Guru
///
///
/// MIR 追踪 AppID
- ///
+ ///
+ /// 初始化完成的时候会返回 AdjustId
///
- public static void StartService(string appToken, string fbAppId = "", Action onInitComplete = null, Action onDeeplinkCallback = null)
+ ///
+ public static void StartService(string appToken, string fbAppId = "", string firebaseId = "", string deviceId = "",
+ Action onInitComplete = null, Action onDeeplinkCallback = null)
{
if (string.IsNullOrEmpty(appToken))
{
@@ -65,7 +68,7 @@ namespace Guru
_onInitComplete = onInitComplete;
- InstallEvent(IPMConfig.FIREBASE_ID, IPMConfig.IPM_DEVICE_ID); // 注入启动参数
+ InstallEvent(firebaseId, deviceId); // 注入启动参数
AdjustEnvironment environment = GetAdjustEnvironment();
AdjustConfig config = new AdjustConfig(appToken, environment);
diff --git a/Runtime/GuruAnalytics/Editor/Dependencies.xml b/Runtime/GuruAnalytics/Editor/Dependencies.xml
index 0828d2a..eb7b1fa 100644
--- a/Runtime/GuruAnalytics/Editor/Dependencies.xml
+++ b/Runtime/GuruAnalytics/Editor/Dependencies.xml
@@ -8,18 +8,20 @@ Sample Dependencies.xml:
-
-
-
+
+
+
-
-
+
+
-
+
+
+
diff --git a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar
new file mode 100644
index 0000000..955b391
Binary files /dev/null and b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar differ
diff --git a/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar.meta b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar.meta
new file mode 100644
index 0000000..83b45e2
--- /dev/null
+++ b/Runtime/GuruAnalytics/Plugins/Android/U3DAnalytics-1.11.1.aar.meta
@@ -0,0 +1,32 @@
+fileFormatVersion: 2
+guid: 8009d3bf70bb4438599a32f6ea601f9d
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar
index 6640250..4be633e 100644
Binary files a/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar and b/Runtime/GuruAnalytics/Plugins/Android/guru-analytics-1.1.1.aar differ
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Experiment.meta b/Runtime/GuruAnalytics/Runtime/Script/Experiment.meta
new file mode 100644
index 0000000..9b07101
--- /dev/null
+++ b/Runtime/GuruAnalytics/Runtime/Script/Experiment.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f6d79ccb59bc4a5791121a696d6695b0
+timeCreated: 1721722422
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs b/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs
index ee97a29..5a63b54 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/GuruAnalytics.cs
@@ -1,6 +1,3 @@
-
-
-
namespace Guru
{
using System;
@@ -11,10 +8,25 @@ namespace Guru
using UnityEngine;
using System.Diagnostics.CodeAnalysis;
+
+ ///
+ /// 自打点初始化配置
+ ///
+ public class GuruAnalyticsInitConfig
+ {
+ public bool usingExtraSettings = false;
+ public string baseUrl = "";
+ public string[] uploadIpAddress = null;
+ public bool enableErrorLog = false;
+ public bool isDebug = false;
+ public Action onInitComplete = null;
+ }
+
+
public class GuruAnalytics
{
// Plugin Version
- private const string Version = "1.11.1";
+ private const string Version = "1.12.0";
public static readonly string Tag = "[ANU]";
private static readonly string ActionName = "logger_error";
@@ -105,20 +117,37 @@ namespace Guru
///
/// 初始化接口
///
- public static void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false,
- bool enableErrorLog = false)
+ public static void Init(string appId, string deviceInfo, GuruAnalyticsInitConfig initConfig, Action onInitComplete = null)
{
Debug.Log($"{Tag} --- Guru Analytics [{Version}] initialing...");
-
if (_instance == null)
{
_instance = new GuruAnalytics();
- _instance.Agent.Init(appId, deviceInfo, onInitComplete, isDebug);
- _instance.EnableErrorLog = enableErrorLog;
+
+#if UNITY_ANDROID
+ if (initConfig.usingExtraSettings && Instance.Agent is AnalyticsAgentAndroid androidAgent)
+ {
+ // 强制转换为 Android 的自打点初始化接口
+ androidAgent.InitAndroidConfig(appId, deviceInfo,
+ initConfig.baseUrl, initConfig.uploadIpAddress, // <--- Android 附加参数
+ onInitComplete,initConfig.isDebug);
+ }
+ else
+ {
+ // 外部(云控)如果关闭使用 Android 自打点附加参数, 则使用正常的启动接口
+ _instance.Agent.Init(appId, deviceInfo, onInitComplete, initConfig.isDebug);
+ }
+#else
+ // iOS 使用正常的启动接口
+ _instance.Agent.Init(appId, deviceInfo, onInitComplete, initConfig.isDebug);
+#endif
+
+ _instance.EnableErrorLog = initConfig.enableErrorLog;
_instance._isReady = true;
}
}
+
///
/// 设置视图名称
///
@@ -450,92 +479,6 @@ namespace Guru
}
}
- /**
- private void ParseWithRaw(string raw)
- {
- var code = (int)AnalyticsCode.Unknown;
- string info;
-
- //------- message send to unity ----------
- Debug.Log($"{Tag} get callback errorInfo:\n{raw}");
-
-
- var patten = "msg\":\"";
- if (raw.Contains(patten))
- {
-
- info = raw.Substring(raw.IndexOf(patten, StringComparison.Ordinal) + patten.Length);
- if (!string.IsNullOrEmpty(info))
- {
- if (info.StartsWith("\"")) info = info.Substring(1, info.Length - 1);
- if (info.EndsWith("\"}}")) info = info.Replace("\"}}", "");
- }
- else
- {
- info = "msg is null";
- }
- }
- else
- {
- info = "no msg property";
- }
-
- try
- {
-
- var idx = raw.IndexOf(patten, StringComparison.Ordinal) + patten.Length;
- string act = raw.Substring(idx, ActionName.Length);
- if (act == ActionName)
- {
- patten = "code\":";
- var patten2 = ",\"msg";
- idx = raw.IndexOf(patten, StringComparison.Ordinal);
- var idx2 = raw.IndexOf(patten2, StringComparison.Ordinal);
-
- var len = idx2 - (idx + patten.Length);
- if (len > 0)
- {
- string c = raw.Substring(idx + patten.Length, len);
- int.TryParse(c, out code);
- }
-
- // Catch target code to report errors
- switch ((AnalyticsCode)code)
- {
- case AnalyticsCode.Network_Lost:
- case AnalyticsCode.ERROR_API:
- case AnalyticsCode.ERROR_RESPONSE:
- case AnalyticsCode.ERROR_CACHE_CONTROL:
- case AnalyticsCode.ERROR_DELETE_EXPIRED:
- case AnalyticsCode.ERROR_LOAD_MARK:
- case AnalyticsCode.ERROR_DNS:
- case AnalyticsCode.ERROR_ZIP:
- OnLoggerErrorEvent(code, info);
- return;
- }
-
- return;
- }
-
- }
- catch (Exception ex)
- {
- Debug.LogError($"{Tag} Catch ex: {ex}\tJson:{raw}");
- Analytics.LogCrashlytics(raw, false);
- Analytics.LogCrashlytics($"{Tag} --- Json:{raw} Ex:{ex}");
- OnLoggerErrorEvent(code, info);
- return;
- }
-
- if (raw.Contains("msg"))
- {
- Analytics.LogCrashlytics(raw, false);
- Analytics.LogCrashlytics($"{Tag} --- format error:{raw}");
- OnLoggerErrorEvent(code, raw.Substring(raw.IndexOf("msg\":", StringComparison.Ordinal) + 5));
- }
- }
- **/
-
private void ReportCodeInfo(int code, string info)
{
var ac = (AnalyticsCode)code;
@@ -558,11 +501,13 @@ namespace Guru
case AnalyticsCode.ERROR_ZIP:
case AnalyticsCode.ERROR_DNS_CACHE:
case AnalyticsCode.CRONET_INTERCEPTOR:
+ case AnalyticsCode.EVENT_LOOKUP:
+ case AnalyticsCode.EVENT_SESSION_ACTIVE:
canCatch = true;
break;
}
- if (code > 100 && code <= 200)
+ if (!canCatch && code is > 100 and <= 200)
{
// 100 < code <= 200
canCatch = true;
@@ -601,6 +546,8 @@ namespace Guru
}
+
+
///
/// 网络状态枚举
///
@@ -608,21 +555,24 @@ namespace Guru
{
Unknown = -1,
- DELETE_EXPIRED = 12,
- UPLOAD_FAIL = 14,
- NETWORK_LOST = 22,
- CRONET_INIT_FAIL = 26,
- CRONET_INIT_EXCEPTION = 27,
+ DELETE_EXPIRED = 12, // 删除过期事件
+ UPLOAD_FAIL = 14, // 上报事件失败
+ NETWORK_LOST = 22, // 网络状态不可用
+ CRONET_INIT_FAIL = 26, // 开启Cronet失败
+ CRONET_INIT_EXCEPTION = 27, // 开启Cronet报错
- ERROR_API = 101,
- ERROR_RESPONSE = 102,
- ERROR_CACHE_CONTROL = 103,
- ERROR_DELETE_EXPIRED = 104,
- ERROR_LOAD_MARK = 105,
- ERROR_DNS = 106,
- ERROR_ZIP = 107,
- ERROR_DNS_CACHE = 108,
- CRONET_INTERCEPTOR = 109,
+ ERROR_API = 101, // 调用api出错
+ ERROR_RESPONSE = 102, // api返回结果错误
+ ERROR_CACHE_CONTROL = 103, // 设置cacheControl出错
+ ERROR_DELETE_EXPIRED = 104, // 删除过期事件出错
+ ERROR_LOAD_MARK = 105, // 从数据库取事件以及更改事件状态为正在上报出错
+ ERROR_DNS = 106, // dns 错误
+ ERROR_ZIP = 107, // zip 错误
+ ERROR_DNS_CACHE = 108, // zip 错误
+ CRONET_INTERCEPTOR = 109, // cronet拦截器
+
+ EVENT_LOOKUP = 1003,
+ EVENT_SESSION_ACTIVE = 1004,
}
}
diff --git a/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs b/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs
index e73e0ac..3a551d6 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/IAnalyticsAgent.cs
@@ -17,7 +17,7 @@ namespace Guru
void SetUid(string uid);
bool IsDebug { get; }
bool EnableErrorLog { get; set; }
- void LogEvent(string eventName, string parameters, int priority = -1);
+ void LogEvent(string eventName, string parameters, int priority = 0);
void ReportEventSuccessRate(); // 上报任务成功率
void SetTch02Value(double value); // 设置太极02数值
void InitCallback(string objName, string method); // 设置回调对象参数
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs
index 97dd967..4740d3d 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentAndroid.cs
@@ -6,6 +6,7 @@ namespace Guru
{
using System;
using UnityEngine;
+ using System.Collections.Generic;
public class AnalyticsAgentAndroid: IAnalyticsAgent
{
@@ -18,14 +19,10 @@ namespace Guru
#endif
private static bool _isDebug = false;
- public static bool UseWorker = true;
- public static bool UseCronet = false;
public static string BaseUrl = "";
#region 工具方法
-
-
///
/// 调用静态方法
///
@@ -80,17 +77,69 @@ namespace Guru
#region 接口实现
- public async void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false)
+ ///
+ /// 默认的启动参数
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Init(string appId, string deviceInfo, Action onInitComplete, bool isDebug = false)
{
_isDebug = isDebug;
string bundleId = Application.identifier;
- // public static void init(String appId, String deviceInfo, String bundleId, boolean isDebug, boolean useWorker, boolean useCronet, String baseUrl)
-
- // TODO: 将来把 CallStatic 转为异步实现
- CallStatic("init", appId, deviceInfo, bundleId, isDebug, UseWorker, UseCronet, BaseUrl); // 调用接口
+ bool useWorker = true;
+ bool useCronet = false;
+ string baseUrl = "";
+ string[] uploadIpAddress = null;
+ CallSDKInit(appId, deviceInfo, bundleId, baseUrl, uploadIpAddress , useWorker, useCronet, isDebug); // 调用接口
+ onInitComplete?.Invoke();
+ }
+
+
+ ///
+ /// 面向 Android 启动专用的 API
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void InitAndroidConfig(string appId, string deviceInfo, string baseUrl, string[]uploadIpAddress,Action onInitComplete = null, bool isDebug = false)
+ {
+ _isDebug = isDebug;
+ string bundleId = Application.identifier;
+ bool useWorker = true;
+ bool useCronet = false;
+ CallSDKInit(appId, deviceInfo, bundleId, baseUrl, uploadIpAddress , useWorker, useCronet, _isDebug); // 调用接口
onInitComplete?.Invoke();
}
+
+
+ /********* Android API **********
+ public static void init(String appId,
+ String deviceInfo,
+ String bundleId,
+ boolean debug,
+ boolean useWorker,
+ boolean enabledCronet,
+ String baseUrl,
+ List uploadIpAddress)
+ */
+ private void CallSDKInit(string appId,
+ string deviceInfo,
+ string bundleId,
+ string baseUrl = "",
+ string[] uploadIpAddress = null,
+ bool useWorker = true,
+ bool useCronet = false,
+ bool isDebug = false)
+ {
+ CallStatic("init", appId, deviceInfo, bundleId, isDebug, useWorker, useCronet, baseUrl, string.Join(",", uploadIpAddress)); // 调用接口
+ }
+
public void SetScreen(string screenName)
{
@@ -134,10 +183,7 @@ namespace Guru
}
public bool IsDebug => CallStatic("isDebug");
- public void LogEvent(string eventName, string parameters, int priority = -1)
- {
- CallStatic("logEvent", eventName, parameters, priority);
- }
+ public void LogEvent(string eventName, string parameters, int priority = 0) => CallStatic("logEvent", eventName, parameters, priority);
public void ReportEventSuccessRate() => CallStatic("reportEventRate");
public void SetTch02Value(double value) => CallStatic("setTch02Value", value);
public void InitCallback(string objName, string method) => CallStatic("initCallback", objName, method);
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs
index 9bcd582..f11df70 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentIOS.cs
@@ -125,7 +125,7 @@ namespace Guru
public bool IsDebug => _isDebug;
- public void LogEvent(string eventName, string data, int priority = -1)
+ public void LogEvent(string eventName, string data, int priority = 0)
{
#if UNITY_IOS
unityLogEvent(eventName, data);
diff --git a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentMock.cs b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentMock.cs
index 3c5e26b..afb0f51 100644
--- a/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentMock.cs
+++ b/Runtime/GuruAnalytics/Runtime/Script/Impl/AnalyticsAgentMock.cs
@@ -92,7 +92,7 @@ namespace Guru
public bool IsDebug => _isDebug;
- public void LogEvent(string eventName, string parameters, int priority = -1)
+ public void LogEvent(string eventName, string parameters, int priority = 0)
{
if (_isShowLog)
{
diff --git a/Runtime/GuruAnalytics/~Sample.meta b/Runtime/GuruAnalytics/~Sample.meta
deleted file mode 100644
index d5d69bb..0000000
--- a/Runtime/GuruAnalytics/~Sample.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 82693d012b64748c8ac997389b0426a7
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.cs b/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.cs
deleted file mode 100644
index ec471ff..0000000
--- a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.cs
+++ /dev/null
@@ -1,143 +0,0 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.UI;
-
-namespace Guru
-{
- public class GuruAnalyticsDemo: MonoBehaviour
- {
- [SerializeField] private bool _isDebug = true;
- [SerializeField] private Button _btnInitSDK;
- [SerializeField] private Button _btnStatus;
- [SerializeField] private Button _btnUserProperties;
- [SerializeField] private Button _btnEvents;
- [SerializeField] private Button _btnEvents2;
- [SerializeField] private Button _btnReport;
- [SerializeField] private Button _btnTestCrash;
-
- // ----------- All Status IDs -----------
- private static readonly string AdjustID = "e35b41522140fa2db9089ef3c78eb8f9";
- private static readonly string FirebaseID = "b7ab5fc399a7bc8725c004943fa82837";
- private static readonly string UID = "BS-YYYYF";
- private static readonly string AdID = "dda3cc2b-5a5e-44cb-8a59-4a0b1b3780fd";
- private static readonly string DeviceID = "e2fb3c5a4c36473648c989bd86a41153";
- private static readonly string AppID = "";
- private static readonly string DeviceInfo = "";
-
-
- private static readonly string ScreenName = "MainMenu";
-
-
-
- private void Awake()
- {
- _btnInitSDK.onClick.AddListener(OnClickInit);
- _btnStatus.onClick.AddListener(OnClickStatus);
- _btnUserProperties.onClick.AddListener(OnClickUserProperties);
- _btnEvents.onClick.AddListener(OnClickEvents);
- _btnEvents2.onClick.AddListener(OnClickEvents2);
- _btnReport.onClick.AddListener(OnClickReport);
- _btnTestCrash.onClick.AddListener(OnClickTestCrash);
-#if !UNITY_IOS
- _btnTestCrash.gameObject.SetActive(false);
-#endif
-
-
- }
-
-
-
- #region Button Callbacks
-
-
- private void OnClickInit()
- {
- Debug.Log($"---- [DEMO] Call Analytics init");
- GuruAnalytics.Init(AppID, DeviceInfo, OnGuruAnalyticsInitComplete, _isDebug);
- }
-
- private void OnGuruAnalyticsInitComplete()
- {
-
- }
-
- private void OnClickStatus()
- {
- Debug.Log($"---- [DEMO] Report Stats IDs: UID:{UID} DeviceID:{DeviceID} FirebaseID:{FirebaseID} AdID:{AdID} AdjustID:{AdjustID}");
- GuruAnalytics.Instance.SetUid(UID);
- GuruAnalytics.Instance.SetDeviceId(DeviceID);
- GuruAnalytics.Instance.SetFirebaseId(FirebaseID);
- GuruAnalytics.Instance.SetAdId(AdID);
- GuruAnalytics.Instance.SetAdjustId(AdjustID);
- }
-
- private void OnClickUserProperties()
- {
- string item_category = "main";
- int level = 7;
- Debug.Log($"---- [DEMO] Call SetUserProperty: item_category:{item_category} level:{level}");
- GuruAnalytics.Instance.SetUserProperty("item_category", item_category);
- GuruAnalytics.Instance.SetUserProperty("level", level.ToString());
- }
-
- private void OnClickEvents()
- {
- Debug.Log($"---- [DEMO] Report Screen: {ScreenName}");
- GuruAnalytics.Instance.SetScreen(ScreenName);
-
- string eventName = "user_get_coin";
- Dictionary data = new Dictionary()
- {
- { "level", 7 },
- { "user_coin", 105L },
- { "win_rate", 21.25f },
- { "b_level", 7 },
- { "result", "retry" }
- };
-
- string s = "---- Data ----\n";
- foreach (var k in data.Keys)
- {
- s += $"-- K:{k} V:{data[k]}\n";
- }
- Debug.Log(s);
-
- Debug.Log($"---- [DEMO] Call LogEvent");
- GuruAnalytics.Instance.LogEvent(eventName, data);
- }
-
- private void OnClickEvents2()
- {
- string eventName = "user_data_loaded";
- GuruAnalytics.Instance.LogEvent(eventName);
- }
-
-
- private void OnClickReport()
- {
- GuruAnalytics.Instance.ReportEventSuccessRate();
- }
-
-
-
- private void OnClickTestCrash()
- {
-#if UNITY_IOS
- Debug.Log($"--> OnClickTestCrash");
- GuruAnalytics.TestCrash();
-#endif
- }
-
-
- #endregion
-
-
-
-
-
-
-
-
- }
-}
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.cs.meta b/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.cs.meta
deleted file mode 100644
index 6d59a46..0000000
--- a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 8fde2a18f7d347408a6b869ee03e7de9
-timeCreated: 1672712830
\ No newline at end of file
diff --git a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.unity b/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.unity
deleted file mode 100644
index c3a87bd..0000000
--- a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.unity
+++ /dev/null
@@ -1,2014 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_OcclusionBakeSettings:
- smallestOccluder: 5
- smallestHole: 0.25
- backfaceThreshold: 100
- m_SceneGUID: 00000000000000000000000000000000
- m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 9
- m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- m_FogMode: 3
- m_FogDensity: 0.01
- m_LinearFogStart: 0
- m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
- m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
- m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
- m_AmbientIntensity: 1
- m_AmbientMode: 0
- m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
- m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
- m_HaloStrength: 0.5
- m_FlareStrength: 1
- m_FlareFadeSpeed: 3
- m_HaloTexture: {fileID: 0}
- m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
- m_DefaultReflectionMode: 0
- m_DefaultReflectionResolution: 128
- m_ReflectionBounces: 1
- m_ReflectionIntensity: 1
- m_CustomReflection: {fileID: 0}
- m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.3731193, g: 0.38073996, b: 0.35872698, a: 1}
- m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 12
- m_GIWorkflowMode: 1
- m_GISettings:
- serializedVersion: 2
- m_BounceScale: 1
- m_IndirectOutputScale: 1
- m_AlbedoBoost: 1
- m_EnvironmentLightingMode: 0
- m_EnableBakedLightmaps: 1
- m_EnableRealtimeLightmaps: 0
- m_LightmapEditorSettings:
- serializedVersion: 12
- m_Resolution: 2
- m_BakeResolution: 40
- m_AtlasSize: 1024
- m_AO: 0
- m_AOMaxDistance: 1
- m_CompAOExponent: 1
- m_CompAOExponentDirect: 0
- m_ExtractAmbientOcclusion: 0
- m_Padding: 2
- m_LightmapParameters: {fileID: 0}
- m_LightmapsBakeMode: 1
- m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
- m_ReflectionCompression: 2
- m_MixedBakeMode: 2
- m_BakeBackend: 1
- m_PVRSampling: 1
- m_PVRDirectSampleCount: 32
- m_PVRSampleCount: 512
- m_PVRBounces: 2
- m_PVREnvironmentSampleCount: 256
- m_PVREnvironmentReferencePointCount: 2048
- m_PVRFilteringMode: 1
- m_PVRDenoiserTypeDirect: 1
- m_PVRDenoiserTypeIndirect: 1
- m_PVRDenoiserTypeAO: 1
- m_PVRFilterTypeDirect: 0
- m_PVRFilterTypeIndirect: 0
- m_PVRFilterTypeAO: 0
- m_PVREnvironmentMIS: 1
- m_PVRCulling: 1
- m_PVRFilteringGaussRadiusDirect: 1
- m_PVRFilteringGaussRadiusIndirect: 5
- m_PVRFilteringGaussRadiusAO: 2
- m_PVRFilteringAtrousPositionSigmaDirect: 0.5
- m_PVRFilteringAtrousPositionSigmaIndirect: 2
- m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ExportTrainingData: 0
- m_TrainingDataDestination: TrainingData
- m_LightProbeSampleCountMultiplier: 4
- m_LightingDataAsset: {fileID: 0}
- m_LightingSettings: {fileID: 0}
---- !u!196 &4
-NavMeshSettings:
- serializedVersion: 2
- m_ObjectHideFlags: 0
- m_BuildSettings:
- serializedVersion: 2
- agentTypeID: 0
- agentRadius: 0.5
- agentHeight: 2
- agentSlope: 45
- agentClimb: 0.4
- ledgeDropHeight: 0
- maxJumpAcrossDistance: 0
- minRegionArea: 2
- manualCellSize: 0
- cellSize: 0.16666667
- manualTileSize: 0
- tileSize: 256
- accuratePlacement: 0
- maxJobWorkers: 0
- preserveTilesOutsideBounds: 0
- debug:
- m_Flags: 0
- m_NavMeshData: {fileID: 0}
---- !u!1 &66634519
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 66634520}
- - component: {fileID: 66634523}
- - component: {fileID: 66634522}
- - component: {fileID: 66634521}
- m_Layer: 5
- m_Name: btn_testcrash
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &66634520
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 66634519}
- 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_Children:
- - {fileID: 728747533}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 6
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &66634521
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 66634519}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 66634522}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!114 &66634522
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 66634519}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.990566, g: 0.6337243, b: 0.43454072, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &66634523
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 66634519}
- m_CullTransparentMesh: 1
---- !u!1 &97229769
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 97229770}
- - component: {fileID: 97229772}
- - component: {fileID: 97229771}
- - component: {fileID: 97229773}
- m_Layer: 5
- m_Name: btn_init
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &97229770
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 97229769}
- 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_Children:
- - {fileID: 1657584965}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &97229771
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 97229769}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &97229772
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 97229769}
- m_CullTransparentMesh: 1
---- !u!114 &97229773
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 97229769}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 97229771}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!1 &170095335
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 170095336}
- m_Layer: 5
- m_Name: root
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &170095336
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 170095335}
- 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_Children:
- - {fileID: 483802708}
- m_Father: {fileID: 295971387}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!1 &295971383
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 295971387}
- - component: {fileID: 295971386}
- - component: {fileID: 295971385}
- - component: {fileID: 295971384}
- m_Layer: 5
- m_Name: Canvas
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &295971384
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 295971383}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_IgnoreReversedGraphics: 1
- m_BlockingObjects: 0
- m_BlockingMask:
- serializedVersion: 2
- m_Bits: 4294967295
---- !u!114 &295971385
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 295971383}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_UiScaleMode: 1
- m_ReferencePixelsPerUnit: 100
- m_ScaleFactor: 1
- m_ReferenceResolution: {x: 1080, y: 1920}
- m_ScreenMatchMode: 0
- m_MatchWidthOrHeight: 0
- m_PhysicalUnit: 3
- m_FallbackScreenDPI: 96
- m_DefaultSpriteDPI: 96
- m_DynamicPixelsPerUnit: 1
- m_PresetInfoIsWorld: 0
---- !u!223 &295971386
-Canvas:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 295971383}
- m_Enabled: 1
- serializedVersion: 3
- m_RenderMode: 1
- m_Camera: {fileID: 531764817}
- m_PlaneDistance: 100
- m_PixelPerfect: 0
- m_ReceivesEvents: 1
- m_OverrideSorting: 0
- m_OverridePixelPerfect: 0
- m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 0
- m_SortingLayerID: 0
- m_SortingOrder: 0
- m_TargetDisplay: 0
---- !u!224 &295971387
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 295971383}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0, y: 0, z: 0}
- m_Children:
- - {fileID: 1486183099}
- - {fileID: 531764818}
- - {fileID: 170095336}
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0, y: 0}
---- !u!1 &483802707
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 483802708}
- - component: {fileID: 483802709}
- m_Layer: 5
- m_Name: analytics_demo
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &483802708
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 483802707}
- 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_Children:
- - {fileID: 1996017830}
- m_Father: {fileID: 170095336}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &483802709
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 483802707}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 8fde2a18f7d347408a6b869ee03e7de9, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- _isDebug: 1
- _btnInitSDK: {fileID: 97229773}
- _btnStatus: {fileID: 2106733042}
- _btnUserProperties: {fileID: 1299751324}
- _btnEvents: {fileID: 1773066580}
- _btnEvents2: {fileID: 2038787617}
- _btnReport: {fileID: 611641100}
- _btnTestCrash: {fileID: 66634521}
---- !u!1 &531764815
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 531764818}
- - component: {fileID: 531764817}
- - component: {fileID: 531764816}
- m_Layer: 0
- m_Name: UICamera
- m_TagString: MainCamera
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!81 &531764816
-AudioListener:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 531764815}
- m_Enabled: 1
---- !u!20 &531764817
-Camera:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 531764815}
- m_Enabled: 1
- serializedVersion: 2
- m_ClearFlags: 2
- m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
- m_projectionMatrixMode: 1
- m_GateFitMode: 2
- m_FOVAxisMode: 0
- m_SensorSize: {x: 36, y: 24}
- m_LensShift: {x: 0, y: 0}
- m_FocalLength: 50
- m_NormalizedViewPortRect:
- serializedVersion: 2
- x: 0
- y: 0
- width: 1
- height: 1
- near clip plane: -10
- far clip plane: 500
- field of view: 60
- orthographic: 1
- orthographic size: 5
- m_Depth: -1
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingPath: -1
- m_TargetTexture: {fileID: 0}
- m_TargetDisplay: 0
- m_TargetEye: 3
- m_HDR: 1
- m_AllowMSAA: 1
- m_AllowDynamicResolution: 0
- m_ForceIntoRT: 0
- m_OcclusionCulling: 1
- m_StereoConvergence: 10
- m_StereoSeparation: 0.022
---- !u!4 &531764818
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 531764815}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: -10}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 295971387}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &611641098
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 611641099}
- - component: {fileID: 611641102}
- - component: {fileID: 611641101}
- - component: {fileID: 611641100}
- m_Layer: 5
- m_Name: btn_report
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &611641099
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 611641098}
- 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_Children:
- - {fileID: 832164394}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &611641100
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 611641098}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 611641101}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!114 &611641101
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 611641098}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &611641102
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 611641098}
- m_CullTransparentMesh: 1
---- !u!1 &728747532
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 728747533}
- - component: {fileID: 728747535}
- - component: {fileID: 728747534}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &728747533
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 728747532}
- 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_Children: []
- m_Father: {fileID: 66634520}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &728747534
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 728747532}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u6D4B\u8BD5\u5D29\u6E83\u4E0A\u62A5"
---- !u!222 &728747535
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 728747532}
- m_CullTransparentMesh: 1
---- !u!1 &832164393
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 832164394}
- - component: {fileID: 832164396}
- - component: {fileID: 832164395}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &832164394
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 832164393}
- 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_Children: []
- m_Father: {fileID: 611641099}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &832164395
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 832164393}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u4E0A\u62A5\u6253\u70B9\u6210\u529F\u7387"
---- !u!222 &832164396
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 832164393}
- m_CullTransparentMesh: 1
---- !u!1 &920755264
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 920755265}
- - component: {fileID: 920755267}
- - component: {fileID: 920755266}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &920755265
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 920755264}
- 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_Children: []
- m_Father: {fileID: 1773066579}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &920755266
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 920755264}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u4E0A\u62A5\u6253\u70B9\u4E8B\u4EF6"
---- !u!222 &920755267
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 920755264}
- m_CullTransparentMesh: 1
---- !u!1 &999622155
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 999622156}
- - component: {fileID: 999622158}
- - component: {fileID: 999622157}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &999622156
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999622155}
- 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_Children: []
- m_Father: {fileID: 2106733041}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &999622157
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999622155}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u4E0A\u62A5\u5404\u5C5E\u6027ID"
---- !u!222 &999622158
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 999622155}
- m_CullTransparentMesh: 1
---- !u!1 &1270885175
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1270885176}
- - component: {fileID: 1270885177}
- m_Layer: 5
- m_Name: content
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1270885176
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1270885175}
- 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_Children:
- - {fileID: 97229770}
- - {fileID: 2106733041}
- - {fileID: 1299751323}
- - {fileID: 1773066579}
- - {fileID: 2038787616}
- - {fileID: 611641099}
- - {fileID: 66634520}
- m_Father: {fileID: 1996017830}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0.5, y: 0.5}
- m_AnchorMax: {x: 0.5, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 405.2}
- m_SizeDelta: {x: 100, y: 100}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1270885177
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1270885175}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Padding:
- m_Left: 0
- m_Right: 0
- m_Top: 0
- m_Bottom: 0
- m_ChildAlignment: 4
- m_Spacing: 20
- m_ChildForceExpandWidth: 1
- m_ChildForceExpandHeight: 1
- m_ChildControlWidth: 0
- m_ChildControlHeight: 0
- m_ChildScaleWidth: 0
- m_ChildScaleHeight: 0
- m_ReverseArrangement: 0
---- !u!1 &1299751322
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1299751323}
- - component: {fileID: 1299751326}
- - component: {fileID: 1299751325}
- - component: {fileID: 1299751324}
- m_Layer: 5
- m_Name: btn_userproperties
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1299751323
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1299751322}
- 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_Children:
- - {fileID: 1727689995}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1299751324
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1299751322}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 1299751325}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!114 &1299751325
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1299751322}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &1299751326
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1299751322}
- m_CullTransparentMesh: 1
---- !u!1 &1486183098
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1486183099}
- - component: {fileID: 1486183101}
- - component: {fileID: 1486183100}
- m_Layer: 0
- m_Name: EventSystem
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1486183099
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1486183098}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: -540, y: -960, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 295971387}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1486183100
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1486183098}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_HorizontalAxis: Horizontal
- m_VerticalAxis: Vertical
- m_SubmitButton: Submit
- m_CancelButton: Cancel
- m_InputActionsPerSecond: 10
- m_RepeatDelay: 0.5
- m_ForceModuleActive: 0
---- !u!114 &1486183101
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1486183098}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_FirstSelected: {fileID: 0}
- m_sendNavigationEvents: 1
- m_DragThreshold: 10
---- !u!1 &1657584964
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1657584965}
- - component: {fileID: 1657584967}
- - component: {fileID: 1657584966}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1657584965
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1657584964}
- 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_Children: []
- m_Father: {fileID: 97229770}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1657584966
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1657584964}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u521D\u59CB\u5316SDK"
---- !u!222 &1657584967
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1657584964}
- m_CullTransparentMesh: 1
---- !u!1 &1727689994
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1727689995}
- - component: {fileID: 1727689997}
- - component: {fileID: 1727689996}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1727689995
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1727689994}
- 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_Children: []
- m_Father: {fileID: 1299751323}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1727689996
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1727689994}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u4E0A\u62A5\u7528\u6237\u5C5E\u6027"
---- !u!222 &1727689997
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1727689994}
- m_CullTransparentMesh: 1
---- !u!1 &1730981159
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1730981160}
- - component: {fileID: 1730981162}
- - component: {fileID: 1730981161}
- m_Layer: 5
- m_Name: label
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1730981160
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1730981159}
- 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_Children: []
- m_Father: {fileID: 2038787616}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: -20}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1730981161
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1730981159}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 30
- m_FontStyle: 0
- m_BestFit: 0
- m_MinSize: 2
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: "\u4E0A\u62A5\u6253\u70B9\u4E8B\u4EF6(\u4EC5\u4E8B\u4EF6\u540D)"
---- !u!222 &1730981162
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1730981159}
- m_CullTransparentMesh: 1
---- !u!1 &1773066578
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1773066579}
- - component: {fileID: 1773066582}
- - component: {fileID: 1773066581}
- - component: {fileID: 1773066580}
- m_Layer: 5
- m_Name: btn_events
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1773066579
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1773066578}
- 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_Children:
- - {fileID: 920755265}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1773066580
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1773066578}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 1773066581}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!114 &1773066581
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1773066578}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &1773066582
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1773066578}
- m_CullTransparentMesh: 1
---- !u!1 &1996017829
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1996017830}
- - component: {fileID: 1996017832}
- - component: {fileID: 1996017831}
- m_Layer: 5
- m_Name: root
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &1996017830
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1996017829}
- 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_Children:
- - {fileID: 1270885176}
- m_Father: {fileID: 483802708}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 0, y: 0}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1996017831
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1996017829}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 0.8}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &1996017832
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1996017829}
- m_CullTransparentMesh: 1
---- !u!1 &2038787615
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2038787616}
- - component: {fileID: 2038787619}
- - component: {fileID: 2038787618}
- - component: {fileID: 2038787617}
- m_Layer: 5
- m_Name: btn_event2
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &2038787616
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2038787615}
- 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_Children:
- - {fileID: 1730981160}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &2038787617
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2038787615}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 2038787618}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!114 &2038787618
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2038787615}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &2038787619
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2038787615}
- m_CullTransparentMesh: 1
---- !u!1 &2106733040
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 2106733041}
- - component: {fileID: 2106733044}
- - component: {fileID: 2106733043}
- - component: {fileID: 2106733042}
- m_Layer: 5
- m_Name: btn_status
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!224 &2106733041
-RectTransform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2106733040}
- 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_Children:
- - {fileID: 999622156}
- m_Father: {fileID: 1270885176}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 800, y: 120}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &2106733042
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2106733040}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Navigation:
- m_Mode: 3
- m_WrapAround: 0
- m_SelectOnUp: {fileID: 0}
- m_SelectOnDown: {fileID: 0}
- m_SelectOnLeft: {fileID: 0}
- m_SelectOnRight: {fileID: 0}
- m_Transition: 1
- m_Colors:
- m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
- m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
- m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
- m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
- m_ColorMultiplier: 1
- m_FadeDuration: 0.1
- m_SpriteState:
- m_HighlightedSprite: {fileID: 0}
- m_PressedSprite: {fileID: 0}
- m_SelectedSprite: {fileID: 0}
- m_DisabledSprite: {fileID: 0}
- m_AnimationTriggers:
- m_NormalTrigger: Normal
- m_HighlightedTrigger: Highlighted
- m_PressedTrigger: Pressed
- m_SelectedTrigger: Selected
- m_DisabledTrigger: Disabled
- m_Interactable: 1
- m_TargetGraphic: {fileID: 2106733043}
- m_OnClick:
- m_PersistentCalls:
- m_Calls: []
---- !u!114 &2106733043
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2106733040}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_RaycastTarget: 1
- m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
- m_PixelsPerUnitMultiplier: 1
---- !u!222 &2106733044
-CanvasRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2106733040}
- m_CullTransparentMesh: 1
diff --git a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.unity.meta b/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.unity.meta
deleted file mode 100644
index f586962..0000000
--- a/Runtime/GuruAnalytics/~Sample/GuruAnalyticsDemo.unity.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: ea095a004daab4fc096aa297c21fca99
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
index 20b2249..26c0acd 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Const.cs
@@ -6,6 +6,7 @@ namespace Guru
fail,
timeout,
exit,
+ replay
}
//打点常量定义
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs
index 85cc880..92e3938 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.Custom.cs
@@ -25,47 +25,46 @@ namespace Guru
private const string VALUE_ONLY_FOR_IOS = "idfa_only_for_ios";
public static bool IsDebug { get; set; } = false;
-
private static bool _isGuruAnalyticInitOnce = false;
- ///
- /// 初始化Guru自打点系统 (请优先于 Firebase 初始化调用)
- ///
- public static void InstallGuruAnalytics(bool isDebug = false, bool enableErrorLog = false)
+ public static void InitGuruAnalyticService(GuruAnalyticsInitConfig initConfig, string firebaseId)
{
-
if (_isGuruAnalyticInitOnce) return;
- try
- {
+ Debug.Log($"{TAG} --- InstallGuruAnalytics baseUrl: {initConfig.baseUrl} enableErrorLog: {initConfig.enableErrorLog} firebaseId:{firebaseId}");
+
+ try
+ {
#if UNITY_EDITOR
- IsDebug = true;
+ IsDebug = true;
#else
IsDebug = isDebug;
#endif
- string appId = IPMConfig.IPM_X_APP_ID;
- string deviceInfo = new DeviceInfoData().ToString();
- GuruAnalytics.Init(appId, deviceInfo, OnGuruAnalyticsInitComplete, IsDebug, enableErrorLog); // 初始化(带Header)
-
- _hasGotFirebaseId = false;
- _hasGotAdId = false;
- _hasGotAdjustId = false;
- _hasGotDeviceId = false;
- _hasGotUid = false;
- _lastReportRateDate = DateTime.Now;
- _reportSuccessInterval = 120; // 2分钟上报一次
-
- UpdateAllValues();
+ string appId = IPMConfig.IPM_X_APP_ID;
+ string deviceInfo = new DeviceInfoData().ToString();
- _isGuruAnalyticInitOnce = true;
- }
- catch (Exception ex)
- {
- LogCrashlytics(ex);
- }
+ _hasGotFirebaseId = false;
+ _hasGotAdId = false;
+ _hasGotAdjustId = false;
+ _hasGotDeviceId = false;
+ _hasGotUid = false;
+ _lastReportRateDate = DateTime.Now;
+ _reportSuccessInterval = 120; // 2分钟上报一次
+
+ if(!string.IsNullOrEmpty(firebaseId))
+ GuruAnalytics.Instance.SetFirebaseId(firebaseId); // 在自打点初始化之前, 需要调用一下设置 FirebaseId
+
+ GuruAnalytics.Init(appId, deviceInfo, initConfig); // Android 初始化
+ UpdateAllValues();
+ }
+ catch (Exception ex)
+ {
+ LogCrashlytics(ex);
+ }
}
- #region 各ID上报信息
+
+ #region 各ID上报信息
///
/// 设置用户ID
@@ -250,6 +249,8 @@ namespace Guru
///
private static void UpdateAllValues()
{
+
+ Debug.Log($"{TAG} --- UpdateAllValues");
SetUid();
SetDeviceId();
SetAdjustId();
@@ -297,9 +298,16 @@ namespace Guru
GuruAnalytics.Instance.SetUserProperty(key, value);
UpdateAllValues(); // 同步所有的ID
}
- catch (Exception e)
+ catch (Exception ex)
{
- Crashlytics.LogException(e);
+ if (IsFirebaseReady)
+ {
+ Crashlytics.LogException(ex);
+ }
+ else
+ {
+ Debug.LogException(ex);
+ }
}
}
@@ -319,7 +327,14 @@ namespace Guru
}
catch (Exception e)
{
- Crashlytics.LogException(e);
+ if (IsFirebaseReady)
+ {
+ Crashlytics.LogException(e);
+ }
+ else
+ {
+ Debug.LogWarning(e);
+ }
}
}
@@ -343,7 +358,14 @@ namespace Guru
}
catch (Exception e)
{
- Crashlytics.LogException(e);
+ if (IsFirebaseReady)
+ {
+ Crashlytics.LogException(e);
+ }
+ else
+ {
+ Debug.LogWarning(e);
+ }
}
}
diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
index 143c39f..2b26e98 100644
--- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
+++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs
@@ -1,6 +1,7 @@
-using System.Threading;
+using System.Collections;
+using UnityEngine;
namespace Guru
{
@@ -39,7 +40,6 @@ namespace Guru
};
}
}
-
private static EventSetting DefaultEventSetting => EventSetting.GetDefaultSetting();
private static bool _isInitOnce; //Analytics是否初始化完成
@@ -48,26 +48,6 @@ namespace Guru
public static bool IsDebugMode => PlatformUtil.IsDebug();
private static bool IsFirebaseReady => FirebaseUtil.IsFirebaseInitialized;
- private static bool IsReady
- {
- get
- {
- //Analytics没有初始化不上报打点
- if (!_isInitOnce) return false;
-
- //Firebase服务没有初始化完成不上报打点
- if (!IsFirebaseReady) return false;
-
-#if !UNITY_EDITOR
- //开发环境打点不上报
- if (IsDebugMode && !EnableDebugAnalytics)
- return false;
-#endif
- return true;
- }
- }
-
-
private static AdjustEventDriver _adjustEventDriver;
private static FBEventDriver _fbEventDriver;
private static FirebaseEventDriver _firebaseEventDriver;
@@ -76,7 +56,15 @@ namespace Guru
#region 初始化
- public static void InitAnalytics()
+ ///
+ /// 初始化打点模块
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void Init(string baseUrl = "", string[] uploadIpAddress = null, bool isEnable = false, bool enableErrorLog = false, string firebaseId = "")
{
if (_isInitOnce) return;
_isInitOnce = true;
@@ -85,21 +73,21 @@ namespace Guru
_fbEventDriver = new FBEventDriver();
_firebaseEventDriver = new FirebaseEventDriver();
_guruEventDriver = new GuruEventDriver();
-
- // ------- 初始化自打点 ----------
- InstallGuruAnalytics(IsDebug);
}
-
-
-
+
+ ///
+ /// 外部拉起 Firebase 初始化完成回调
+ ///
public static void OnFirebaseInitCompleted()
{
Debug.Log($"[SDK] --- Analytics Init After FirebaseReady:{IsFirebaseReady}");
- // -------- 初始化 Crashlytics ----------
+ // --- 初始化 Crashlytics ---
CrashlyticsAgent.Init();
FirebaseAnalytics.SetAnalyticsCollectionEnabled(true);
FirebaseAnalytics.SetSessionTimeoutDuration(new TimeSpan(0, 30, 0));
+
+ // --- 上报用户事件 ---
SetUserProperty(FirebaseAnalytics.UserPropertySignUpMethod, "Google");
SetUserProperty(PropertyDeviceID, IPMConfig.IPM_DEVICE_ID);
// SetUserProperty(PropertyFirstOpenTime, FirstOpenTime);
@@ -118,7 +106,7 @@ namespace Guru
_adjustEventDriver.TriggerFlush();
}
- private static void OnGuruAnalyticsInitComplete()
+ public static void OnGuruAnalyticsInitComplete()
{
_guruEventDriver.TriggerFlush();
}
@@ -152,13 +140,13 @@ namespace Guru
///
/// Firebase上报用户ID
///
- /// 通过Auth认证地用户ID
- public static void SetUserIDProperty(string userID)
+ /// 通过Auth认证地用户ID
+ public static void SetFirebaseUserId(string uid)
{
- Log.I(TAG,$"SetUserIDProperty -> userID:{userID}");
- if (!IsReady) return;
-
- FirebaseAnalytics.SetUserId(userID);
+ if (!IsFirebaseReady) return;
+ Log.I(TAG,$"SetUserIDProperty -> userID:{uid}");
+ FirebaseAnalytics.SetUserId(uid);
+ Crashlytics.SetUserId(uid);
}
///
@@ -168,7 +156,7 @@ namespace Guru
{
if (!_isInitOnce)
{
- throw new Exception($"[{TAG}][SDK] Analytics did not initialized, Call first!");
+ throw new Exception($"[{TAG}][SDK] Analytics did not initialized, Call first!");
}
if (IsDebug && !EnableDebugAnalytics)
@@ -200,6 +188,25 @@ namespace Guru
}
+
+ ///
+ /// Firebase 上报用户属性
+ ///
+ ///
+ ///
+ private static void FirebaseSetUserProperty(string propertyName, string propertyValue)
+ {
+ if (IsFirebaseReady)
+ {
+ FirebaseAnalytics.SetUserProperty(propertyName, propertyValue);
+ }
+ else
+ {
+ Debug.Log($"{TAG} --- Firebase not ready, call Firebase Init first!");
+ }
+ }
+
+
#endregion
#region 打点上报
@@ -217,7 +224,7 @@ namespace Guru
{
if (!_isInitOnce)
{
- throw new Exception($"[{TAG}][SDK] Analytics did not initialized, Call first!");
+ throw new Exception($"[{TAG}][SDK] Analytics did not initialized, Call first!");
}
if (IsDebug && !EnableDebugAnalytics)
@@ -352,5 +359,5 @@ namespace Guru
}
-
+
}
\ No newline at end of file
diff --git a/Runtime/GuruCore/Runtime/ExtensionKit/CoroutineHelper.cs b/Runtime/GuruCore/Runtime/ExtensionKit/CoroutineHelper.cs
index e2a2265..d4791fb 100644
--- a/Runtime/GuruCore/Runtime/ExtensionKit/CoroutineHelper.cs
+++ b/Runtime/GuruCore/Runtime/ExtensionKit/CoroutineHelper.cs
@@ -27,7 +27,7 @@ namespace Guru
return ((MonoBehaviour)this).StartDelayed(delay, callback);
}
- public Coroutine StartDelayed(int framesOfDelay, Action callback)
+ public Coroutine StartDelayedWithFrame(int framesOfDelay, Action callback)
{
return ((MonoBehaviour)this).StartDelayed(framesOfDelay, callback);
}
diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs
index 082d2cf..3ec8834 100644
--- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs
+++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Auth.cs
@@ -1,33 +1,55 @@
-using Firebase.Auth;
-using Firebase.Extensions;
-using UnityEngine;
+
namespace Guru
{
using System;
+ using Firebase.Auth;
+ using Firebase.Extensions;
+ using UnityEngine;
+
public static partial class FirebaseUtil
{
- public static FirebaseUser CurrentUser => FirebaseAuth.DefaultInstance.CurrentUser;
+ private static FirebaseUser FirebaseUser => FirebaseAuth.DefaultInstance.CurrentUser;
+
+ private const float LOGIN_RETRY_MAX_TIME = 60; // 最大请求间隔时间
+ private const float LOGIN_RETRY_INTERVAL = 10; // 最大请求间隔时间
- private static readonly WaitForSeconds _wait = new WaitForSeconds(10);
- public static void AuthUser(Action onSuccessHandler = null)
+ private static float _retryDelayTime = 10; // 登录重试时间
+
+ ///
+ /// 登录 Firebase 用户
+ ///
+ ///
+ ///
+ ///
+ private static void LoginFirebaseWithToken(Action onLoginResult = null, string authToken = "", bool autoRetry = true)
{
- //FirebaseAuth获取用户验证并同步用户数据
- if (CurrentUser != null)
+ // #1 Firebase 已获取用户
+ if (FirebaseUser != null)
{
- Log.I(LOG_TAG, $"[Auth] user exists,UserId:{CurrentUser.UserId}");
- OnFirebaseAuthResult?.Invoke(true);
- onSuccessHandler?.Invoke();
+ Log.I(LOG_TAG, $"[Auth] user exists,UserId:{FirebaseUser.UserId}");
+ onLoginResult?.Invoke(true);
return;
}
- string authToken = IPMConfig.IPM_FIREBASE_TOKEN;
+ if (string.IsNullOrEmpty(authToken)) authToken = IPMConfig.IPM_FIREBASE_TOKEN;
Log.I(LOG_TAG, $"[Auth] Firebase Token:{authToken}");
+
if (string.IsNullOrEmpty(authToken) || !NetworkUtil.IsNetAvaliable)
{
- CoroutineHelper.Instance.StartDelayed(_wait, ()=> AuthUser(onSuccessHandler));
- OnFirebaseAuthResult?.Invoke(false);
+ // Token 为空 或 网络不可用
+ if (autoRetry)
+ {
+ // 继续重试
+ DelayCallFirebaseLogin(Mathf.Min(_retryDelayTime, LOGIN_RETRY_MAX_TIME), onLoginResult, authToken);
+ _retryDelayTime += LOGIN_RETRY_INTERVAL; // 最大重试间隔 60s
+ }
+ else
+ {
+ // 不再重试
+ onLoginResult?.Invoke(false);
+ }
return;
}
@@ -38,21 +60,34 @@ namespace Guru
if (task.IsCanceled || task.IsFaulted)
{
Log.E(LOG_TAG,"[Auth] SignInWithCustomTokenAsync encountered an error: " + task.Exception);
- OnFirebaseAuthResult?.Invoke(false);
- CoroutineHelper.Instance.StartDelayed(_wait, () => AuthUser(onSuccessHandler));
+ if (autoRetry)
+ {
+ DelayCallFirebaseLogin(_retryDelayTime, onLoginResult, authToken); // 自动重试
+ }
+ else
+ {
+ onLoginResult?.Invoke(false); // 不再重试
+ }
return;
}
- // ----- User is NULL -----
- if (CurrentUser == null)
- {
- OnFirebaseAuthResult?.Invoke(false);
- CoroutineHelper.Instance.StartDelayed(_wait, ()=> AuthUser(onSuccessHandler));
- return;
- }
- // ----- Success -----
- OnFirebaseAuthResult?.Invoke(true); // 最后判定是成功的
- onSuccessHandler?.Invoke();
+ // ----- Check Result -----
+ bool success = FirebaseUser != null;
+ onLoginResult?.Invoke(success);
+ _retryDelayTime = LOGIN_RETRY_INTERVAL;
});
}
+
+
+ ///
+ /// 延迟调用 Firebase 登录请求
+ ///
+ ///
+ ///
+ ///
+ private static void DelayCallFirebaseLogin(float delaySeconds, Action callback, string token = "")
+ {
+ var delay = new WaitForSeconds(delaySeconds);
+ CoroutineHelper.Instance.StartDelayed(delay, ()=> LoginFirebaseWithToken(callback, token));
+ }
}
}
\ No newline at end of file
diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Crashlytics.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Crashlytics.cs
index 1fa140c..7db3c36 100644
--- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Crashlytics.cs
+++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Crashlytics.cs
@@ -5,6 +5,8 @@ namespace Guru
{
public static partial class FirebaseUtil
{
+
+
public static void InitCrashlytics()
{
if(!string.IsNullOrEmpty(IPMConfig.IPM_UID))
@@ -17,6 +19,7 @@ namespace Guru
///
public static void SetUserID(string userID)
{
+ if (!IsFirebaseInitialized) return;
Crashlytics.SetUserId(userID);
}
@@ -26,6 +29,7 @@ namespace Guru
///
public static void SetCustomData(string key, string value)
{
+ if (!IsFirebaseInitialized) return;
Crashlytics.SetCustomKey(key, value);
}
@@ -34,6 +38,7 @@ namespace Guru
///
public static void LogMessage(string message)
{
+ if (!IsFirebaseInitialized) return;
Crashlytics.Log(message);
}
@@ -42,6 +47,7 @@ namespace Guru
///
public static void LogException(Exception exception)
{
+ if (!IsFirebaseInitialized) return;
Crashlytics.LogException(exception);
}
}
diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs
index 7cf0a75..53ab10a 100644
--- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs
+++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.Message.cs
@@ -1,10 +1,12 @@
-using System;
-using System.Collections;
-using Firebase.Messaging;
-using UnityEngine;
+
namespace Guru
{
+ using System;
+ using System.Collections;
+ using Firebase.Messaging;
+ using UnityEngine;
+
public static partial class FirebaseUtil
{
private static int _messageRetry = 5;
@@ -17,7 +19,7 @@ namespace Guru
_isAutoFetchFcmToken = value;
}
- public static void InitializeMessage()
+ private static void InitializeMessage()
{
if (_isAutoFetchFcmToken)
{
@@ -48,7 +50,7 @@ namespace Guru
if (task.IsFaulted || task.IsCanceled)
{
- CoroutineHelper.Instance.StartDelayed(_wait, GetFCMToken);
+ CoroutineHelper.Instance.StartDelayed(10, GetFCMToken);
}
else
{
@@ -84,14 +86,14 @@ namespace Guru
}
}
- private static void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
+ private static void OnTokenReceived(object sender, TokenReceivedEventArgs token)
{
#if UNITY_IOS
DeviceUtil.SetiOSBadge();
#endif
}
- public static void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e)
+ public static void OnMessageReceived(object sender, MessageReceivedEventArgs e)
{
#if UNITY_IOS
DeviceUtil.SetiOSBadge();
diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.RemoteConfig.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.RemoteConfig.cs
index db682c5..858166a 100644
--- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.RemoteConfig.cs
+++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.RemoteConfig.cs
@@ -96,7 +96,7 @@ namespace Guru
|| _remoteConfigInstance.Info.LastFetchStatus != LastFetchStatus.Success)
{
Log.E(LOG_TAG, "Firebase RemoteConfig Fetch Failure");
- CoroutineHelper.Instance.StartDelayed(_wait, FetchRemoteValue);
+ CoroutineHelper.Instance.StartDelayed(10, FetchRemoteValue);
return;
}
diff --git a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs
index ad9441e..ec50666 100644
--- a/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs
+++ b/Runtime/GuruCore/Runtime/Firebase/FirebaseUtil.cs
@@ -1,160 +1,214 @@
-using System;
-using Firebase;
-using Firebase.Analytics;
-using Firebase.Extensions;
-using UnityEngine;
-
namespace Guru
{
+ using System;
+ using Firebase;
+ using Firebase.Analytics;
+ using Firebase.Extensions;
+ using UnityEngine;
+
public static partial class FirebaseUtil
{
private static readonly string LOG_TAG = "Firebase";
private static bool _isReady = false;
- public static bool IsReady => _isReady;
-
- public static DependencyStatus DependencyStatus = DependencyStatus.UnavailableOther;
- public static bool IsFirebaseInitialized => DependencyStatus == DependencyStatus.Available;
- public static Action onInitComplete;
+ public static bool IsReady => _isReady && IsFirebaseInitialized;
- public static Action OnFirebaseAuthResult;
- public static Action OnUserAuthResult;
- // TODO: 需要从 FirebaseUtils 内拿走
- public static Action OnAdjustDeeplinkCallback = null;
-
-
- public static void InitFirebase(Action callback)
+ private static DependencyStatus DependencyStatus = DependencyStatus.UnavailableOther;
+ public static bool IsFirebaseInitialized => DependencyStatus == DependencyStatus.Available;
+
+ private static Action _onCheckAndFixDepsHandler;
+ private static Action _onGetFirebaseIdHandler;
+ private static Action _onGetGuruUIDHandler;
+ private static Action _onFirebaseLoginResult;
+
+ ///
+ /// 初始化 Firebase
+ ///
+ /// Firebase 自身解决依赖结果回调
+ /// 异步获取到 FirebaseId 回调
+ /// Firebase 授权回调
+ ///
+ public static void Init(Action onDepsCheckResult, Action onGetFirebaseId = null,
+ Action onGetGuruUIDResult = null, Action onFirebaseLoginResult = null)
{
_isReady = false;
- // Analytics.InitAnalytics(); // 打点提前初始化
+ _onCheckAndFixDepsHandler = onDepsCheckResult;
+ _onGetFirebaseIdHandler = onGetFirebaseId;
+ _onGetGuruUIDHandler = onGetGuruUIDResult;
+ _onFirebaseLoginResult = onFirebaseLoginResult;
- // Loom.StartUp(); // 确保主线程开启
-
- // 初始化 Fireabse 依赖
+ // 初始化 Firebase 依赖
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
DependencyStatus = task.Result;
if (DependencyStatus == DependencyStatus.Available)
{
_isReady = true;
- InitializeFirebaseComp();
- callback?.Invoke();
+ OnFirebaseDepsCheckSuccess(); // Deps 处理通过
}
else
{
Log.E(LOG_TAG, "Could not resolve all Firebase dependencies: " + DependencyStatus);
}
- onInitComplete?.Invoke(_isReady);
+ _onCheckAndFixDepsHandler?.Invoke(_isReady);
});
}
- private static void InitializeFirebaseComp()
+
+ ///
+ /// Deps 处理通过
+ /// 初始化各模块
+ ///
+ private static void OnFirebaseDepsCheckSuccess()
{
InitCrashlytics(); // 老项目沿用此逻辑
InitRemoteConfig(); // 老项目沿用此逻辑
- // TODO: 需要从 FirebaseUtils 内拿走
- InitAdjustService(); // 初始化 adjust 服务
+ InitializeMessage(); // 初始化 Messaging 服务
+ GetFirebaseIdAsync(); // 开始获取 FirebaseId
- if (IPMConfig.IPM_UID.IsNullOrEmpty())
- {
- Log.I(LOG_TAG, "没有存储UID时,从中台获取匿名认证授权");
- //没有存储UID时,从中台获取匿名认证授权
- new AuthUserRequest()
- .SetRetryTimes(-1)
- .SetSuccessCallBack(() =>
- {
- OnUserAuthResult?.Invoke(true);
- AuthUser(InitializeMessage);
- }).SetFailCallBack(() =>
- {
- OnUserAuthResult?.Invoke(false);
- })
- .Send();
- }
- else
- {
- InitializeMessage();
- int currentTimeStamp = TimeUtil.GetCurrentTimeStampSecond();
- if(currentTimeStamp - IPMConfig.IPM_TOKEN_TIME >= IPMConfig.TOKEN_VALID_TIME)
- {
- //中台Token失效,从中台重新获取Token
- new RefreshTokenRequest().SetRetryTimes(-1).Send();
- }
-
- if(currentTimeStamp - IPMConfig.IPM_FIREBASE_TOKEN_TIME >= IPMConfig.FIREBASE_TOKEN_VALID_TIME)
- {
- //中台firebaseToken失效,从中台重新获取firebaseToken
- new RefreshFirebaseTokenRequest()
- .SetRetryTimes(-1)
- .SetSuccessCallBack(()=> AuthUser(InitializeMessage))
- .Send();
- }
- else
- {
- AuthUser(InitializeMessage);
- }
- }
+ StartVerifyTokenAndAuthAsync(); //开始验证授权和Token
}
- #region 启动 Adjust 服务
-
- // TODO: 需要从 FirebaseUtils 内拿走
- ///
- /// 启动 Adjust 服务
- ///
- private static void InitAdjustService()
+ #region FirebaseId
+
+ private static void GetFirebaseIdAsync()
{
+ // 异步获取 FirebaseID
FirebaseAnalytics.GetAnalyticsInstanceIdAsync()
.ContinueWithOnMainThread(task =>
{
-
- if (task.IsCompleted && !string.IsNullOrEmpty(task.Result))
+ string fid = task.Result;
+ if (task.IsCompleted && !string.IsNullOrEmpty(fid))
{
// 保存本地ID备份
- string fid = task.Result;
IPMConfig.FIREBASE_ID = fid; // 保存FirebaseID
+ Debug.Log($"[SDK] --- Get FirebaseID: {fid}");
}
else
{
- UnityEngine.Debug.LogError($"Fetch FirebaseID failed on start!");
+ Debug.LogError($"[SDK] --- Fetch FirebaseID failed on start!");
}
-
- // 启动 AdjustService
- string appToken = GuruSettings.Instance.AdjustSetting?.GetAppToken() ?? "";
- string fbAppId = GuruSettings.Instance.IPMSetting.FacebookAppId;
-
- if (!string.IsNullOrEmpty(IPMConfig.ADJUST_ID))
- ReportAdjustId(IPMConfig.ADJUST_ID); // 二次启动后,若有值则立即上报属性
-
- AdjustService.StartService(appToken, fbAppId, OnGetAdjustId, OnAdjustDeeplinkCallback);
-
+ _onGetFirebaseIdHandler?.Invoke(fid);
});
}
- private static void OnGetAdjustId(string adjustId)
+ #endregion
+
+ #region Token and Auth
+
+ ///
+ /// 异步验证所有 Token 有效期
+ ///
+ private static void StartVerifyTokenAndAuthAsync()
{
- // 获取 ADID
- if (string.IsNullOrEmpty(adjustId))
+ if (string.IsNullOrEmpty(IPMConfig.IPM_UID))
{
- adjustId = "not_set";
+ Log.I(LOG_TAG, "没有存储UID时,从中台获取匿名认证授权");
+ // 没有存储UID时,从中台获取匿名认证授权
+ StartGuruLoginWithDeviceId(success =>
+ {
+ _onGetGuruUIDHandler?.Invoke(success);
+
+ if (success) {
+ // 用户 UID 不为空
+ StartLoginWithFirebase();
+ }
+ });
}
else
{
- IPMConfig.ADJUST_ID = adjustId;
+ // 检查中台 Token 是否过期
+ if (IsGuruTokenExpired())
+ {
+ RefreshGuruToken();
+ }
+
+ // 检查中台 Firebase Token 是否过期
+ if (IsFirebaseTokenExpired())
+ {
+ RefreshFirebaseToken(StartLoginWithFirebase); // 重新获取 Firebase Token
+ }
+ else
+ {
+ StartLoginWithFirebase();
+ }
}
- ReportAdjustId(adjustId);
-
- Analytics.OnAdjustInitComplete();
}
+
-
- private static void ReportAdjustId(string adjustId)
+ ///
+ /// 使用设备 ID 进行中台匿名认证
+ ///
+ private static void StartGuruLoginWithDeviceId(Action onLoginResult = null)
{
- FirebaseAnalytics.SetUserProperty("adjust_id", adjustId); // 仅上报 Firebase 用户属性
- Debug.Log($"[SDK] --- Firebase + Adjust ID: {adjustId}");
+ // 没有存储UID时,从中台获取匿名认证授权
+ var request = new AuthUserRequest()
+ .SetRetryTimes(-1) // 不成功的话会一直请求
+ .SetSuccessCallBack(() =>
+ {
+ onLoginResult?.Invoke(true);
+ }).SetFailCallBack(() =>
+ {
+ onLoginResult?.Invoke(false);
+ });
+ request.Send();
}
+ ///
+ /// Firebase Token 是否过期
+ ///
+ ///
+ private static bool IsFirebaseTokenExpired()
+ {
+ int currentTimeStamp = TimeUtil.GetCurrentTimeStampSecond();
+ return currentTimeStamp - IPMConfig.IPM_TOKEN_TIME >= IPMConfig.TOKEN_VALID_TIME;
+ }
+
+ private static void RefreshFirebaseToken(Action onFirebaseTokenRefreshed = null)
+ {
+ //中台firebaseToken失效,从中台重新获取firebaseToken
+ var request = new RefreshFirebaseTokenRequest()
+ .SetRetryTimes(-1)
+ .SetSuccessCallBack(()=> onFirebaseTokenRefreshed?.Invoke());
+ request.Send();
+ }
+
+ ///
+ /// Guru Token 是否过期
+ ///
+ ///
+ private static bool IsGuruTokenExpired()
+ {
+ int currentTimeStamp = TimeUtil.GetCurrentTimeStampSecond();
+ return currentTimeStamp - IPMConfig.IPM_FIREBASE_TOKEN_TIME >= IPMConfig.FIREBASE_TOKEN_VALID_TIME;
+ }
+ private static void RefreshGuruToken()
+ {
+ //中台Token失效,从中台重新获取Token
+ var request = new RefreshTokenRequest()
+ .SetRetryWaitSeconds(10)
+ .SetRetryTimes(-1); // 不成功的话会一直请求
+ request.Send();
+ }
#endregion
+
+ #region Firebase 用户登录
+ ///
+ /// 开始登录 Firebase
+ ///
+ private static void StartLoginWithFirebase()
+ {
+ LoginFirebaseWithToken(OnFirebaseLoginComplete, IPMConfig.IPM_FIREBASE_TOKEN); // 成功后进行 Firebase 认证
+ }
+ ///
+ /// Firebase 认证用户完成
+ ///
+ ///
+ private static void OnFirebaseLoginComplete(bool success)
+ {
+ _onFirebaseLoginResult?.Invoke(success);
+ }
+ #endregion
}
}
\ No newline at end of file
diff --git a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AuthUserRequest.cs b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AuthUserRequest.cs
index fa2d2d5..9f78a36 100644
--- a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AuthUserRequest.cs
+++ b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/AuthUserRequest.cs
@@ -44,8 +44,7 @@ namespace Guru
this.Log(response);
this.Log(responseData.data.ToString());
- Analytics.SetUserIDProperty(responseData.data.uid);
- Crashlytics.SetUserId(responseData.data.uid);
+ Analytics.SetFirebaseUserId(responseData.data.uid);
IPMConfig.IPM_UID = responseData.data.uid;
IPMConfig.IPM_UID_INT = responseData.data.uidInt;
diff --git a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RefreshTokenRequest.cs b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RefreshTokenRequest.cs
index 74e3409..403831c 100644
--- a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RefreshTokenRequest.cs
+++ b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RefreshTokenRequest.cs
@@ -29,8 +29,7 @@ namespace Guru
this.Log(responseData.data.ToString());
IPMConfig.IPM_TOKEN = responseData.data.token;
IPMConfig.IPM_TOKEN_TIME = TimeUtil.GetCurrentTimeStampSecond();
- PlayerPrefs.SetString("IPM_TOKEN", responseData.data.token);
- this.Log("@@@ Send OK!");
+ this.Log($"[SDK] --- RefreshTokenRequest Success: {responseData.data.token}");
}
}
}
\ No newline at end of file
diff --git a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RequestBase.cs b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RequestBase.cs
index d6f6904..3358a1c 100644
--- a/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RequestBase.cs
+++ b/Runtime/GuruCore/Runtime/IPM/Scripts/Requests/RequestBase.cs
@@ -13,7 +13,7 @@ namespace Guru
protected abstract UnityWebRequest CreateRequest();
protected abstract void RequestSuccessCallBack(string response);
- private readonly WaitForSeconds _waitTime = new WaitForSeconds(5);
+ private WaitForSeconds _waitTime = new WaitForSeconds(5);
private int _retryTimes = 3;
private int _timeOut = 90;
@@ -28,6 +28,12 @@ namespace Guru
return this;
}
+ public RequestBase SetRetryWaitSeconds(int waitSeconds)
+ {
+ _waitTime = new WaitForSeconds(waitSeconds);;
+ return this;
+ }
+
public RequestBase SetTimeOut(int timeOut)
{
_timeOut = timeOut;