diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll b/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll index df4f9e097..4c0bb1061 100644 Binary files a/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll and b/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll differ diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll.meta b/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll.meta index e8655b60e..482dbb833 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/DOTween.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: a811bde74b26b53498b4f6d872b09b6d PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: + Any: enabled: 1 settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll b/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll index cd66d539b..1599b4066 100644 Binary files a/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll and b/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll differ diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta index 8ae528a91..53590f3b8 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: 45d5034162d6cf04dbe46da84fc7d074 PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: - enabled: 1 + Any: + enabled: 0 settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta index 55682176a..50aa010fc 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: b766d08851589514b97afb23c6f30a70 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs index a1a1cb9fe..08b070065 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs @@ -135,7 +135,7 @@ namespace DG.Tweening /// If you plan to publish there you should use a regular transform.DOPath. /// The waypoints to go through /// The duration of the tween - /// The type of path: Linear (straight path) or CatmullRom (curved CatmullRom path) + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) /// The path mode: 3D, side-scroller 2D, top-down 2D /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints @@ -160,7 +160,7 @@ namespace DG.Tweening /// If you plan to publish there you should use a regular transform.DOLocalPath. /// The waypoint to go through /// The duration of the tween - /// The type of path: Linear (straight path) or CatmullRom (curved CatmullRom path) + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) /// The path mode: 3D, side-scroller 2D, top-down 2D /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta index 42a05668a..0ce0d755f 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: dae9aa560b4242648a3affa2bfabc365 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs index f40a7d005..d01f72891 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs @@ -4,6 +4,8 @@ #if true && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER using System; using DG.Tweening.Core; +using DG.Tweening.Plugins; +using DG.Tweening.Plugins.Core.PathCore; using DG.Tweening.Plugins.Options; using UnityEngine; @@ -97,6 +99,90 @@ namespace DG.Tweening return s; } + /// Tweens a Rigidbody2D's position through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations. + /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOPath. + /// The waypoints to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path (useless in case of Linear paths): higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOPath( + this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + int len = path.Length; + Vector3[] path3D = new Vector3[len]; + for (int i = 0; i < len; ++i) path3D[i] = path[i]; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), new Path(pathType, path3D, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + return t; + } + /// Tweens a Rigidbody2D's localPosition through the given path waypoints, using the chosen path algorithm. + /// Also stores the Rigidbody2D as the tween's target so it can be used for filtered operations + /// NOTE: to tween a Rigidbody2D correctly it should be set to kinematic at least while being tweened. + /// BEWARE: doesn't work on Windows Phone store (waiting for Unity to fix their own bug). + /// If you plan to publish there you should use a regular transform.DOLocalPath. + /// The waypoint to go through + /// The duration of the tween + /// The type of path: Linear (straight path), CatmullRom (curved CatmullRom path) or CubicBezier (curved with control points) + /// The path mode: 3D, side-scroller 2D, top-down 2D + /// The resolution of the path: higher resolutions make for more detailed curved paths but are more expensive. + /// Defaults to 10, but a value of 5 is usually enough if you don't have dramatic long curves between waypoints + /// The color of the path (shown when gizmos are active in the Play panel and the tween is running) + public static TweenerCore DOLocalPath( + this Rigidbody2D target, Vector2[] path, float duration, PathType pathType = PathType.Linear, + PathMode pathMode = PathMode.Full3D, int resolution = 10, Color? gizmoColor = null + ) + { + if (resolution < 1) resolution = 1; + int len = path.Length; + Vector3[] path3D = new Vector3[len]; + for (int i = 0; i < len; ++i) path3D[i] = path[i]; + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), new Path(pathType, path3D, resolution, gizmoColor), duration) + .SetTarget(target).SetUpdate(UpdateType.Fixed); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + // Used by path editor when creating the actual tween, so it can pass a pre-compiled path + internal static TweenerCore DOPath( + this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + TweenerCore t = DOTween.To(PathPlugin.Get(), () => target.position, x => target.MovePosition(x), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + return t; + } + internal static TweenerCore DOLocalPath( + this Rigidbody2D target, Path path, float duration, PathMode pathMode = PathMode.Full3D + ) + { + Transform trans = target.transform; + TweenerCore t = DOTween.To(PathPlugin.Get(), () => trans.localPosition, x => target.MovePosition(trans.parent == null ? x : trans.parent.TransformPoint(x)), path, duration) + .SetTarget(target); + + t.plugOptions.isRigidbody2D = true; + t.plugOptions.mode = pathMode; + t.plugOptions.useLocalPosition = true; + return t; + } + #endregion #endregion diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta index 323d0ddfa..ca9ed299f 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 230fe34542e175245ba74b4659dae700 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs index 9450ca524..549fff39f 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs @@ -56,6 +56,7 @@ namespace DG.Tweening : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); return s; } diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta index e6ade0cbf..a0c67c420 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 188918ab119d93148aa0de59ccf5286b MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs index 072c02c20..dc24ebf02 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs @@ -2,12 +2,17 @@ // Created: 2018/07/13 #if true && (UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER + using System; +using System.Globalization; using UnityEngine; using UnityEngine.UI; using DG.Tweening.Core; using DG.Tweening.Core.Enums; +using DG.Tweening.Plugins; using DG.Tweening.Plugins.Options; +using Outline = UnityEngine.UI.Outline; +using Text = UnityEngine.UI.Text; #pragma warning disable 1591 namespace DG.Tweening @@ -108,6 +113,7 @@ namespace DG.Tweening : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); return s; } @@ -480,6 +486,29 @@ namespace DG.Tweening return t; } + /// + /// Tweens a Text's text from one integer to another, with options for thousands separators + /// + /// The value to start from + /// The end value to reach + /// The duration of the tween + /// If TRUE (default) also adds thousands separators + /// The to use (InvariantCulture if NULL) + public static TweenerCore DOCounter( + this Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null + ){ + int v = fromValue; + CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture; + TweenerCore t = DOTween.To(() => v, x => { + v = x; + target.text = addThousandsSeparator + ? v.ToString("N0", cInfo) + : v.ToString(); + }, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a Text's alpha color to the given value. /// Also stores the Text as the tween's target so it can be used for filtered operations /// The end value to reachThe duration of the tween @@ -501,6 +530,10 @@ namespace DG.Tweening /// Leave it to NULL (default) to use default ones public static TweenerCore DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null) { + if (endValue == null) { + if (Debugger.logPriority > 0) Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors"); + endValue = ""; + } TweenerCore t = DOTween.To(() => target.text, x => target.text = x, endValue, duration); t.SetOptions(richTextEnabled, scrambleMode, scrambleChars) .SetTarget(target); @@ -576,6 +609,29 @@ namespace DG.Tweening #endregion + #region Shapes + + /// Tweens a RectTransform's anchoredPosition so that it draws a circle around the given center. + /// Also stores the RectTransform as the tween's target so it can be used for filtered operations. + /// IMPORTANT: SetFrom(value) requires a instead of a float, where the X property represents the "from degrees value" + /// Circle-center/pivot around which to rotate (in UI anchoredPosition coordinates) + /// The end value degrees to reach (to rotate counter-clockwise pass a negative value) + /// The duration of the tween + /// If TRUE the coordinates will be considered as relative to the target's current anchoredPosition + /// If TRUE the tween will smoothly snap all values to integers + public static TweenerCore DOShapeCircle( + this RectTransform target, Vector2 center, float endValueDegrees, float duration, bool relativeCenter = false, bool snapping = false + ) + { + TweenerCore t = DOTween.To( + CirclePlugin.Get(), () => target.anchoredPosition, x => target.anchoredPosition = x, center, duration + ); + t.SetOptions(endValueDegrees, relativeCenter, snapping).SetTarget(target); + return t; + } + + #endregion + #endregion // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta index b7f95cb38..60d55efff 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: a060394c03331a64392db53a10e7f2d1 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs index 176ecae64..fa1ac05b0 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs @@ -5,6 +5,9 @@ using System; using UnityEngine; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; +//#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) +//using Task = System.Threading.Tasks.Task; +//#endif #pragma warning disable 1591 namespace DG.Tweening @@ -40,6 +43,7 @@ namespace DG.Tweening : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); return s; } /// Tweens a Material's named color property using the given gradient @@ -64,6 +68,7 @@ namespace DG.Tweening : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, property, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); return s; } @@ -135,7 +140,8 @@ namespace DG.Tweening } /// - /// Returns a that waits until the tween is killed or has reached the given position (loops included, delays excluded). + /// Returns a that waits until the tween is killed + /// or has reached the given time position (loops included, delays excluded). /// It can be used inside a coroutine as a yield. /// Example usage:yield return myTween.WaitForPosition(2.5f); /// @@ -208,6 +214,104 @@ namespace DG.Tweening #endregion + #region .NET 4.6 or Newer + +#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0) + + #region Async Instructions + + /// + /// Returns an async that waits until the tween is killed or complete. + /// It can be used inside an async operation. + /// Example usage:await myTween.WaitForCompletion(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForCompletion(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && !t.IsComplete()) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or rewinded. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForRewind(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForRewind(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0)) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForKill(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForKill(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or has gone through the given amount of loops. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForElapsedLoops(); + /// + /// Elapsed loops to wait for + public static async System.Threading.Tasks.Task AsyncWaitForElapsedLoops(this Tween t, int elapsedLoops) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && t.CompletedLoops() < elapsedLoops) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed or started + /// (meaning when the tween is set in a playing state the first time, after any eventual delay). + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForPosition(); + /// + /// Position (loops included, delays excluded) to wait for + public static async System.Threading.Tasks.Task AsyncWaitForPosition(this Tween t, float position) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && t.position * (t.CompletedLoops() + 1) < position) await System.Threading.Tasks.Task.Yield(); + } + + /// + /// Returns an async that waits until the tween is killed. + /// It can be used inside an async operation. + /// Example usage:await myTween.AsyncWaitForKill(); + /// + public static async System.Threading.Tasks.Task AsyncWaitForStart(this Tween t) + { + if (!t.active) { + if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t); + return; + } + while (t.active && !t.playedOnce) await System.Threading.Tasks.Task.Yield(); + } + + #endregion +#endif + + #endregion + #endregion #endif } diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta index 6256c54bb..290189f51 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 63c02322328255542995bd02b47b0457 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs index 8a1fb5f00..12a365d4f 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs @@ -129,23 +129,35 @@ namespace DG.Tweening public static TweenerCore CreateDOTweenPathTween( MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode ){ - TweenerCore t; + TweenerCore t = null; + bool rBodyFoundAndTweened = false; #if true // PHYSICS_MARKER - Rigidbody rBody = tweenRigidbody ? target.GetComponent() : null; - if (tweenRigidbody && rBody != null) { - t = isLocal - ? rBody.DOLocalPath(path, duration, pathMode) - : rBody.DOPath(path, duration, pathMode); - } else { + if (tweenRigidbody) { + Rigidbody rBody = target.GetComponent(); + if (rBody != null) { + rBodyFoundAndTweened = true; + t = isLocal + ? rBody.DOLocalPath(path, duration, pathMode) + : rBody.DOPath(path, duration, pathMode); + } + } +#endif +#if true // PHYSICS2D_MARKER + if (!rBodyFoundAndTweened && tweenRigidbody) { + Rigidbody2D rBody2D = target.GetComponent(); + if (rBody2D != null) { + rBodyFoundAndTweened = true; + t = isLocal + ? rBody2D.DOLocalPath(path, duration, pathMode) + : rBody2D.DOPath(path, duration, pathMode); + } + } +#endif + if (!rBodyFoundAndTweened) { t = isLocal ? target.transform.DOLocalPath(path, duration, pathMode) : target.transform.DOPath(path, duration, pathMode); } -#else - t = isLocal - ? target.transform.DOLocalPath(path, duration, pathMode) - : target.transform.DOPath(path, duration, pathMode); -#endif return t; } diff --git a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta index 9164e1ece..ab62186cf 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 7bcaf917d9cf5b84090421a5a2abe42e MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs index e98328417..8bf2ff1b2 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs @@ -66,7 +66,7 @@ namespace DG.Tweening public bool targetIsSelf = true; // If FALSE allows to set the target manually public GameObject targetGO = null; // Used in case targetIsSelf is FALSE - // If TRUE always uses the GO containing this DOTweenAnimation (and not the one containing the target) as DOTween's SetTarget target + // If FALSE always uses the GO containing this DOTweenAnimation (and not the one containing the target) as DOTween's SetTarget target public bool tweenTargetIsTargetGO = true; public float delay; @@ -80,6 +80,7 @@ namespace DG.Tweening public bool isFrom; public bool isIndependentUpdate = false; public bool autoKill = true; + public bool autoGenerate = true; // If TRUE automatically creates the tween at startup public bool isActive = true; public bool isValid; @@ -98,36 +99,36 @@ namespace DG.Tweening public Rect endValueRect = new Rect(0, 0, 0, 0); public Transform endValueTransform; - public bool optionalBool0; + public bool optionalBool0, optionalBool1; public float optionalFloat0; public int optionalInt0; public RotateMode optionalRotationMode = RotateMode.Fast; public ScrambleMode optionalScrambleMode = ScrambleMode.None; public string optionalString; - bool _tweenCreated; // TRUE after the tweens have been created + bool _tweenAutoGenerationCalled; // TRUE after the tweens have been autoGenerated int _playCount = -1; // Used when calling DOPlayNext #region Unity Methods void Awake() { - if (!isActive || !isValid) return; + if (!isActive || !autoGenerate) return; if (animationType != AnimationType.Move || !useTargetAsV3) { // Don't create tweens if we're using a RectTransform as a Move target, // because that will work only inside Start - CreateTween(); - _tweenCreated = true; + CreateTween(false, autoPlay); + _tweenAutoGenerationCalled = true; } } void Start() { - if (_tweenCreated || !isActive || !isValid) return; + if (_tweenAutoGenerationCalled || !isActive || !autoGenerate) return; - CreateTween(); - _tweenCreated = true; + CreateTween(false, autoPlay); + _tweenAutoGenerationCalled = true; } void Reset() @@ -137,13 +138,60 @@ namespace DG.Tweening void OnDestroy() { - if (tween != null && tween.IsActive()) tween.Kill(); + if (tween != null && tween.active) tween.Kill(); tween = null; } - // Used also by DOTweenAnimationInspector when applying runtime changes and restarting - public void CreateTween() + /// + /// Creates/recreates the tween without playing it, but first rewinding and killing the existing one if present. + /// + public void RewindThenRecreateTween() { + if (tween != null && tween.active) tween.Rewind(); + CreateTween(true, false); + } + /// + /// Creates/recreates the tween and plays it, first rewinding and killing the existing one if present. + /// + public void RewindThenRecreateTweenAndPlay() + { + if (tween != null && tween.active) tween.Rewind(); + CreateTween(true, true); + } + /// + /// Creates/recreates the tween from its target's current value without playing it, but first killing the existing one if present. + /// + public void RecreateTween() + { CreateTween(true, false); } + /// + /// Creates/recreates the tween from its target's current value and plays it, first killing the existing one if present. + /// + public void RecreateTweenAndPlay() + { CreateTween(true, true); } + // Used also by DOTweenAnimationInspector when applying runtime changes and restarting + /// + /// Creates the tween manually (called automatically if AutoGenerate is set in the Inspector) + /// from its target's current value. + /// + /// If TRUE and an existing tween was already created (and not killed), kills it and recreates it with the current + /// parameters. Otherwise, if a tween already exists, does nothing. + /// If TRUE also plays the tween, otherwise only creates it + public void CreateTween(bool regenerateIfExists = false, bool andPlay = true) + { + if (!isValid) { + if (regenerateIfExists) { // Called manually: warn users + Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation isn't valid and its tween won't be created", this.gameObject.name), this.gameObject); + } + return; + } + if (tween != null) { + if (tween.active) { + if (regenerateIfExists) tween.Kill(); + else return; + } + tween = null; + } + // if (target == null) { // Debug.LogWarning(string.Format("{0} :: This DOTweenAnimation's target is NULL, because the animation was created with a DOTween Pro version older than 0.9.255. To fix this, exit Play mode then simply select this object, and it will update automatically", this.gameObject.name), this.gameObject); // return; @@ -401,20 +449,20 @@ namespace DG.Tweening case AnimationType.ShakePosition: switch (targetType) { case TargetType.Transform: - tween = ((Transform)target).DOShakePosition(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0); + tween = ((Transform)target).DOShakePosition(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0, optionalBool1); break; #if true // UI_MARKER case TargetType.RectTransform: - tween = ((RectTransform)target).DOShakeAnchorPos(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0); + tween = ((RectTransform)target).DOShakeAnchorPos(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool0, optionalBool1); break; #endif } break; case AnimationType.ShakeScale: - tween = tweenGO.transform.DOShakeScale(duration, endValueV3, optionalInt0, optionalFloat0); + tween = tweenGO.transform.DOShakeScale(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool1); break; case AnimationType.ShakeRotation: - tween = tweenGO.transform.DOShakeRotation(duration, endValueV3, optionalInt0, optionalFloat0); + tween = tweenGO.transform.DOShakeRotation(duration, endValueV3, optionalInt0, optionalFloat0, optionalBool1); break; case AnimationType.CameraAspect: tween = ((Camera)target).DOAspect(endValueFloat, duration); @@ -438,12 +486,14 @@ namespace DG.Tweening if (tween == null) return; + // Created + if (isFrom) { ((Tweener)tween).From(isRelative); } else { tween.SetRelative(isRelative); } - GameObject setTarget = targetIsSelf || !tweenTargetIsTargetGO ? this.gameObject : targetGO; + GameObject setTarget = GetTweenTarget(); tween.SetTarget(setTarget).SetDelay(delay).SetLoops(loops, loopType).SetAutoKill(autoKill) .OnKill(()=> tween = null); if (isSpeedBased) tween.SetSpeedBased(); @@ -471,7 +521,7 @@ namespace DG.Tweening if (onRewind != null) tween.OnRewind(onRewind.Invoke); } else onRewind = null; - if (autoPlay) tween.Play(); + if (andPlay) tween.Play(); else tween.Pause(); if (hasOnTweenCreated && onTweenCreated != null) onTweenCreated.Invoke(); @@ -481,33 +531,94 @@ namespace DG.Tweening #region Public Methods - // These methods are here so they can be called directly via Unity's UGUI event system + #region Special + /// + /// Returns the tweens (if generated and not killed) created by all DOTweenAnimations on this gameObject, + /// in the same order as they appear in the Inspector (top to bottom). + /// Note that a tween is generated inside the Awake call (except RectTransform tweens which are generated inside Start), + /// so this method won't return them before that + /// + public List GetTweens() + { + List result = new List(); + DOTweenAnimation[] anims = this.GetComponents(); + foreach (DOTweenAnimation anim in anims) { + if (anim.tween != null && anim.tween.active) result.Add(anim.tween); + } + return result; + } + + /// + /// Sets the animation target (which must be of the same type of the one set in the Inspector). + /// This is useful if you want to change it BEFORE this + /// creates a tween, while after that it won't have any effect. + /// Consider that a creates its tween inside its Awake (except for special tweens), + /// so you will need to sure your code runs before this object's Awake (via ScriptExecutionOrder or enabling/disabling methods) + /// + /// + /// New target for the animation (must be of the same type of the previous one) + /// If TRUE also uses tweenTarget's gameObject when settings the target-ID of the tween + /// (which is used with DOPlay/DORestart/etc to apply the same operation on all tweens that have the same target-id). + /// You should usually leave this to TRUE if you change the target. + /// + public void SetAnimationTarget(Component tweenTarget, bool useTweenTargetGameObjectForGroupOperations = true) + { + TargetType newTargetType = TypeToDOTargetType(target.GetType()); + if (newTargetType != targetType) { + Debug.LogError("DOTweenAnimation ► SetAnimationTarget: the new target is of a different type from the one set in the Inspector"); + return; + } + target = tweenTarget; + targetGO = target.gameObject; + tweenTargetIsTargetGO = useTweenTargetGameObjectForGroupOperations; + } + + #endregion + + /// + /// Plays all tweens whose target-id is the same as the one set by this animation + /// public override void DOPlay() { - DOTween.Play(this.gameObject); + DOTween.Play(GetTweenTarget()); } + /// + /// Plays backwards all tweens whose target-id is the same as the one set by this animation + /// public override void DOPlayBackwards() { - DOTween.PlayBackwards(this.gameObject); + DOTween.PlayBackwards(GetTweenTarget()); } + /// + /// Plays foward all tweens whose target-id is the same as the one set by this animation + /// public override void DOPlayForward() { - DOTween.PlayForward(this.gameObject); + DOTween.PlayForward(GetTweenTarget()); } + /// + /// Pauses all tweens whose target-id is the same as the one set by this animation + /// public override void DOPause() { - DOTween.Pause(this.gameObject); + DOTween.Pause(GetTweenTarget()); } + /// + /// Pauses/unpauses (depending on the current state) all tweens whose target-id is the same as the one set by this animation + /// public override void DOTogglePause() { - DOTween.TogglePause(this.gameObject); + DOTween.TogglePause(GetTweenTarget()); } + /// + /// Rewinds all tweens created by this animation in the correct order + /// public override void DORewind() { _playCount = -1; @@ -517,16 +628,16 @@ namespace DG.Tweening Tween t = anims[i].tween; if (t != null && t.IsInitialized()) anims[i].tween.Rewind(); } - // DOTween.Rewind(this.gameObject); + // DOTween.Rewind(GetTweenTarget()); } /// - /// Restarts the tween + /// Restarts all tweens whose target-id is the same as the one set by this animation /// public override void DORestart() { DORestart(false); } /// - /// Restarts the tween + /// Restarts all tweens whose target-id is the same as the one set by this animation /// /// If TRUE, re-evaluates the tween's start and end values from its current position. /// Set it to TRUE when spawning the same DOTweenAnimation in different positions (like when using a pooling system) @@ -537,85 +648,128 @@ namespace DG.Tweening if (Debugger.logPriority > 1) Debugger.LogNullTween(tween); return; } if (fromHere && isRelative) ReEvaluateRelativeTween(); - DOTween.Restart(this.gameObject); + DOTween.Restart(GetTweenTarget()); } + /// + /// Completes all tweens whose target-id is the same as the one set by this animation + /// public override void DOComplete() { - DOTween.Complete(this.gameObject); + DOTween.Complete(GetTweenTarget()); } + /// + /// Kills all tweens whose target-id is the same as the one set by this animation + /// public override void DOKill() { - DOTween.Kill(this.gameObject); + DOTween.Kill(GetTweenTarget()); tween = null; } #region Specifics + /// + /// Plays all tweens with the given ID and whose target-id is the same as the one set by this animation + /// public void DOPlayById(string id) { - DOTween.Play(this.gameObject, id); + DOTween.Play(GetTweenTarget(), id); } + /// + /// Plays all tweens with the given ID (regardless of their target gameObject) + /// public void DOPlayAllById(string id) { DOTween.Play(id); } + /// + /// Pauses all tweens that with the given ID (regardless of their target gameObject) + /// public void DOPauseAllById(string id) { DOTween.Pause(id); } + /// + /// Plays backwards all tweens with the given ID and whose target-id is the same as the one set by this animation + /// public void DOPlayBackwardsById(string id) { - DOTween.PlayBackwards(this.gameObject, id); + DOTween.PlayBackwards(GetTweenTarget(), id); } + /// + /// Plays backwards all tweens with the given ID (regardless of their target gameObject) + /// public void DOPlayBackwardsAllById(string id) { DOTween.PlayBackwards(id); } + /// + /// Plays forward all tweens with the given ID and whose target-id is the same as the one set by this animation + /// public void DOPlayForwardById(string id) { - DOTween.PlayForward(this.gameObject, id); + DOTween.PlayForward(GetTweenTarget(), id); } + /// + /// Plays forward all tweens with the given ID (regardless of their target gameObject) + /// public void DOPlayForwardAllById(string id) { DOTween.PlayForward(id); } + /// + /// Plays the next animation on this animation's gameObject (if any) + /// public void DOPlayNext() { DOTweenAnimation[] anims = this.GetComponents(); while (_playCount < anims.Length - 1) { _playCount++; DOTweenAnimation anim = anims[_playCount]; - if (anim != null && anim.tween != null && !anim.tween.IsPlaying() && !anim.tween.IsComplete()) { + if (anim != null && anim.tween != null && anim.tween.active && !anim.tween.IsPlaying() && !anim.tween.IsComplete()) { anim.tween.Play(); break; } } } + /// + /// Rewinds all tweens with the given ID and whose target-id is the same as the one set by this animation, + /// then plays the next animation on this animation's gameObject (if any) + /// public void DORewindAndPlayNext() { _playCount = -1; - DOTween.Rewind(this.gameObject); + DOTween.Rewind(GetTweenTarget()); DOPlayNext(); } + /// + /// Rewinds all tweens with the given ID (regardless of their target gameObject) + /// public void DORewindAllById(string id) { _playCount = -1; DOTween.Rewind(id); } + /// + /// Restarts all tweens with the given ID and whose target-id is the same as the one set by this animation + /// public void DORestartById(string id) { _playCount = -1; - DOTween.Restart(this.gameObject, id); + DOTween.Restart(GetTweenTarget(), id); } + /// + /// Restarts all tweens with the given ID (regardless of their target gameObject) + /// public void DORestartAllById(string id) { _playCount = -1; @@ -623,16 +777,18 @@ namespace DG.Tweening } /// - /// Returns the tweens created by this DOTweenAnimation, in the same order as they appear in the Inspector (top to bottom) + /// Kills all tweens with the given ID and whose target-id is the same as the one set by this animation /// - public List GetTweens() + public void DOKillById(string id) { -// return DOTween.TweensByTarget(this.gameObject); - - List result = new List(); - DOTweenAnimation[] anims = this.GetComponents(); - foreach (DOTweenAnimation anim in anims) result.Add(anim.tween); - return result; + DOTween.Kill(GetTweenTarget(), id); + } + /// + /// Kills all tweens with the given ID (regardless of their target gameObject) + /// + public void DOKillAllById(string id) + { + DOTween.Kill(id); } #endregion @@ -653,7 +809,7 @@ namespace DG.Tweening //#endif #if true // UI_MARKER // if (str == "RectTransform") str = "Transform"; - if (str == "RawImage") str = "Image"; // RawImages are managed like Images for DOTweenAnimation (color and fade use Graphic target anyway) + if (str == "RawImage" || str == "Graphic") str = "Image"; // RawImages/Graphics are managed like Images for DOTweenAnimation (color and fade use Graphic target anyway) #endif return (TargetType)Enum.Parse(typeof(TargetType), str); } @@ -666,7 +822,8 @@ namespace DG.Tweening { if (Application.isPlaying) return null; - CreateTween(); + // CHANGE: first param switched to TRUE otherwise changing an animation and replaying in editor would still play old one + CreateTween(true, autoPlay); return tween; } @@ -676,12 +833,23 @@ namespace DG.Tweening #region Private - // Returns the gameObject whose target component should be animated + /// + /// Returns the gameObject whose target component should be animated + /// + /// GameObject GetTweenGO() { return targetIsSelf ? this.gameObject : targetGO; } + /// + /// Returns the GameObject which should be used/retrieved for SetTarget + /// + GameObject GetTweenTarget() + { + return targetIsSelf || !tweenTargetIsTargetGO ? this.gameObject : targetGO; + } + // Re-evaluate relative position of path void ReEvaluateRelativeTween() { diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta index 5d92ac7ef..a10ceea26 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenAnimation.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 4d0390bd8b8ffd640b34fe25065ff1df MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll index deeda1d16..e3f932440 100644 Binary files a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll and b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll differ diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta index 6bcf81700..9ecbfd3cb 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenPro.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: aa0b1eebb5db27a419fa4564bbe5c9c5 PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: + Any: enabled: 1 settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta index 99f8a2e31..bc6e86311 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenProShortcuts.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 1c3190a1a1c53f449926f6d5542b4ce5 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs index d6855562a..935bbee82 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs @@ -1,17 +1,30 @@ -// Author: Daniele Giardini - http://www.demigiant.com +// Author: Daniele Giardini - http://www.demigiant.com // Created: 2015/03/27 19:02 // // License Copyright (c) Daniele Giardini. // This work is subject to the terms at http://dotween.demigiant.com/license.php + #if false // MODULE_MARKER +using System; +using System.Globalization; +using System.Collections.Generic; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; using UnityEngine; using TMPro; +using Object = UnityEngine.Object; namespace DG.Tweening { + public enum TMPSkewSpanMode + { + /// Applies the skew as-is (like normal skew works): the longer the text-span the higher the last character will be + Default, + /// Applies the skew scaled by the size of the text-span: the max skew/displacement will be the given skew factor + AsMaxSkewFactor + } + /// /// Methods that extend TMP_Text objects and allow to directly create and control tweens from their instances. /// @@ -98,6 +111,29 @@ namespace DG.Tweening return t; } + /// + /// Tweens a TextMeshPro's text from one integer to another, with options for thousands separators + /// + /// The value to start from + /// The end value to reach + /// The duration of the tween + /// If TRUE (default) also adds thousands separators + /// The to use (InvariantCulture if NULL) + public static TweenerCore DOCounter( + this TMP_Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null + ){ + int v = fromValue; + CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture; + TweenerCore t = DOTween.To(() => v, x => { + v = x; + target.text = addThousandsSeparator + ? v.ToString("N0", cInfo) + : v.ToString(); + }, endValue, duration); + t.SetTarget(target); + return t; + } + /// Tweens a TextMeshPro's fontSize to the given value. /// Also stores the TextMeshPro as the tween's target so it can be used for filtered operations /// The end value to reachThe duration of the tween @@ -137,5 +173,865 @@ namespace DG.Tweening #endregion } + + #region DOTweenTMPAnimator + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + // ███ CLASS ███████████████████████████████████████████████████████████████████████████████████████████████████████████ + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + /// + /// Wrapper for objects that enables per-character tweening + /// (you don't need this if instead you want to animate the whole text object). + /// It also contains various handy methods to simply deform text without animating it ;) + /// EXAMPLE: + /// DOTweenTMPAnimator animator = new DOTweenTMPAnimator(myTextMeshProTextField); + /// Tween tween = animator.DOCharScale(characterIndex, scaleValue, duration); + /// + /// + public class DOTweenTMPAnimator : IDisposable + { + static readonly Dictionary _targetToAnimator = new Dictionary(); + + /// that this animator is linked to + public TMP_Text target { get; private set; } + public TMP_TextInfo textInfo { get; private set; } + readonly List _charTransforms = new List(); + TMP_MeshInfo[] _cachedMeshInfos; + bool _ignoreTextChangedEvent; + + /// + /// Creates a new instance of the , which is necessary to animate by single characters. + /// If a already exists for the same object it will be disposed + /// (but not its tweens, those you will have to kill manually). + /// If you want to animate the whole text object you don't need this, and you can use direct DO shortcuts instead. + /// IMPORTANT: the target must have been enabled/activated at least once before you can use it with this + /// + /// The that will be linked to this animator + public DOTweenTMPAnimator(TMP_Text target) + { + if (target == null) { + Debugger.LogError("DOTweenTMPAnimator target can't be null"); + return; + } + if (!target.gameObject.activeInHierarchy) { + Debugger.LogError("You can't create a DOTweenTMPAnimator if its target is disabled"); + return; + } + // Verify that there's no other animators for the same target, and in case dispose them + if (_targetToAnimator.ContainsKey(target)) { + if (Debugger.logPriority >= 2) { + Debugger.Log(string.Format( + "A DOTweenTMPAnimator for \"{0}\" already exists: disposing it because you can't have more than one DOTweenTMPAnimator" + + " for the same TextMesh Pro object. If you have tweens running on the disposed DOTweenTMPAnimator you should kill them manually", + target + )); + } + _targetToAnimator[target].Dispose(); + _targetToAnimator.Remove(target); + } + // + this.target = target; + _targetToAnimator.Add(target, this); + Refresh(); + // Listeners + TMPro_EventManager.TEXT_CHANGED_EVENT.Add(OnTextChanged); + } + + /// + /// If a instance exists for the given target disposes it + /// + public static void DisposeInstanceFor(TMP_Text target) + { + if (!_targetToAnimator.ContainsKey(target)) return; + _targetToAnimator[target].Dispose(); + _targetToAnimator.Remove(target); + } + + /// + /// Clears and disposes of this object + /// + public void Dispose() + { + target = null; + _charTransforms.Clear(); + textInfo = null; + _cachedMeshInfos = null; + TMPro_EventManager.TEXT_CHANGED_EVENT.Remove(OnTextChanged); + } + + /// + /// Refreshes the animator text data and resets all transformation data. Call this after you change the target + /// + public void Refresh() + { + _ignoreTextChangedEvent = true; + target.ForceMeshUpdate(true); + textInfo = target.textInfo; + _cachedMeshInfos = textInfo.CopyMeshInfoVertexData(); + int totChars = textInfo.characterCount; + int totCurrent = _charTransforms.Count; + if (totCurrent > totChars) { + _charTransforms.RemoveRange(totChars, totCurrent - totChars); + totCurrent = totChars; + } + for (int i = 0; i < totCurrent; ++i) { + CharTransform c = _charTransforms[i]; + c.ResetTransformationData(); + c.Refresh(textInfo, _cachedMeshInfos); + _charTransforms[i] = c; + } + for (int i = totCurrent; i < totChars; ++i) _charTransforms.Add(new CharTransform(i, textInfo, _cachedMeshInfos)); + _ignoreTextChangedEvent = false; + } + + /// + /// Resets all deformations + /// + public void Reset() + { + int totCurrent = _charTransforms.Count; + for (int i = 0; i < totCurrent; ++i) _charTransforms[i].ResetAll(target, textInfo.meshInfo, _cachedMeshInfos); + } + + void OnTextChanged(Object obj) + { + if (_ignoreTextChangedEvent || target == null || obj != target) return; + Refresh(); + } + + bool ValidateChar(int charIndex, bool isTween = true) + { + if (textInfo.characterCount <= charIndex) { + Debugger.LogError(string.Format("CharIndex {0} doesn't exist", charIndex)); + return false; + } + if (!textInfo.characterInfo[charIndex].isVisible) { + if (Debugger.logPriority > 1) { + if (isTween) { + Debugger.Log(string.Format( + "CharIndex {0} isn't visible, ignoring it and returning an empty tween (TextMesh Pro will behave weirdly if invisible chars are included in the animation)", + charIndex + )); + } else { + Debugger.Log(string.Format("CharIndex {0} isn't visible, ignoring it", charIndex)); + } + } + return false; + } + return true; + } + + bool ValidateSpan(int fromCharIndex, int toCharIndex, out int firstVisibleCharIndex, out int lastVisibleCharIndex) + { + firstVisibleCharIndex = -1; // First visible/existing charIndex from given index + lastVisibleCharIndex = -1; // Last visible/existing charIndex backwards from given index + int charCount = textInfo.characterCount; + if (fromCharIndex >= charCount) return false; + if (toCharIndex >= charCount) toCharIndex = charCount - 1; + for (int i = fromCharIndex; i < toCharIndex + 1; ++i) { + if (!_charTransforms[i].isVisible) continue; + firstVisibleCharIndex = i; + break; + } + if (firstVisibleCharIndex == -1) return false; + for (int i = toCharIndex; i > firstVisibleCharIndex - 1; --i) { + if (!_charTransforms[i].isVisible) continue; + lastVisibleCharIndex = i; + break; + } + if (lastVisibleCharIndex == -1) return false; + return true; + } + + #region Word Setters + + /// + /// Skews a span of characters uniformly (like normal skew works in graphic applications) + /// + /// First char index of the span to skew + /// Last char index of the span to skew + /// Skew factor + /// If TRUE skews the top side of the span, otherwise the bottom one + public void SkewSpanX(int fromCharIndex, int toCharIndex, float skewFactor, bool skewTop = true) + { + int firstVisibleCharIndex, lastVisibleCharIndex; + if (!ValidateSpan(fromCharIndex, toCharIndex, out firstVisibleCharIndex, out lastVisibleCharIndex)) return; + for (int i = firstVisibleCharIndex; i < lastVisibleCharIndex + 1; ++i) { + if (!_charTransforms[i].isVisible) continue; + CharVertices v = _charTransforms[i].GetVertices(); + float skew = SkewCharX(i, skewFactor, skewTop); + } + } + + /// + /// Skews a span of characters uniformly (like normal skew works in graphic applications) + /// + /// First char index of the span to skew + /// Last char index of the span to skew + /// Skew factor + /// Skew mode + /// If TRUE skews the right side of the span, otherwise the left one + public void SkewSpanY( + int fromCharIndex, int toCharIndex, float skewFactor, + TMPSkewSpanMode mode = TMPSkewSpanMode.Default, bool skewRight = true + ){ + int firstVisibleCharIndex, lastVisibleCharIndex; + if (!ValidateSpan(fromCharIndex, toCharIndex, out firstVisibleCharIndex, out lastVisibleCharIndex)) return; + if (mode == TMPSkewSpanMode.AsMaxSkewFactor) { + CharVertices firstVisibleCharVertices = _charTransforms[firstVisibleCharIndex].GetVertices(); + CharVertices lastVisibleCharVertices = _charTransforms[lastVisibleCharIndex].GetVertices(); + float spanW = Mathf.Abs(lastVisibleCharVertices.bottomRight.x - firstVisibleCharVertices.bottomLeft.x); + float spanH = Mathf.Abs(lastVisibleCharVertices.topRight.y - lastVisibleCharVertices.bottomRight.y); + float ratio = spanH / spanW; + skewFactor *= ratio; + } + float offsetY = 0; + CharVertices prevCharVertices = new CharVertices(); + float prevCharSkew = 0; + if (skewRight) { + for (int i = firstVisibleCharIndex; i < lastVisibleCharIndex + 1; ++i) { + if (!_charTransforms[i].isVisible) continue; + CharVertices v = _charTransforms[i].GetVertices(); + float skew = SkewCharY(i, skewFactor, skewRight); + if (i > firstVisibleCharIndex) { + float prevCharW = Mathf.Abs(prevCharVertices.bottomLeft.x - prevCharVertices.bottomRight.x); + float charsDist = Mathf.Abs(v.bottomLeft.x - prevCharVertices.bottomRight.x); + offsetY += prevCharSkew + (prevCharSkew * charsDist) / prevCharW; + SetCharOffset(i, new Vector3(0, _charTransforms[i].offset.y + offsetY, 0)); + } + prevCharVertices = v; + prevCharSkew = skew; + } + } else { + for (int i = lastVisibleCharIndex; i > firstVisibleCharIndex - 1; --i) { + if (!_charTransforms[i].isVisible) continue; + CharVertices v = _charTransforms[i].GetVertices(); + float skew = SkewCharY(i, skewFactor, skewRight); + if (i < lastVisibleCharIndex) { + float prevCharW = Mathf.Abs(prevCharVertices.bottomLeft.x - prevCharVertices.bottomRight.x); + float charsDist = Mathf.Abs(v.bottomRight.x - prevCharVertices.bottomLeft.x); + offsetY += prevCharSkew + (prevCharSkew * charsDist) / prevCharW; + SetCharOffset(i, new Vector3(0, _charTransforms[i].offset.y + offsetY, 0)); + } + prevCharVertices = v; + prevCharSkew = skew; + } + } + } + + #endregion + + #region Char Getters + + /// + /// Returns the current color of the given character, if it exists and is visible. + /// + /// Character index + public Color GetCharColor(int charIndex) + { + if (!ValidateChar(charIndex)) return Color.white; + return _charTransforms[charIndex].GetColor(textInfo.meshInfo); + } + + /// + /// Returns the current offset of the given character, if it exists and is visible. + /// + /// Character index + public Vector3 GetCharOffset(int charIndex) + { + if (!ValidateChar(charIndex)) return Vector3.zero; + return _charTransforms[charIndex].offset; + } + + /// + /// Returns the current rotation of the given character, if it exists and is visible. + /// + /// Character index + public Vector3 GetCharRotation(int charIndex) + { + if (!ValidateChar(charIndex)) return Vector3.zero; + return _charTransforms[charIndex].rotation.eulerAngles; + } + + /// + /// Returns the current scale of the given character, if it exists and is visible. + /// + /// Character index + public Vector3 GetCharScale(int charIndex) + { + if (!ValidateChar(charIndex)) return Vector3.zero; + return _charTransforms[charIndex].scale; + } + + #endregion + + #region Char Setters + + /// + /// Immediately sets the color of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Color to set + public void SetCharColor(int charIndex, Color32 color) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateColor(target, color, textInfo.meshInfo); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately sets the offset of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Offset to set + public void SetCharOffset(int charIndex, Vector3 offset) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateGeometry(target, offset, c.rotation, c.scale, _cachedMeshInfos); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately sets the rotation of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Rotation to set + public void SetCharRotation(int charIndex, Vector3 rotation) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateGeometry(target, c.offset, Quaternion.Euler(rotation), c.scale, _cachedMeshInfos); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately sets the scale of the given character. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Scale to set + public void SetCharScale(int charIndex, Vector3 scale) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.UpdateGeometry(target, c.offset, c.rotation, scale, _cachedMeshInfos); + _charTransforms[charIndex] = c; + } + + /// + /// Immediately shifts the vertices of the given character by the given factor. + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + /// Top left offset + /// Top right offset + /// Bottom left offset + /// Bottom right offset + public void ShiftCharVertices(int charIndex, Vector3 topLeftShift, Vector3 topRightShift, Vector3 bottomLeftShift, Vector3 bottomRightShift) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.ShiftVertices(target, topLeftShift, topRightShift, bottomLeftShift, bottomRightShift); + _charTransforms[charIndex] = c; + } + + /// + /// Skews the given character horizontally along the X axis and returns the skew amount applied (based on the character's size) + /// + /// Character index + /// skew amount + /// If TRUE skews the top side of the character, otherwise the bottom one + public float SkewCharX(int charIndex, float skewFactor, bool skewTop = true) + { + if (!ValidateChar(charIndex)) return 0; + Vector3 skewV = new Vector3(skewFactor, 0, 0); + CharTransform c = _charTransforms[charIndex]; + if (skewTop) c.ShiftVertices(target, skewV, skewV, Vector3.zero, Vector3.zero); + else c.ShiftVertices(target, Vector3.zero, Vector3.zero, skewV, skewV); + _charTransforms[charIndex] = c; + return skewFactor; + } + + /// + /// Skews the given character vertically along the Y axis and returns the skew amount applied (based on the character's size) + /// + /// Character index + /// skew amount + /// If TRUE skews the right side of the character, otherwise the left one + /// If TRUE applies exactly the given , + /// otherwise modifies it based on the aspectRation of the character + public float SkewCharY(int charIndex, float skewFactor, bool skewRight = true, bool fixedSkew = false) + { + if (!ValidateChar(charIndex)) return 0; + float skew = fixedSkew ? skewFactor : skewFactor * textInfo.characterInfo[charIndex].aspectRatio; + Vector3 skewV = new Vector3(0, skew, 0); + CharTransform c = _charTransforms[charIndex]; + if (skewRight) c.ShiftVertices(target, Vector3.zero, skewV, Vector3.zero, skewV); + else c.ShiftVertices(target, skewV, Vector3.zero, skewV, Vector3.zero); + _charTransforms[charIndex] = c; + return skew; + } + + /// + /// Resets the eventual vertices shift applied to the given character via . + /// Will do nothing if the is invalid or the character isn't visible + /// + /// Character index + public void ResetVerticesShift(int charIndex) + { + if (!ValidateChar(charIndex)) return; + CharTransform c = _charTransforms[charIndex]; + c.ResetVerticesShift(target); + _charTransforms[charIndex] = c; + } + + #endregion + + #region Char Tweens + + /// Tweens a character's alpha to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOFadeChar(int charIndex, float endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.ToAlpha(() => _charTransforms[charIndex].GetColor(textInfo.meshInfo), x => { + _charTransforms[charIndex].UpdateAlpha(target, x, textInfo.meshInfo); + }, endValue, duration); + return t; + } + + /// Tweens a character's color to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOColorChar(int charIndex, Color endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].GetColor(textInfo.meshInfo), x => { + _charTransforms[charIndex].UpdateColor(target, x, textInfo.meshInfo); + }, endValue, duration); + return t; + } + + /// Tweens a character's offset to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOOffsetChar(int charIndex, Vector3 endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].offset, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, x, charT.rotation, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, endValue, duration); + return t; + } + + /// Tweens a character's rotation to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + /// Rotation mode + public TweenerCore DORotateChar(int charIndex, Vector3 endValue, float duration, RotateMode mode = RotateMode.Fast) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].rotation, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, x, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, endValue, duration); + t.plugOptions.rotateMode = mode; + return t; + } + + /// Tweens a character's scale to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOScaleChar(int charIndex, float endValue, float duration) + { + return DOScaleChar(charIndex, new Vector3(endValue, endValue, endValue), duration); + } + /// Tweens a character's color to the given value and returns the . + /// Will return NULL if the is invalid or the character isn't visible. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The end value to reachThe duration of the tween + public TweenerCore DOScaleChar(int charIndex, Vector3 endValue, float duration) + { + if (!ValidateChar(charIndex)) return null; + TweenerCore t = DOTween.To(() => _charTransforms[charIndex].scale, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, charT.rotation, x, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, endValue, duration); + return t; + } + + /// Punches a character's offset towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch offset and the opposite offset, + /// while 0 oscillates only between the punch offset and the start offset + public Tweener DOPunchCharOffset(int charIndex, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Punch(() => _charTransforms[charIndex].offset, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, x, charT.rotation, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, punch, duration, vibrato, elasticity); + } + + /// Punches a character's rotation towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch rotation and the opposite rotation, + /// while 0 oscillates only between the punch rotation and the start rotation + public Tweener DOPunchCharRotation(int charIndex, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Punch(() => _charTransforms[charIndex].rotation.eulerAngles, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, Quaternion.Euler(x), charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, punch, duration, vibrato, elasticity); + } + + /// Punches a character's scale towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength (added to the character's current scale) + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch scale and the opposite scale, + /// while 0 oscillates only between the punch scale and the start scale + public Tweener DOPunchCharScale(int charIndex, float punch, float duration, int vibrato = 10, float elasticity = 1) + { + return DOPunchCharScale(charIndex, new Vector3(punch, punch, punch), duration, vibrato, elasticity); + } + /// Punches a character's scale towards the given direction and then back to the starting one + /// as if it was connected to the starting position via an elastic. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The punch strength (added to the character's current scale) + /// The duration of the tween + /// Indicates how much will the punch vibrate per second + /// Represents how much (0 to 1) the vector will go beyond the starting size when bouncing backwards. + /// 1 creates a full oscillation between the punch scale and the opposite scale, + /// while 0 oscillates only between the punch scale and the start scale + public Tweener DOPunchCharScale(int charIndex, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Punch(() => _charTransforms[charIndex].scale, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, charT.rotation, x, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, punch, duration, vibrato, elasticity); + } + + /// Shakes a character's offset with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharOffset(int charIndex, float duration, float strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + return DOShakeCharOffset(charIndex, duration, new Vector3(strength, strength, strength), vibrato, randomness, fadeOut); + } + /// Shakes a character's offset with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharOffset(int charIndex, float duration, Vector3 strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Shake(() => _charTransforms[charIndex].offset, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, x, charT.rotation, charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, duration, strength, vibrato, randomness, fadeOut); + } + + /// Shakes a character's rotation with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharRotation(int charIndex, float duration, Vector3 strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Shake(() => _charTransforms[charIndex].rotation.eulerAngles, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, Quaternion.Euler(x), charT.scale, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, duration, strength, vibrato, randomness, fadeOut); + } + + /// Shakes a character's scale with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharScale(int charIndex, float duration, float strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + return DOShakeCharScale(charIndex, duration, new Vector3(strength, strength, strength), vibrato, randomness, fadeOut); + } + /// Shakes a character's scale with the given values. + /// The index of the character to tween (will throw an error if it doesn't exist) + /// The duration of the tween + /// The shake strength + /// Indicates how much will the shake vibrate + /// Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware). + /// Setting it to 0 will shake along a single direction. + /// If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not + public Tweener DOShakeCharScale(int charIndex, float duration, Vector3 strength, int vibrato = 10, float randomness = 90, bool fadeOut = true) + { + if (!ValidateChar(charIndex)) return null; + if (duration <= 0) { + if (Debugger.logPriority > 0) Debug.LogWarning("Duration can't be 0, returning NULL without creating a tween"); + return null; + } + return DOTween.Shake(() => _charTransforms[charIndex].scale, x => { + CharTransform charT = _charTransforms[charIndex]; + charT.UpdateGeometry(target, charT.offset, charT.rotation, x, _cachedMeshInfos); + _charTransforms[charIndex] = charT; + }, duration, strength, vibrato, randomness, fadeOut); + } + + #endregion + + // ███ INTERNAL CLASSES ████████████████████████████████████████████████████████████████████████████████████████████████ + + struct CharVertices + { + public Vector3 bottomLeft, topLeft, topRight, bottomRight; + + public CharVertices(Vector3 bottomLeft, Vector3 topLeft, Vector3 topRight, Vector3 bottomRight) + { + this.bottomLeft = bottomLeft; + this.topLeft = topLeft; + this.topRight = topRight; + this.bottomRight = bottomRight; + } + } + + // █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ + + // Vertices of each character are: + // 0 : bottom left, 1 : top left, 2 : top right, 3 : bottom right + struct CharTransform + { + public int charIndex; + public bool isVisible { get; private set; } // FALSE both if it's invisible or if it's a space + public Vector3 offset; + public Quaternion rotation; + public Vector3 scale; + Vector3 _topLeftShift, _topRightShift, _bottomLeftShift, _bottomRightShift; + Vector3 _charMidBaselineOffset; + int _matIndex, _firstVertexIndex; + TMP_MeshInfo _meshInfo; + + public CharTransform(int charIndex, TMP_TextInfo textInfo, TMP_MeshInfo[] cachedMeshInfos) : this() + { + this.charIndex = charIndex; + offset = Vector3.zero; + rotation = Quaternion.identity; + scale = Vector3.one; + Refresh(textInfo, cachedMeshInfos); + } + + public void Refresh(TMP_TextInfo textInfo, TMP_MeshInfo[] cachedMeshInfos) + { + TMP_CharacterInfo charInfo = textInfo.characterInfo[charIndex]; + bool isSpaceChar = charInfo.character == ' '; + isVisible = charInfo.isVisible && !isSpaceChar; + _matIndex = charInfo.materialReferenceIndex; + _firstVertexIndex = charInfo.vertexIndex; + _meshInfo = textInfo.meshInfo[_matIndex]; + Vector3[] cachedVertices = cachedMeshInfos[_matIndex].vertices; + _charMidBaselineOffset = isSpaceChar + ? Vector3.zero + : (cachedVertices[_firstVertexIndex] + cachedVertices[_firstVertexIndex + 2]) * 0.5f; + } + + public void ResetAll(TMP_Text target, TMP_MeshInfo[] meshInfos, TMP_MeshInfo[] cachedMeshInfos) + { + ResetGeometry(target, cachedMeshInfos); + ResetColors(target, meshInfos); + } + + public void ResetTransformationData() + { + offset = Vector3.zero; + rotation = Quaternion.identity; + scale = Vector3.one; + _topLeftShift = _topRightShift = _bottomLeftShift = _bottomRightShift = Vector3.zero; + } + + public void ResetGeometry(TMP_Text target, TMP_MeshInfo[] cachedMeshInfos) + { + ResetTransformationData(); + Vector3[] destinationVertices = _meshInfo.vertices; + Vector3[] cachedVertices = cachedMeshInfos[_matIndex].vertices; + destinationVertices[_firstVertexIndex + 0] = cachedVertices[_firstVertexIndex + 0]; + destinationVertices[_firstVertexIndex + 1] = cachedVertices[_firstVertexIndex + 1]; + destinationVertices[_firstVertexIndex + 2] = cachedVertices[_firstVertexIndex + 2]; + destinationVertices[_firstVertexIndex + 3] = cachedVertices[_firstVertexIndex + 3]; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + } + + public void ResetColors(TMP_Text target, TMP_MeshInfo[] meshInfos) + { + Color color = target.color; + Color32[] vertexCols = meshInfos[_matIndex].colors32; + vertexCols[_firstVertexIndex] = color; + vertexCols[_firstVertexIndex + 1] = color; + vertexCols[_firstVertexIndex + 2] = color; + vertexCols[_firstVertexIndex + 3] = color; + target.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); + } + + public Color32 GetColor(TMP_MeshInfo[] meshInfos) + { + return meshInfos[_matIndex].colors32[_firstVertexIndex]; + } + + public CharVertices GetVertices() + { + return new CharVertices( + _meshInfo.vertices[_firstVertexIndex], _meshInfo.vertices[_firstVertexIndex + 1], + _meshInfo.vertices[_firstVertexIndex + 2], _meshInfo.vertices[_firstVertexIndex + 3] + ); + } + + public void UpdateAlpha(TMP_Text target, Color alphaColor, TMP_MeshInfo[] meshInfos, bool apply = true) + { + byte alphaByte = (byte)(alphaColor.a * 255); + Color32[] vertexCols = meshInfos[_matIndex].colors32; + vertexCols[_firstVertexIndex].a = alphaByte; + vertexCols[_firstVertexIndex + 1].a = alphaByte; + vertexCols[_firstVertexIndex + 2].a = alphaByte; + vertexCols[_firstVertexIndex + 3].a = alphaByte; + if (apply) target.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); + } + + public void UpdateColor(TMP_Text target, Color32 color, TMP_MeshInfo[] meshInfos, bool apply = true) + { + Color32[] vertexCols = meshInfos[_matIndex].colors32; + vertexCols[_firstVertexIndex] = color; + vertexCols[_firstVertexIndex + 1] = color; + vertexCols[_firstVertexIndex + 2] = color; + vertexCols[_firstVertexIndex + 3] = color; + if (apply) target.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); + } + + public void UpdateGeometry(TMP_Text target, Vector3 offset, Quaternion rotation, Vector3 scale, TMP_MeshInfo[] cachedMeshInfos, bool apply = true) + { + this.offset = offset; + this.rotation = rotation; + this.scale = scale; + + if (!apply) return; + + Vector3[] destinationVertices = _meshInfo.vertices; + Vector3[] cachedVertices = cachedMeshInfos[_matIndex].vertices; + destinationVertices[_firstVertexIndex] = cachedVertices[_firstVertexIndex + 0] - _charMidBaselineOffset; + destinationVertices[_firstVertexIndex + 1] = cachedVertices[_firstVertexIndex + 1] - _charMidBaselineOffset; + destinationVertices[_firstVertexIndex + 2] = cachedVertices[_firstVertexIndex + 2] - _charMidBaselineOffset; + destinationVertices[_firstVertexIndex + 3] = cachedVertices[_firstVertexIndex + 3] - _charMidBaselineOffset; + Matrix4x4 matrix = Matrix4x4.TRS(this.offset, this.rotation, this.scale); + destinationVertices[_firstVertexIndex] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 0]) + _charMidBaselineOffset + _bottomLeftShift; + destinationVertices[_firstVertexIndex + 1] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 1]) + _charMidBaselineOffset + _topLeftShift; + destinationVertices[_firstVertexIndex + 2] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 2]) + _charMidBaselineOffset + _topRightShift; + destinationVertices[_firstVertexIndex + 3] + = matrix.MultiplyPoint3x4(destinationVertices[_firstVertexIndex + 3]) + _charMidBaselineOffset + _bottomRightShift; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + } + + public void ShiftVertices(TMP_Text target, Vector3 topLeftShift, Vector3 topRightShift, Vector3 bottomLeftShift, Vector3 bottomRightShift) + { + _topLeftShift += topLeftShift; + _topRightShift += topRightShift; + _bottomLeftShift += bottomLeftShift; + _bottomRightShift += bottomRightShift; + Vector3[] destinationVertices = _meshInfo.vertices; + destinationVertices[_firstVertexIndex] = destinationVertices[_firstVertexIndex] + _bottomLeftShift; + destinationVertices[_firstVertexIndex + 1] = destinationVertices[_firstVertexIndex + 1] + _topLeftShift; + destinationVertices[_firstVertexIndex + 2] = destinationVertices[_firstVertexIndex + 2] + _topRightShift; + destinationVertices[_firstVertexIndex + 3] = destinationVertices[_firstVertexIndex + 3] + _bottomRightShift; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + } + + public void ResetVerticesShift(TMP_Text target) + { + Vector3[] destinationVertices = _meshInfo.vertices; + destinationVertices[_firstVertexIndex] = destinationVertices[_firstVertexIndex] - _bottomLeftShift; + destinationVertices[_firstVertexIndex + 1] = destinationVertices[_firstVertexIndex + 1] - _topLeftShift; + destinationVertices[_firstVertexIndex + 2] = destinationVertices[_firstVertexIndex + 2] - _topRightShift; + destinationVertices[_firstVertexIndex + 3] = destinationVertices[_firstVertexIndex + 3] - _bottomRightShift; + _meshInfo.mesh.vertices = _meshInfo.vertices; + target.UpdateGeometry(_meshInfo.mesh, _matIndex); + _topLeftShift = _topRightShift = _bottomLeftShift = _bottomRightShift = Vector3.zero; + } + } + } + + #endregion } #endif diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta index 66ff6cdf3..613cdbcb5 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTextMeshPro.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 8fb0d65aa5b048649a3a785b82b8f8db MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs index 7b7c98833..0c57bfef9 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs @@ -98,6 +98,7 @@ namespace DG.Tweening : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); return s; } @@ -219,6 +220,7 @@ namespace DG.Tweening : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); } + s.SetTarget(target); return s; } diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta index d9c790216..c909f96cc 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/DOTweenTk2d.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: b590cd7c24ffa5d4faa5b6fa993cccad MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs index dde83c93a..0b389643e 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs @@ -67,7 +67,7 @@ namespace DG.DOTweenEditor typeof(SpriteRenderer), #endif #if true // UI_MARKER - typeof(Image), typeof(Text), typeof(RawImage), + typeof(Image), typeof(Text), typeof(RawImage), typeof(Graphic), #endif typeof(Renderer), }}, @@ -77,7 +77,7 @@ namespace DG.DOTweenEditor typeof(SpriteRenderer), #endif #if true // UI_MARKER - typeof(Image), typeof(Text), typeof(CanvasGroup), typeof(RawImage), + typeof(Image), typeof(Text), typeof(CanvasGroup), typeof(RawImage), typeof(Graphic), #endif typeof(Renderer), }}, @@ -336,7 +336,10 @@ namespace DG.DOTweenEditor // _src.animationType = (DOTweenAnimation.AnimationType)EditorGUILayout.EnumPopup(_src.animationType, EditorGUIUtils.popupButton); GUI.enabled = GUI.enabled && _src.isActive; _src.animationType = AnimationToDOTweenAnimationType(_AnimationType[EditorGUILayout.Popup(DOTweenAnimationTypeToPopupId(_src.animationType), _AnimationType)]); - _src.autoPlay = DeGUILayout.ToggleButton(_src.autoPlay, new GUIContent("AutoPlay", "If selected, the tween will play automatically")); + _src.autoGenerate = DeGUILayout.ToggleButton(_src.autoGenerate, new GUIContent("AutoGenerate", "If selected, the tween will be generated at startup (during Start for RectTransform position tween, Awake for all the others)")); + if (_src.autoGenerate) { + _src.autoPlay = DeGUILayout.ToggleButton(_src.autoPlay, new GUIContent("AutoPlay", "If selected, the tween will play automatically")); + } _src.autoKill = DeGUILayout.ToggleButton(_src.autoKill, new GUIContent("AutoKill", "If selected, the tween will be killed when it completes, and won't be reusable")); GUILayout.EndHorizontal(); if (prevAnimType != _src.animationType) { @@ -381,6 +384,7 @@ namespace DG.DOTweenEditor _src.optionalInt0 = 10; _src.optionalFloat0 = 90; _src.optionalBool0 = false; + _src.optionalBool1 = true; break; case DOTweenAnimation.AnimationType.CameraAspect: case DOTweenAnimation.AnimationType.CameraFieldOfView: @@ -463,7 +467,7 @@ namespace DG.DOTweenEditor _src.delay = EditorGUILayout.FloatField("Delay", _src.delay); if (_src.delay < 0) _src.delay = 0; _src.isIndependentUpdate = EditorGUILayout.Toggle("Ignore TimeScale", _src.isIndependentUpdate); - _src.easeType = EditorGUIUtils.FilteredEasePopup(_src.easeType); + _src.easeType = EditorGUIUtils.FilteredEasePopup("Ease", _src.easeType); if (_src.easeType == Ease.INTERNAL_Custom) { _src.easeCurve = EditorGUILayout.CurveField(" Ease Curve", _src.easeCurve); } @@ -533,6 +537,7 @@ namespace DG.DOTweenEditor canBeRelative = false; _src.optionalInt0 = EditorGUILayout.IntSlider(new GUIContent(" Vibrato", "How much will the shake vibrate"), _src.optionalInt0, 1, 50); _src.optionalFloat0 = EditorGUILayout.Slider(new GUIContent(" Randomness", "The shake randomness"), _src.optionalFloat0, 0, 90); + _src.optionalBool1 = EditorGUILayout.Toggle(new GUIContent(" FadeOut", "If selected the shake will fade out, otherwise it will constantly play with full force"), _src.optionalBool1); if (_src.animationType == DOTweenAnimation.AnimationType.ShakePosition) _src.optionalBool0 = EditorGUILayout.Toggle(" Snapping", _src.optionalBool0); break; case DOTweenAnimation.AnimationType.CameraAspect: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta index a3905ce26..d2d7eee1d 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenAnimationInspector.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: e0203fd81362bab4d842d87ad09ee76e MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta index 1586a4831..53780cce8 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenPreviewManager.cs.meta @@ -1,11 +1,8 @@ fileFormatVersion: 2 guid: 22292a5f27a9a644ba9e6ad1bf863531 MonoImporter: - externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: - assetBundleName: - assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll index e0e8a0f77..7bce84326 100644 Binary files a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll and b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll differ diff --git a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta index c980e74bf..62ab8c093 100644 --- a/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta +++ b/GQ_TongXin/Assets/Demigiant/DOTweenPro/Editor/DOTweenProEditor.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: a6402d4311c862b4eb1325590d6466af PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: - enabled: 1 + Any: + enabled: 0 settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll index 588641850..61b68998b 100644 Binary files a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll and b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll differ diff --git a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta index c99073fa8..1ed91993b 100644 --- a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta +++ b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/DemiLib.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: 54be29b67d0d29a478da2c6e5c62f091 PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: + Any: enabled: 1 settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll index 04a32ddee..0c792c10c 100644 Binary files a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll and b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll differ diff --git a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta index 75149a3c0..aa20ddfe7 100644 --- a/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta +++ b/GQ_TongXin/Assets/Demigiant/DemiLib/Core/Editor/DemiEditor.dll.meta @@ -1,21 +1,22 @@ fileFormatVersion: 2 guid: 202f9ddaf2c1a8a429504f7f3cd7b84f PluginImporter: - externalObjects: {} - serializedVersion: 2 + serializedVersion: 1 iconMap: {} executionOrder: {} - defineConstraints: [] isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 platformData: - - first: - Any: - second: - enabled: 1 + Any: + enabled: 0 settings: {} + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU userData: assetBundleName: assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins.meta b/GQ_TongXin/Assets/Plugins.meta new file mode 100644 index 000000000..60080ee46 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e96abeb1f09348347b332c382de47ebf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant.meta b/GQ_TongXin/Assets/Plugins/Demigiant.meta new file mode 100644 index 000000000..c003b0010 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a17218ae3d0bbc443956d5db81e3e367 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTween.meta b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween.meta new file mode 100644 index 000000000..756e59710 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d51d58128dcf97146aec2b9e6a077dcc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules.meta b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules.meta new file mode 100644 index 000000000..e954fdc44 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68f34ce47fd3f724cabb4cba78a0ddcf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs new file mode 100644 index 000000000..aff123565 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs @@ -0,0 +1,142 @@ +using UnityEngine; + +#if false || EPO_DOTWEEN // MODULE_MARKER + +using EPOOutline; +using DG.Tweening.Plugins.Options; +using DG.Tweening; +using DG.Tweening.Core; + +namespace DG.Tweening +{ + public static class DOTweenModuleEPOOutline + { + public static int DOKill(this SerializedPass target, bool complete) + { + return DOTween.Kill(target, complete); + } + + public static TweenerCore DOFloat(this SerializedPass target, string propertyName, float endValue, float duration) + { + var tweener = DOTween.To(() => target.GetFloat(propertyName), x => target.SetFloat(propertyName, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFade(this SerializedPass target, string propertyName, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this SerializedPass target, string propertyName, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.GetColor(propertyName), x => target.SetColor(propertyName, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOVector(this SerializedPass target, string propertyName, Vector4 endValue, float duration) + { + var tweener = DOTween.To(() => target.GetVector(propertyName), x => target.SetVector(propertyName, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFloat(this SerializedPass target, int propertyId, float endValue, float duration) + { + var tweener = DOTween.To(() => target.GetFloat(propertyId), x => target.SetFloat(propertyId, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOFade(this SerializedPass target, int propertyId, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this SerializedPass target, int propertyId, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.GetColor(propertyId), x => target.SetColor(propertyId, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DOVector(this SerializedPass target, int propertyId, Vector4 endValue, float duration) + { + var tweener = DOTween.To(() => target.GetVector(propertyId), x => target.SetVector(propertyId, x), endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static int DOKill(this Outlinable.OutlineProperties target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + public static int DOKill(this Outliner target, bool complete = false) + { + return DOTween.Kill(target, complete); + } + + public static TweenerCore DOFade(this Outlinable.OutlineProperties target, float endValue, float duration) + { + var tweener = DOTween.ToAlpha(() => target.Color, x => target.Color = x, endValue, duration); + tweener.SetOptions(true).SetTarget(target); + return tweener; + } + + public static TweenerCore DOColor(this Outlinable.OutlineProperties target, Color endValue, float duration) + { + var tweener = DOTween.To(() => target.Color, x => target.Color = x, endValue, duration); + tweener.SetOptions(false).SetTarget(target); + return tweener; + } + + public static TweenerCore DODilateShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + public static TweenerCore DOBlurShift(this Outlinable.OutlineProperties target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + public static TweenerCore DOBlurShift(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.BlurShift, x => target.BlurShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + public static TweenerCore DODilateShift(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.DilateShift, x => target.DilateShift = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + public static TweenerCore DOInfoRendererScale(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.InfoRendererScale, x => target.InfoRendererScale = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + + public static TweenerCore DOPrimaryRendererScale(this Outliner target, float endValue, float duration, bool snapping = false) + { + var tweener = DOTween.To(() => target.PrimaryRendererScale, x => target.PrimaryRendererScale = x, endValue, duration); + tweener.SetOptions(snapping).SetTarget(target); + return tweener; + } + } +} +#endif diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta new file mode 100644 index 000000000..4b8991f55 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e944529dcaee98f4e9498d80e541d93e +timeCreated: 1602593330 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro.meta b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro.meta new file mode 100644 index 000000000..aeb08f059 --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0dd3254dc63d66b459aefa5689ecf2b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs new file mode 100644 index 000000000..c9df3968c --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs @@ -0,0 +1,9 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/27 19:02 +// +// License Copyright (c) Daniele Giardini. +// This work is subject to the terms at http://dotween.demigiant.com/license.php + + +#if false // MODULE_MARKER +#endif diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta new file mode 100644 index 000000000..32c1ec84f --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeAudio.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d1aa01bacf85c04ea18116651a7f0db +timeCreated: 1587116610 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs new file mode 100644 index 000000000..c9df3968c --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs @@ -0,0 +1,9 @@ +// Author: Daniele Giardini - http://www.demigiant.com +// Created: 2015/03/27 19:02 +// +// License Copyright (c) Daniele Giardini. +// This work is subject to the terms at http://dotween.demigiant.com/license.php + + +#if false // MODULE_MARKER +#endif diff --git a/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta new file mode 100644 index 000000000..9cba4ea8c --- /dev/null +++ b/GQ_TongXin/Assets/Plugins/Demigiant/DOTweenPro/DOTweenDeUnityExtended.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0a0cc3e90c4a6ea41bb14d7f35c577c3 +timeCreated: 1587116610 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Prefabs/HUD.meta b/GQ_TongXin/Assets/Prefabs/HUD.meta new file mode 100644 index 000000000..149f7acac --- /dev/null +++ b/GQ_TongXin/Assets/Prefabs/HUD.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2898cf3244165c46ab193903225f80f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Prefabs/HUD/StationInformation.prefab b/GQ_TongXin/Assets/Prefabs/HUD/StationInformation.prefab new file mode 100644 index 000000000..37a776c9f --- /dev/null +++ b/GQ_TongXin/Assets/Prefabs/HUD/StationInformation.prefab @@ -0,0 +1,150 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8992645734443754309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8992645734443754306} + - component: {fileID: 8992645734443754307} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8992645734443754306 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992645734443754309} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.499, z: 0} + m_LocalScale: {x: 0.22218, y: 0.22218, z: 0.22218} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8992645734844834622} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &8992645734443754307 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992645734443754309} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 1705ebcb01175a54ba549314203ad4fc, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &8992645734844834592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8992645734844834622} + - component: {fileID: 8992645734844834593} + - component: {fileID: 355914467147041394} + m_Layer: 0 + m_Name: StationInformation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8992645734844834622 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992645734844834592} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.419, y: 0.423, z: 0.909} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8992645734443754306} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8992645734844834593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992645734844834592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58e2fbd82adbcd14aac54bb85f5464ce, type: 3} + m_Name: + m_EditorClassIdentifier: + worldOrLocal: 0 + lockXZ: 0 + onClick: + m_PersistentCalls: + m_Calls: [] +--- !u!65 &355914467147041394 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8992645734844834592} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 0.3} + m_Center: {x: 0, y: 0.5, z: 0} diff --git a/GQ_TongXin/Assets/Prefabs/HUD/StationInformation.prefab.meta b/GQ_TongXin/Assets/Prefabs/HUD/StationInformation.prefab.meta new file mode 100644 index 000000000..da9d46b7b --- /dev/null +++ b/GQ_TongXin/Assets/Prefabs/HUD/StationInformation.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6fe0e639b544b9b44aa22ea2bb34e59c +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scenes/Focus.unity b/GQ_TongXin/Assets/Scenes/Focus.unity new file mode 100644 index 000000000..dfbc4e3d5 --- /dev/null +++ b/GQ_TongXin/Assets/Scenes/Focus.unity @@ -0,0 +1,2803 @@ +%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.18028378, g: 0.22571412, b: 0.30692285, 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 &68781643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 68781644} + m_Layer: 0 + m_Name: 2DUITarget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &68781644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 68781643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1601724395} + - {fileID: 1373382791} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &92069589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 92069592} + - component: {fileID: 92069591} + - component: {fileID: 92069590} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &92069590 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92069589} + m_Enabled: 1 +--- !u!20 &92069591 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92069589} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, 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: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + 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 &92069592 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 92069589} + m_LocalRotation: {x: 0.29721743, y: -0, z: -0, w: 0.9548098} + m_LocalPosition: {x: 0, y: 9.69, z: -10.08} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 34.581, y: 0, z: 0} +--- !u!1 &125310747 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 125310748} + m_Layer: 0 + m_Name: target + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &125310748 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 125310747} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 740264469} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &287673436 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 287673437} + - component: {fileID: 287673441} + - component: {fileID: 287673440} + - component: {fileID: 287673439} + - component: {fileID: 287673438} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &287673437 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287673436} + m_LocalRotation: {x: 0.24695691, y: -0, z: -0, w: 0.9690265} + m_LocalPosition: {x: 13.36, y: -6.56, z: 8.87} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1979378176} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 28.595, y: 0, z: 0} +--- !u!114 &287673438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287673436} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1f347c5db58cd2448b4b926d5f2d5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + status: 0 +--- !u!65 &287673439 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287673436} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &287673440 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287673436} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &287673441 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 287673436} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &316321454 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 316321458} + - component: {fileID: 316321457} + - component: {fileID: 316321456} + - component: {fileID: 316321455} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &316321455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316321454} + 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 &316321456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316321454} + 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: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &316321457 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316321454} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &316321458 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316321454} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 857461313} + - {fileID: 1863489137} + - {fileID: 1895532866} + - {fileID: 1526177513} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &332041644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 332041645} + - component: {fileID: 332041648} + - component: {fileID: 332041647} + - component: {fileID: 332041646} + - component: {fileID: 332041649} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &332041645 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332041644} + m_LocalRotation: {x: 0.19747679, y: -0.55370176, z: 0.13715054, w: 0.7972497} + m_LocalPosition: {x: -2.36, y: 0, z: -2.93} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1979378176} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 27.824, y: -69.561, z: 0} +--- !u!136 &332041646 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332041644} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &332041647 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332041644} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &332041648 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332041644} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &332041649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332041644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1f347c5db58cd2448b4b926d5f2d5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + status: 0 +--- !u!1 &568782763 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 568782764} + - component: {fileID: 568782766} + - component: {fileID: 568782765} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &568782764 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568782763} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1526177513} + 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 &568782765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568782763} + 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.19607843, g: 0.19607843, b: 0.19607843, 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: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 42 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u4FEE\u590D\u8B66\u62A5" +--- !u!222 &568782766 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568782763} + m_CullTransparentMesh: 1 +--- !u!1 &624684699 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 624684700} + - component: {fileID: 624684702} + - component: {fileID: 624684701} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &624684700 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 624684699} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1863489137} + 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 &624684701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 624684699} + 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.19607843, g: 0.19607843, b: 0.19607843, 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: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 42 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u89C6\u89D22" +--- !u!222 &624684702 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 624684699} + m_CullTransparentMesh: 1 +--- !u!1 &740264466 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740264469} + - component: {fileID: 740264468} + - component: {fileID: 740264467} + - component: {fileID: 740264470} + m_Layer: 0 + m_Name: CameraController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &740264467 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740264466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0b9e0f8345b2384394ba306242cd2a4, type: 3} + m_Name: + m_EditorClassIdentifier: + cam: {fileID: 0} + x: 0 + y: 0 + z: 0 + xSpeed_move: 600 + ySpeed_move: 600 + xSpeed_rotate: 2 + ySpeed_rotate: 2 + mSpeed_scale: 150 + yMinLimit: 2 + yMaxLimit: 90 + leftMax: -365 + rightMax: 365 + distance: 20 + minDistance: 10 + maxDistance: 400 + needDamping: 1 + damping: 6 + isRangeClamped: 0 + xMinValue: -100 + xMaxValue: 100 + zMinValue: -100 + zMaxValue: 100 + autoRotate: 0 + rotateTimer: 15 + rotateSpeed: 5 +--- !u!114 &740264468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740264466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3eb4821edfbe33540a04ab32d1cf7212, type: 3} + m_Name: + m_EditorClassIdentifier: + logicViewList: [] +--- !u!4 &740264469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740264466} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 125310748} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &740264470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740264466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1adfbb027f8d39459702be3e8fb2b14, type: 3} + m_Name: + m_EditorClassIdentifier: + viewOne: {fileID: 1601724395} + viewTwo: {fileID: 1373382791} + warns: + - {fileID: 332041649} + - {fileID: 1269164084} + - {fileID: 1376866151} + - {fileID: 287673438} + - {fileID: 917006546} + warnning: [] +--- !u!1 &857461312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 857461313} + - component: {fileID: 857461316} + - component: {fileID: 857461315} + - component: {fileID: 857461314} + m_Layer: 5 + m_Name: Button (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &857461313 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 857461312} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1962130863} + m_Father: {fileID: 316321458} + 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: -742.3799, y: -412.62277} + m_SizeDelta: {x: 178.4402, y: 83.9545} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &857461314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 857461312} + 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: 857461315} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 740264470} + m_TargetAssemblyTypeName: Focus.SwitchViews, Assembly-CSharp + m_MethodName: OnViewOneClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &857461315 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 857461312} + 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 &857461316 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 857461312} + m_CullTransparentMesh: 1 +--- !u!1 &917006544 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 917006545} + - component: {fileID: 917006549} + - component: {fileID: 917006548} + - component: {fileID: 917006547} + - component: {fileID: 917006546} + m_Layer: 0 + m_Name: Sphere (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &917006545 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917006544} + m_LocalRotation: {x: 0.15386991, y: -0, z: -0, w: 0.9880912} + m_LocalPosition: {x: 0.16, y: -0.83, z: 13.97} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1979378176} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 17.703, y: 0, z: 0} +--- !u!114 &917006546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917006544} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1f347c5db58cd2448b4b926d5f2d5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + status: 0 +--- !u!135 &917006547 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917006544} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &917006548 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917006544} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &917006549 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917006544} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1100186098 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1100186102} + - component: {fileID: 1100186101} + - component: {fileID: 1100186100} + - component: {fileID: 1100186099} + m_Layer: 0 + m_Name: Cylinder (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!136 &1100186099 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100186098} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &1100186100 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100186098} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1100186101 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100186098} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1100186102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100186098} + m_LocalRotation: {x: 0.51202077, y: -0.4100909, z: 0.24056698, w: 0.7153935} + m_LocalPosition: {x: -1.48, y: 0, z: 4.47} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1926131987} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 68.419, y: -67.742, z: -11.885} +--- !u!1 &1269164079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1269164080} + - component: {fileID: 1269164083} + - component: {fileID: 1269164082} + - component: {fileID: 1269164081} + - component: {fileID: 1269164084} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1269164080 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269164079} + m_LocalRotation: {x: 0.24695691, y: -0, z: -0, w: 0.9690265} + m_LocalPosition: {x: -18.06, y: -6.56, z: 8.87} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1979378176} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 28.595, y: 0, z: 0} +--- !u!65 &1269164081 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269164079} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1269164082 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269164079} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1269164083 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269164079} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1269164084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1269164079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1f347c5db58cd2448b4b926d5f2d5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + status: 0 +--- !u!1 &1373382787 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1373382791} + - component: {fileID: 1373382790} + - component: {fileID: 1373382789} + - component: {fileID: 1373382788} + m_Layer: 0 + m_Name: Capsule + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!136 &1373382788 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373382787} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1373382789 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373382787} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1373382790 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373382787} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1373382791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1373382787} + m_LocalRotation: {x: 0.32802507, y: -0, z: -0, w: 0.94466907} + m_LocalPosition: {x: 3.82, y: -0.5252029, z: 11.41} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 68781644} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 38.298, y: 0, z: 0} +--- !u!1 &1376866146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1376866147} + - component: {fileID: 1376866150} + - component: {fileID: 1376866149} + - component: {fileID: 1376866148} + - component: {fileID: 1376866151} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1376866147 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376866146} + m_LocalRotation: {x: 0.15386991, y: -0, z: -0, w: 0.9880912} + m_LocalPosition: {x: -13.14, y: 0, z: 11.37} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1979378176} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 17.703, y: 0, z: 0} +--- !u!135 &1376866148 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376866146} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1376866149 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376866146} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1376866150 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376866146} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1376866151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376866146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1f347c5db58cd2448b4b926d5f2d5f5, type: 3} + m_Name: + m_EditorClassIdentifier: + status: 0 +--- !u!1 &1426158472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1426158473} + - component: {fileID: 1426158475} + - component: {fileID: 1426158474} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1426158473 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426158472} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1895532866} + 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 &1426158474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426158472} + 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.19607843, g: 0.19607843, b: 0.19607843, 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: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 42 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u8B66\u62A5\u6D4B\u8BD5" +--- !u!222 &1426158475 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1426158472} + m_CullTransparentMesh: 1 +--- !u!1 &1526177512 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1526177513} + - component: {fileID: 1526177516} + - component: {fileID: 1526177515} + - component: {fileID: 1526177514} + m_Layer: 5 + m_Name: Button (Legacy) (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1526177513 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526177512} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 568782764} + m_Father: {fileID: 316321458} + m_RootOrder: 3 + 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: 788, y: -463} + m_SizeDelta: {x: 178.4402, y: 83.9545} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1526177514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526177512} + 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: 1526177515} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 740264470} + m_TargetAssemblyTypeName: Focus.SwitchViews, Assembly-CSharp + m_MethodName: FixeWarn + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1526177515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526177512} + 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 &1526177516 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1526177512} + m_CullTransparentMesh: 1 +--- !u!1 &1563742668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1563742672} + - component: {fileID: 1563742671} + - component: {fileID: 1563742670} + - component: {fileID: 1563742669} + - component: {fileID: 1563742673} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1563742669 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563742668} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1563742670 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563742668} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1563742671 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563742668} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1563742672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563742668} + m_LocalRotation: {x: 0.045370787, y: -0.69713485, z: 0.044291064, w: 0.7141308} + m_LocalPosition: {x: 3.7, y: -0.07, z: 4.26} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1999735567} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 7.271, y: -88.62, z: 0} +--- !u!114 &1563742673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1563742668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb2c3e0639c2b164d9cad2af0bb107ad, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1601724391 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1601724395} + - component: {fileID: 1601724394} + - component: {fileID: 1601724393} + - component: {fileID: 1601724392} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!135 &1601724392 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1601724391} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1601724393 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1601724391} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1601724394 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1601724391} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1601724395 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1601724391} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.91, y: -0.3237106, z: 10.24} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 68781644} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1629672295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1629672297} + - component: {fileID: 1629672296} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1629672296 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629672295} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1629672297 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1629672295} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1716356406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1716356410} + - component: {fileID: 1716356409} + - component: {fileID: 1716356408} + - component: {fileID: 1716356407} + m_Layer: 0 + m_Name: Cylinder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!136 &1716356407 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716356406} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!23 &1716356408 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716356406} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1716356409 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716356406} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1716356410 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716356406} + m_LocalRotation: {x: 0.20550199, y: -0, z: -0, w: 0.9786567} + m_LocalPosition: {x: -5.5, y: 0, z: 5.91} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1926131987} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 23.718, y: 0, z: 0} +--- !u!1 &1863489136 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1863489137} + - component: {fileID: 1863489140} + - component: {fileID: 1863489139} + - component: {fileID: 1863489138} + m_Layer: 5 + m_Name: Button (Legacy) (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1863489137 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863489136} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 624684700} + m_Father: {fileID: 316321458} + m_RootOrder: 1 + 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: -510.7, y: -412.62} + m_SizeDelta: {x: 178.4402, y: 83.9545} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1863489138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863489136} + 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: 1863489139} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 740264470} + m_TargetAssemblyTypeName: Focus.SwitchViews, Assembly-CSharp + m_MethodName: OnViewTwoClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1863489139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863489136} + 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 &1863489140 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863489136} + m_CullTransparentMesh: 1 +--- !u!1 &1895532865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1895532866} + - component: {fileID: 1895532869} + - component: {fileID: 1895532868} + - component: {fileID: 1895532867} + m_Layer: 5 + m_Name: Button (Legacy) (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1895532866 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1895532865} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1426158473} + m_Father: {fileID: 316321458} + m_RootOrder: 2 + 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: 788, y: -342} + m_SizeDelta: {x: 178.4402, y: 83.9545} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1895532867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1895532865} + 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: 1895532868} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 740264470} + m_TargetAssemblyTypeName: Focus.SwitchViews, Assembly-CSharp + m_MethodName: TestWarn + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1895532868 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1895532865} + 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 &1895532869 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1895532865} + m_CullTransparentMesh: 1 +--- !u!1 &1906134256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1906134259} + - component: {fileID: 1906134258} + - component: {fileID: 1906134257} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1906134257 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906134256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1906134258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906134256} + 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!4 &1906134259 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1906134256} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1926131985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1926131987} + - component: {fileID: 1926131986} + - component: {fileID: 1926131988} + m_Layer: 0 + m_Name: 3DUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1926131986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926131985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e2d77674999936547b8cbaec26ef8322, type: 3} + m_Name: + m_EditorClassIdentifier: + modelInformations: + - stationInformation: {fileID: 8992645734844834593, guid: 6fe0e639b544b9b44aa22ea2bb34e59c, type: 3} + tations: + - {fileID: 1716356406} + - {fileID: 1100186098} +--- !u!4 &1926131987 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926131985} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1716356410} + - {fileID: 1100186102} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1926131988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926131985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fcd3914edcdca4049a13e3cea681062d, type: 3} + m_Name: + m_EditorClassIdentifier: + hudController: {fileID: 1926131986} +--- !u!1 &1962130862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1962130863} + - component: {fileID: 1962130865} + - component: {fileID: 1962130864} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1962130863 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962130862} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 857461313} + 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 &1962130864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962130862} + 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.19607843, g: 0.19607843, b: 0.19607843, 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: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 42 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u89C6\u89D21" +--- !u!222 &1962130865 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1962130862} + m_CullTransparentMesh: 1 +--- !u!1 &1979378175 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1979378176} + m_Layer: 0 + m_Name: Warnning + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1979378176 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1979378175} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 332041645} + - {fileID: 1269164080} + - {fileID: 1376866147} + - {fileID: 287673437} + - {fileID: 917006545} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1999735566 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1999735567} + m_Layer: 0 + m_Name: ModelClick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1999735567 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1999735566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1563742672} + - {fileID: 2067948293} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2067948289 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2067948293} + - component: {fileID: 2067948292} + - component: {fileID: 2067948291} + - component: {fileID: 2067948290} + - component: {fileID: 2067948294} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &2067948290 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067948289} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &2067948291 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067948289} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &2067948292 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067948289} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2067948293 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067948289} + m_LocalRotation: {x: 0.21369737, y: -0, z: -0, w: 0.9768999} + m_LocalPosition: {x: 0.15, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1999735567} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 24.678, y: 0, z: 0} +--- !u!114 &2067948294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067948289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb2c3e0639c2b164d9cad2af0bb107ad, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/GQ_TongXin/Assets/Scenes/Focus.unity.meta b/GQ_TongXin/Assets/Scenes/Focus.unity.meta new file mode 100644 index 000000000..146c835d1 --- /dev/null +++ b/GQ_TongXin/Assets/Scenes/Focus.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c5968322b51b24a4699568f3b5fe636c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Base.meta b/GQ_TongXin/Assets/Scripts/Base.meta new file mode 100644 index 000000000..57b81f23e --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Base.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5642be0605a7d4c4699bd28d3f564520 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Base/MonoSingleton.cs b/GQ_TongXin/Assets/Scripts/Base/MonoSingleton.cs new file mode 100644 index 000000000..7f264e3d0 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Base/MonoSingleton.cs @@ -0,0 +1,86 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MonoSingleton : MonoBehaviour where T : MonoSingleton +{ + // [SerializeField] private bool _isLoadNotDestory = true; + + private static T instance; + private static object locker = new object(); + + + + public static T Instance + { + get + { + if (instance == null) + { + lock (locker) + { + T[] instances = FindObjectsOfType(); + if (FindObjectsOfType().Length >= 1) + { + instance = instances[0]; + for (int i = 1; i < instances.Length; i++) + { +#if UNITY_EDITOR + Debug.LogError($"{typeof(T)} 不应该存在多个单例!{instances[i].name}"); +#endif + Destroy(instances[i]); + } + + return instance; + } + + if (instance == null && Application.isPlaying) + { + var singleton = new GameObject(); + instance = singleton.AddComponent(); + singleton.name = "(singleton)_" + typeof(T); + } + else + { + // DontDestroyOnLoad(instance.gameObject); + } + } + // instance.hideFlags = HideFlags.None; + } + + return instance; + } + } + + // public static bool IsInitialized + // { + // get + // { + // return instance != null; + // } + // } + + protected virtual void Awake() + { + // if (_isLoadNotDestory) + // { + // DontDestroyOnLoad(this); + // } + // if (instance != null) + // { + // Debug.LogErrorFormat("Trying to instantiate a second instance of singleton class {0}", GetType().Name); + // } + // else + // { + // instance = (T)this; + // } + } + + // public virtual void OnDestroy() + // { + // if (instance == this) + // { + // instance = null; + // } + // } +} diff --git a/GQ_TongXin/Assets/Scripts/Base/MonoSingleton.cs.meta b/GQ_TongXin/Assets/Scripts/Base/MonoSingleton.cs.meta new file mode 100644 index 000000000..fdd1fe36b --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Base/MonoSingleton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 940d26f8b14309d4196d0b4b9adb88f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Camera.meta b/GQ_TongXin/Assets/Scripts/Camera.meta new file mode 100644 index 000000000..9deac49cb --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 351698f4b841690479b9d88c8dd264e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs b/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs new file mode 100644 index 000000000..7bfbbbe19 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs @@ -0,0 +1,102 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using DG.Tweening; + +public class CameraMgr : MonoSingleton +{ + CameraRT camera_Rt; + + Vector3 originPos; + Vector3 originRot; + + // [Header("业务视角点")] + public List logicViewList = new List(); + + private void Awake() + { + camera_Rt = GetComponent(); + } + + public void SetOrigin() + { + originPos = Camera.main.transform.position; + originRot = Camera.main.transform.localEulerAngles; + } + + public void GotoView(string viewName) + { + Transform viewTarget = logicViewList.Find(x => x.name == viewName); + camera_Rt.SetTarget(viewTarget); + } + + + public void GotoView(string viewName, float _distance) + { + Transform viewTarget = logicViewList.Find(x => x.name == viewName); + + camera_Rt.SetTarget(viewTarget, _distance); + + } + + public void GotoView(Transform viewTarget, float _distance) + { + camera_Rt.SetTarget(viewTarget, _distance); + } + public void GotoView(Vector3 viewTarget, float _distance) + { + camera_Rt.SetTarget(viewTarget, _distance); + } + + public void ReturnToMain() + { + Camera.main.transform.DORotate(originRot, 1); + + Camera.main.transform.DOMove(originPos, 1); + } + + + + #region 自动切换预设视角 + //[Header("漫游视角自动切换")] + //public bool autoChangeView = false; + + //public float changeViewTimer; + + //public List autoChangeViewList; + + //int index = 0; + //void ChangeView() + //{ + // if (!autoChangeView) + // return; + + + // if (index > autoChangeViewList.Count - 1) + // { + // index = 0; + + // ReturnToMain(); + // return; + // } + + // Camera.main.transform.position = autoChangeViewList[index].position; + // Camera.main.transform.localEulerAngles = autoChangeViewList[index].localEulerAngles; + + // index++; + //} + + //public void AutoChangeView_Open() + //{ + // autoChangeView = true; + // CancelInvoke("ChangeView"); + // InvokeRepeating("ChangeView", 15, 15); + //} + + //public void AutoChangeView_Close() + //{ + // autoChangeView = false; + //} + + #endregion +} diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs.meta b/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs.meta new file mode 100644 index 000000000..3316d185c --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraMgr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3eb4821edfbe33540a04ab32d1cf7212 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs b/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs new file mode 100644 index 000000000..3c8f93ec2 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs @@ -0,0 +1,271 @@ +using System.Collections; +using System.Collections.Generic; +#if UNITY_EDITOR +using UnityEditor; +#endif +using UnityEngine; +using UnityEngine.EventSystems; + +/// +/// 相机控制 +/// + +public class CameraRT : MonoBehaviour +{ + public Camera cam; + + [Header("目标物体")] + Transform target; + + [Header("旋转角度")] + public float x = 0f; + public float y = 0f; + public float z = 0f; + + [Header("移动、旋转、缩放速度值")] + public float xSpeed_move = 600; + public float ySpeed_move = 600; + public float xSpeed_rotate = 2; + public float ySpeed_rotate = 2; + public float mSpeed_scale = 150; + + [Header("y轴角度限制")] + public float yMinLimit = 2; + public float yMaxLimit = 90; + + [Header("x轴角度限制")] + public float leftMax = -365; + public float rightMax = 365; + + [Header("距离限制")] + public float distance = 400; + public float minDistance = 10f; + public float maxDistance = 400f; + + [Header("阻尼设置")] + public bool needDamping = true; + public float damping = 6f; + + [Header("相机活动范围")] + public bool isRangeClamped; + public float xMinValue = -100f; + public float xMaxValue = 100f; + public float zMinValue = -100f; + public float zMaxValue = 100f; + + [Header("自动旋转")] + public bool autoRotate; + public float rotateTimer = 15; + public float rotateSpeed = 5; + + float rotateTimer_temp; + bool isAutoRotating = false; + + + //动态调节相机缩放的灵敏度 + float tempSpeed; + + private void Start() + { + if (cam == null) + { + cam = Camera.main; + } + + target = transform.GetChild(0); + target.gameObject.AddComponent(); + + x = cam.transform.localEulerAngles.y; + y = cam.transform.localEulerAngles.x; + + tempSpeed = xSpeed_move; + rotateTimer_temp = rotateTimer; + } + + public void SetTarget(Transform _target) + { + target.position = _target.position; + distance = _target.localScale.x; + + y = _target.eulerAngles.x; + x = _target.eulerAngles.y; + } + + + public void SetTarget(Transform _target, float _distance) + { + target.position = _target.position; + distance = _distance; + + y = _target.eulerAngles.x; + x = _target.eulerAngles.y; + } + + public void SetTarget(Vector3 _target, float _distance) + { + target.position = _target; + distance = _distance; + + //y = _target.eulerAngles.x; + //x = _target.eulerAngles.y; + } + + Vector3 oldMousePos; + void Update() + { + if (!autoRotate) + return; + + if (oldMousePos != Input.mousePosition || Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1) || Input.GetMouseButtonDown(2)) + { + rotateTimer = rotateTimer_temp; + if (isAutoRotating) + { + x = cam.transform.eulerAngles.y; + y = cam.transform.eulerAngles.x; + } + + } + oldMousePos = Input.mousePosition; + + + if (rotateTimer <= 0) + { + isAutoRotating = true; + //cam.transform.LookAt(target); + //cam.transform.RotateAround(target.position, Vector3.up, -Time.deltaTime * rotateSpeed); + rotateTimer = rotateTimer_temp; + } + else + { + rotateTimer -= Time.deltaTime; + isAutoRotating = false; + } + } + + + void LateUpdate() + { + if (isAutoRotating) + return; + + if (target) + { + Scroll(); + Move(); + Rotate(); + + Quaternion rotation = Quaternion.Euler(y, x, z); + Vector3 disVector = new Vector3(0.0f, 0.0f, -distance); + Vector3 position = rotation * disVector + target.position; + + // 阻尼感 + if (needDamping) + { + cam.transform.rotation = Quaternion.Lerp(cam.transform.rotation, rotation, Time.deltaTime * damping); + cam.transform.position = Vector3.Lerp(cam.transform.position, position, Time.deltaTime * damping); + } + else + { + cam.transform.rotation = rotation; + cam.transform.position = position; + } + } + } + + void Move() + { + if (EventSystem.current.IsPointerOverGameObject()) + return; + + if (Input.GetMouseButton(0)) + { + float h = Input.GetAxis("Mouse X") * Time.deltaTime * xSpeed_move; + float v = Input.GetAxis("Mouse Y") * Time.deltaTime * ySpeed_move; + + target.Translate(-h, 0, -v); + + + if (!isRangeClamped) + return; + float targetX = target.position.x; + targetX = Mathf.Clamp(targetX, xMinValue, xMaxValue); + float targetZ = target.position.z; + targetZ = Mathf.Clamp(targetZ, zMinValue, zMaxValue); + + target.position = new Vector3(targetX, target.position.y, targetZ); + } + } + + void Rotate() + { + if (Input.GetMouseButton(1)) + { + + // 判断是否需要反向旋转 + if ((y > 90f && y < 270f) || (y < -90 && y > -270f)) + { + x -= Input.GetAxis("Mouse X") * xSpeed_rotate; + } + else + { + x += Input.GetAxis("Mouse X") * xSpeed_rotate; + } + y -= Input.GetAxis("Mouse Y") * ySpeed_rotate; + + x = ClampAngle(x, leftMax, rightMax); + y = ClampAngle(y, yMinLimit, yMaxLimit); + } + } + + void Scroll() + { + distance -= Input.GetAxis("Mouse ScrollWheel") * mSpeed_scale; + distance = Mathf.Clamp(distance, minDistance, maxDistance); + + xSpeed_move = distance / maxDistance * tempSpeed; + ySpeed_move = distance / maxDistance * tempSpeed; + } + + // 对数值进行限制 + float ClampAngle(float angle, float min, float max) + { + if (angle < -360) + angle += 360; + if (angle > 360) + angle -= 360; + return Mathf.Clamp(angle, min, max); + } + + +#if UNITY_EDITOR + private void OnDrawGizmosSelected() + { + //如果限制活动范围 将区域范围绘制出来 + if (isRangeClamped) + { + Handles.color = Color.cyan; + Vector3[] points = new Vector3[8] + { + new Vector3(xMinValue, 0, zMinValue), + new Vector3(xMaxValue, 0, zMinValue), + new Vector3(xMaxValue, 0, zMaxValue), + new Vector3(xMinValue, 0, zMaxValue), + new Vector3(xMinValue, 0, zMinValue), + new Vector3(xMaxValue, 0, zMinValue), + new Vector3(xMaxValue, 0, zMaxValue), + new Vector3(xMinValue, 0, zMaxValue) + }; + for (int i = 0; i < 4; i++) + { + int start = i % 4; + int end = (i + 1) % 4; + Handles.DrawLine(points[start], points[end]); + Handles.DrawLine(points[start + 4], points[end + 4]); + Handles.DrawLine(points[start], points[i + 4]); + } + } + } +#endif +} + diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs.meta b/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs.meta new file mode 100644 index 000000000..c36a5ae26 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraRT.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0b9e0f8345b2384394ba306242cd2a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraTargetFollowCam.cs b/GQ_TongXin/Assets/Scripts/Camera/CameraTargetFollowCam.cs new file mode 100644 index 000000000..0602ca05e --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraTargetFollowCam.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CameraTargetFollowCam : MonoBehaviour +{ + void Update() + { + transform.localEulerAngles = new Vector3(0, Camera.main.transform.localEulerAngles.y, Camera.main.transform.localEulerAngles.z); + } +} diff --git a/GQ_TongXin/Assets/Scripts/Camera/CameraTargetFollowCam.cs.meta b/GQ_TongXin/Assets/Scripts/Camera/CameraTargetFollowCam.cs.meta new file mode 100644 index 000000000..db250219f --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/CameraTargetFollowCam.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5dd7a8c053d2b724197101a3ce4d0f94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Camera/Face2Camera.cs b/GQ_TongXin/Assets/Scripts/Camera/Face2Camera.cs new file mode 100644 index 000000000..a95021410 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/Face2Camera.cs @@ -0,0 +1,61 @@ +using UnityEngine; + +/// +/// 面向相机 +/// +public class Face2Camera : MonoBehaviour +{ + //主相机 + public Camera mainCamera; + //翻转背面 + public bool invertBack; + //是否启用垂直方向上的朝向 + //设为false时 仅在水平方向上面向相机 + public bool isEnableVertical = true; + //是否启用插值运算 + public bool isEnableLerp; + //插值到目标值所需的时间 isEnableLerp为true时起作用 + [Range(0.01f, 1f), SerializeField] private float lerpTime = 1f; + + public float _distance;//最大距离 + + Vector3 initScale; + + private void Start() + { + if (mainCamera == null) + { + mainCamera = Camera.main ?? FindObjectOfType(); + } + + initScale = transform.localScale; + } + + private void Update() + { + if (mainCamera == null) + return; + + Vector3 forward = (isEnableVertical + ? -mainCamera.transform.forward + : Vector3.ProjectOnPlane((mainCamera.transform.position - transform.position).normalized, Vector3.up)) + * (invertBack ? 1 : -1); + + transform.forward = !isEnableLerp ? forward + : Vector3.Lerp(transform.forward, forward, 1f - Mathf.Exp(Mathf.Log(1f - .99f) / lerpTime * Time.deltaTime)); + + float distance = Vector3.Distance(Camera.main.transform.position, transform.position);//不断变化的距离 + float scale = distance / _distance; + if (scale > 1f) + scale = 1f; + transform.localScale = initScale * scale; + } + + //public Face2Camera Set(Camera mainCamera, bool invertBack, bool isEnableVertical) + //{ + // this.mainCamera = mainCamera; + // this.invertBack = invertBack; + // this.isEnableVertical = isEnableVertical; + // return this; + //} +} \ No newline at end of file diff --git a/GQ_TongXin/Assets/Scripts/Camera/Face2Camera.cs.meta b/GQ_TongXin/Assets/Scripts/Camera/Face2Camera.cs.meta new file mode 100644 index 000000000..b0e29c100 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Camera/Face2Camera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddfad4468ea99f145bc0b1cd5782d954 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Focus.meta b/GQ_TongXin/Assets/Scripts/Focus.meta new file mode 100644 index 000000000..4eefc4ab8 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca8e16717c0394248b3589cd866cc7e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Focus/ModelClick.cs b/GQ_TongXin/Assets/Scripts/Focus/ModelClick.cs new file mode 100644 index 000000000..c37a10cb2 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/ModelClick.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//============================================================ +//支持中文,文件使用UTF-8编码 +//@author YangHua +//@create 20230531 +//@company Adam +// +//@description: +//============================================================ +namespace Focus +{ + public class ModelClick : MonoBehaviour + { + + private void OnMouseDown() + { + CameraMgr.Instance.GotoView(transform, 10f); + } + + } +} diff --git a/GQ_TongXin/Assets/Scripts/Focus/ModelClick.cs.meta b/GQ_TongXin/Assets/Scripts/Focus/ModelClick.cs.meta new file mode 100644 index 000000000..da6116660 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/ModelClick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb2c3e0639c2b164d9cad2af0bb107ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Focus/SwitchStatus.cs b/GQ_TongXin/Assets/Scripts/Focus/SwitchStatus.cs new file mode 100644 index 000000000..379569ccd --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/SwitchStatus.cs @@ -0,0 +1,34 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//============================================================ +//支持中文,文件使用UTF-8编码 +//@author #AUTHOR# +//@create #CREATEDATE# +//@company #COMPANY# +// +//@description: +//============================================================ + +public enum Status +{ + Normal, + Warn, +} + +public class SwitchStatus : MonoBehaviour +{ + public Status status = Status.Normal; + + private void Update() + { + if (status == Status.Warn) + { + gameObject.GetComponent().material.color = Color.yellow; + } + else + { + gameObject.GetComponent().material.color = Color.green; + } + } +} diff --git a/GQ_TongXin/Assets/Scripts/Focus/SwitchStatus.cs.meta b/GQ_TongXin/Assets/Scripts/Focus/SwitchStatus.cs.meta new file mode 100644 index 000000000..315ad6516 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/SwitchStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f1f347c5db58cd2448b4b926d5f2d5f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Focus/SwitchViews.cs b/GQ_TongXin/Assets/Scripts/Focus/SwitchViews.cs new file mode 100644 index 000000000..949967c3a --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/SwitchViews.cs @@ -0,0 +1,109 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//============================================================ +//支持中文,文件使用UTF-8编码 +//@author YangHua +//@create 20230531 +//@company Adam +// +//@description: +//============================================================ +namespace Focus +{ + public class SwitchViews : MonoBehaviour + { + + public Transform viewOne; + public Transform viewTwo; + public List warns = new List(); + public List warnning = new List(); + public int count = 0; + + + public void OnViewOneClick() + { + CameraMgr.Instance.GotoView(viewOne, 10f); + } + + public void OnViewTwoClick() + { + CameraMgr.Instance.GotoView(viewTwo, 10f); + } + + + public void TestWarn() + { + int index = Random.Range(0, warns.Count); + warns[index].status = Status.Warn; + } + + public void FixeWarn() + { + for (int i = 0; i < warns.Count; i++) + { + warns[i].status = Status.Normal; + } + } + + public void Update() + { + SwitchWarn(); + if (warnning.Count > count) + { + CameraMgr.Instance.GotoView(CalculateBounding(warnning).center, 15f); + Debug.Log("once"); + } + count = warnning.Count; + } + + /// + /// 监视报警状态 + /// + public void SwitchWarn() + { + for (int i = 0; i < warns.Count; i++) + { + if (warns[i].status == Status.Warn && !warnning.Contains(warns[i].gameObject)) + warnning.Add(warns[i].gameObject); + else if (warns[i].status == Status.Normal && warnning.Contains(warns[i].gameObject)) + warnning.Remove(warns[i].gameObject); + } + } + + + + + public Bounds CalculateBounding(List objs) + { + if (objs.Count > 0) + { + Bounds b = objs[0].GetComponent().bounds; + if (objs.Count > 1) + { + for (int i = 1; i < objs.Count; i++) + { + b.Encapsulate(objs[i].GetComponent().bounds); + } + return b; + } + else + { + return b; + } + } + return new Bounds(); + } + + private void OnDrawGizmos() + { + if (warnning.Count > 0) + { + var bounds = CalculateBounding(warnning); + Gizmos.color = Color.red; + Gizmos.DrawWireCube(center: bounds.center, size: bounds.size); + } + } + } + +} diff --git a/GQ_TongXin/Assets/Scripts/Focus/SwitchViews.cs.meta b/GQ_TongXin/Assets/Scripts/Focus/SwitchViews.cs.meta new file mode 100644 index 000000000..8e0af98c6 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/SwitchViews.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1adfbb027f8d39459702be3e8fb2b14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/Focus/ThreeDUIClick.cs b/GQ_TongXin/Assets/Scripts/Focus/ThreeDUIClick.cs new file mode 100644 index 000000000..c97792c50 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/ThreeDUIClick.cs @@ -0,0 +1,36 @@ +using Adam; +using HUD; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//============================================================ +//支持中文,文件使用UTF-8编码 +//@author YangHua +//@create 20230531 +//@company Adam +// +//@description: +//============================================================ +namespace Focus +{ + public class ThreeDUIClick : MonoBehaviour + { + public HUDController hudController; + // Use this for initialization + private void Start() + { + for (int i = 0; i < hudController.modelInformations.Count; i++) + { + for (int j = 0; j < hudController.modelInformations[i].tations.Count; j++) + { + int modelIndex = i; + int tationIndex = j; + hudController.modelInformations[i].tations[j].transform.GetChild(0).GetComponent().onClick.AddListener(() => + { + CameraMgr.Instance.GotoView(hudController.modelInformations[modelIndex].tations[tationIndex].transform, 20f); + }); + } + } + } + } +} diff --git a/GQ_TongXin/Assets/Scripts/Focus/ThreeDUIClick.cs.meta b/GQ_TongXin/Assets/Scripts/Focus/ThreeDUIClick.cs.meta new file mode 100644 index 000000000..8af85d4ef --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/Focus/ThreeDUIClick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fcd3914edcdca4049a13e3cea681062d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/HUD.meta b/GQ_TongXin/Assets/Scripts/HUD.meta new file mode 100644 index 000000000..20136d8bc --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/HUD.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4e8b5aea9cd4868428e02fdddacd61b5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/HUD/HUDController.cs b/GQ_TongXin/Assets/Scripts/HUD/HUDController.cs new file mode 100644 index 000000000..dc270a5a3 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/HUD/HUDController.cs @@ -0,0 +1,62 @@ +using HUD; +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//============================================================ +//支持中文,文件使用UTF-8编码 +//@author YangHua +//@create 20230426 +//@company Adam +// +//@description: +//============================================================ +namespace Adam +{ + [Serializable] + public struct ModelInformation + { + public StationInformation stationInformation; + public List tations; + } + public class HUDController : MonoBehaviour + { + + public List modelInformations = new List(); + + // Use this for initialization + private void Awake() + { + for (int i = 0; i < modelInformations.Count; i++) + { + for (int j = 0; j < modelInformations[i].tations.Count; j++) + { + StationInformation si = Instantiate(modelInformations[i].stationInformation); + GameObject go = modelInformations[i].tations[j]; + si.SetTarget(Camera.main.transform); + si.Init(go.transform, GetBounds(go)); + } + } + } + + private Bounds GetBounds(GameObject obj) + { + Bounds bounds = new Bounds(); + if (obj.transform.childCount != 0) + { + Renderer[] renderers = obj.GetComponentsInChildren(); + for (int i = 0; i < renderers.Length; i++) + { + bounds.Encapsulate(renderers[i].bounds); + } + } + else + { + bounds = obj.GetComponent().bounds; + } + return bounds; + } + + + } +} diff --git a/GQ_TongXin/Assets/Scripts/HUD/HUDController.cs.meta b/GQ_TongXin/Assets/Scripts/HUD/HUDController.cs.meta new file mode 100644 index 000000000..bd115b218 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/HUD/HUDController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e2d77674999936547b8cbaec26ef8322 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Scripts/HUD/StationInformation.cs b/GQ_TongXin/Assets/Scripts/HUD/StationInformation.cs new file mode 100644 index 000000000..0c29908b6 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/HUD/StationInformation.cs @@ -0,0 +1,82 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; +//============================================================ +//支持中文,文件使用UTF-8编码 +//@author YangHua +//@create 20230426 +//@company Adam +// +//@description: +//============================================================ +namespace HUD +{ + public enum WorldOrLocal + { + World, + Local + } + public class StationInformation : MonoBehaviour + { + //public float offsetY = 1f; + + public WorldOrLocal worldOrLocal = WorldOrLocal.World; + public bool lockXZ = false; + public UnityEvent onClick; + private Transform lookAtTarget; + + + public void SetTarget(Transform target) + { + lookAtTarget = target; + } + + public void Init(Transform parent, Bounds b) + { + transform.SetParent(parent); + transform.localPosition = Vector3.zero; + Vector3 pos = b.center; + Vector3 extentsPos = b.extents; + if (worldOrLocal == WorldOrLocal.Local) + { + //transform.localEulerAngles = Vector3.zero; + Vector3 localPos = transform.InverseTransformPoint(pos); + transform.localPosition = new Vector3(localPos.x, localPos.y + extentsPos.y, localPos.z); + } + else if (worldOrLocal == WorldOrLocal.World) + { + + Vector3 localPos = transform.InverseTransformPoint(pos); + Vector3 worldPos = transform.TransformPoint(localPos); + transform.position = new Vector3(worldPos.x, worldPos.y + extentsPos.y + 1f, worldPos.z); + } + else + { + + } + } + + private void Update() + { + if (lookAtTarget != null) + { + Vector3 pos; + if (lockXZ) + { + pos = new Vector3(lookAtTarget.localPosition.x, 0, lookAtTarget.localPosition.z); + } + else + { + pos = lookAtTarget.localPosition; + } + transform.LookAt(pos); + } + } + + private void OnMouseDown() + { + onClick?.Invoke(); + } + } +} diff --git a/GQ_TongXin/Assets/Scripts/HUD/StationInformation.cs.meta b/GQ_TongXin/Assets/Scripts/HUD/StationInformation.cs.meta new file mode 100644 index 000000000..e56447192 --- /dev/null +++ b/GQ_TongXin/Assets/Scripts/HUD/StationInformation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58e2fbd82adbcd14aac54bb85f5464ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GQ_TongXin/Assets/Textures/hexagon.png b/GQ_TongXin/Assets/Textures/hexagon.png new file mode 100644 index 000000000..1192ea2d2 Binary files /dev/null and b/GQ_TongXin/Assets/Textures/hexagon.png differ diff --git a/GQ_TongXin/Assets/Textures/hexagon.png.meta b/GQ_TongXin/Assets/Textures/hexagon.png.meta new file mode 100644 index 000000000..89988860c --- /dev/null +++ b/GQ_TongXin/Assets/Textures/hexagon.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 1705ebcb01175a54ba549314203ad4fc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: