lvjincheng 2 лет назад
Родитель
Сommit
0d9c93c659

+ 1 - 0
Assets/BowArrow/Scripts/Manager/HomeMgr.cs

@@ -39,6 +39,7 @@ public class HomeMgr : MonoBehaviour
         if (CommonConfig.StandaloneMode)
         {
             DoTweenUtil.CallDelay(0.1f, () => new UserPlayer());
+            StandaloneAPI.InitTimeCounter();
         }
         else UserPlayer.ConnectServer();
     }

+ 65 - 0
Assets/BowArrow/Scripts/Standalone/GameTimeCounterSA.cs

@@ -0,0 +1,65 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class GameTimeCounterSA : MonoBehaviour
+{
+    [SerializeField] Text playTimeText;
+    [SerializeField] GameObject payMask;
+    [SerializeField] Text payTimeCountDownText;
+    bool _paused;
+    long _pauseTimePoint;
+    const long PayTimeCountDown = 10 * 1000;
+
+    void Start()
+    {
+        StandaloneAPI.StartGameTimeCountDown();
+    }
+
+    void Update()
+    {
+        StandaloneAPI.DoGameTimeCountDown();
+        playTimeText.text = string.Format("剩余时间{0}", GetTimeStr());
+        if (StandaloneAPI.GetGameTimeCountDown() > 0)
+        {
+            if (_paused)
+            {
+                payMask.SetActive(false);
+                StandaloneAPI.ResumeGame();
+                _paused = false;
+            }
+        }
+        else
+        {
+            if (!_paused)
+            {
+                payMask.SetActive(true);
+                StandaloneAPI.PauseGame();
+                _paused = true;
+                _pauseTimePoint = JCUnityLib.TimeUtils.GetTimestamp();
+            }
+            long t = PayTimeCountDown - (JCUnityLib.TimeUtils.GetTimestamp() - _pauseTimePoint);
+            if (t <= 0) t = 0;
+            payTimeCountDownText.text = string.Format("投币继续游戏\n{0}S", t / 1000);
+            if (t == 0) StandaloneAPI.ForceBackHome();
+        }
+        #if UNITY_EDITOR
+        if (Input.GetKeyDown(KeyCode.Z)) 
+        {
+            //投币接口测试
+            StandaloneAPI.InsertCoinForAddTime();
+        }
+        #endif
+    }
+
+    string GetTimeStr()
+    {
+        long second = StandaloneAPI.GetGameTimeCountDown() / 1000;
+        long minute = second / 60;
+        second = second % 60;
+        string str = second + "秒";
+        if (minute > 0) str = minute + "分" + str;
+        return str;
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Standalone/GameTimeCounterSA.cs.meta

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

+ 8 - 0
Assets/BowArrow/Scripts/Standalone/Resources.meta

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

+ 389 - 0
Assets/BowArrow/Scripts/Standalone/Resources/GameTimeCounterSA.prefab

@@ -0,0 +1,389 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &387242980619433321
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5835012201728855940}
+  - component: {fileID: 6026200806546445396}
+  - component: {fileID: 1342400076204029566}
+  - component: {fileID: 1264559477103674741}
+  - component: {fileID: 7307816444132160579}
+  m_Layer: 5
+  m_Name: GameTimeCounterSA
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5835012201728855940
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 387242980619433321}
+  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: 3173223804088685714}
+  - {fileID: 5797892734179126112}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!223 &6026200806546445396
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 387242980619433321}
+  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: 2000
+  m_TargetDisplay: 0
+--- !u!114 &1342400076204029566
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 387242980619433321}
+  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: 1280, y: 720}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 1
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &1264559477103674741
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 387242980619433321}
+  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 &7307816444132160579
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 387242980619433321}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ad54a0f6dc1c2ca47ac5e3340b592bf1, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  playTimeText: {fileID: 7040171986457792063}
+  payMask: {fileID: 5117042727098458559}
+  payTimeCountDownText: {fileID: 66018196368478529}
+--- !u!1 &1281761528180142576
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3173223804088685714}
+  - component: {fileID: 2254663491739427176}
+  - component: {fileID: 7040171986457792063}
+  - component: {fileID: 4906968507950154966}
+  m_Layer: 5
+  m_Name: PlayTimeText
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3173223804088685714
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1281761528180142576}
+  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: 5835012201728855940}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0}
+  m_AnchorMax: {x: 0.5, y: 0}
+  m_AnchoredPosition: {x: 0, y: 10}
+  m_SizeDelta: {x: 200, y: 40}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!222 &2254663491739427176
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1281761528180142576}
+  m_CullTransparentMesh: 1
+--- !u!114 &7040171986457792063
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1281761528180142576}
+  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: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 1ad2cf6c2f09744489d8c60b3fe3bab2, type: 3}
+    m_FontSize: 32
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 3
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "\u5269\u4F59\u65F6\u95F410\u520630\u79D2"
+--- !u!114 &4906968507950154966
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1281761528180142576}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
+  m_EffectDistance: {x: 1, y: -1}
+  m_UseGraphicAlpha: 1
+--- !u!1 &4209275461650934263
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8062782054627643049}
+  - component: {fileID: 267583733002650412}
+  - component: {fileID: 66018196368478529}
+  - component: {fileID: 1256092048007326386}
+  m_Layer: 5
+  m_Name: PayTimeText
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8062782054627643049
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4209275461650934263}
+  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: 5797892734179126112}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 200, y: 40}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &267583733002650412
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4209275461650934263}
+  m_CullTransparentMesh: 1
+--- !u!114 &66018196368478529
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4209275461650934263}
+  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: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 1ad2cf6c2f09744489d8c60b3fe3bab2, type: 3}
+    m_FontSize: 56
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 3
+    m_MaxSize: 56
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "\u6295\u5E01\u7EE7\u7EED\u6E38\u620F\n10S"
+--- !u!114 &1256092048007326386
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4209275461650934263}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
+  m_EffectDistance: {x: 1, y: -1}
+  m_UseGraphicAlpha: 1
+--- !u!1 &5117042727098458559
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5797892734179126112}
+  - component: {fileID: 9139543716224091690}
+  - component: {fileID: 4909268623107637634}
+  m_Layer: 5
+  m_Name: PayMask
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &5797892734179126112
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5117042727098458559}
+  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: 8062782054627643049}
+  m_Father: {fileID: 5835012201728855940}
+  m_RootOrder: 1
+  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!222 &9139543716224091690
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5117042727098458559}
+  m_CullTransparentMesh: 1
+--- !u!114 &4909268623107637634
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5117042727098458559}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.38679248, g: 0.38679248, b: 0.38679248, 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: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1

+ 7 - 0
Assets/BowArrow/Scripts/Standalone/Resources/GameTimeCounterSA.prefab.meta

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

+ 45 - 0
Assets/BowArrow/Scripts/Standalone/StandaloneAPI.cs

@@ -47,4 +47,49 @@ public class StandaloneAPI
             Time.timeScale = 1;
         }
     }
+
+    private static long _GameTimeCountDownMS = 0;
+    private static void AddGameTimeCountDown(long second)
+    {
+        _GameTimeCountDownMS += second * 1000;
+    }
+    public static long GetGameTimeCountDown()
+    {
+        return _GameTimeCountDownMS;
+    }
+    private static long _LastTimeMS;
+    public static void StartGameTimeCountDown()
+    {
+        _LastTimeMS = JCUnityLib.TimeUtils.GetTimestamp();
+    }
+    public static void DoGameTimeCountDown()
+    {
+        long t = JCUnityLib.TimeUtils.GetTimestamp();
+        long dt = t - _LastTimeMS;
+        _LastTimeMS = t;
+        _GameTimeCountDownMS -= dt;
+        if (_GameTimeCountDownMS < 0) _GameTimeCountDownMS = 0;
+    }
+
+    private static bool _TimeCounterInited;
+    public static void InitTimeCounter()
+    {
+        if (_TimeCounterInited) return;
+        _TimeCounterInited = true;
+        SceneManager.sceneLoaded += (scene, mode) => {
+            string sceneName = scene.name;
+            if (sceneName.StartsWith("Game") || sceneName == "DuckHunter" || sceneName == "WildAttack" || sceneName == "FruitMaster")
+            {
+                Object.Instantiate(Resources.Load<GameObject>("GameTimeCounterSA"));
+            }
+        };
+    }
+
+    /// <summary>
+    /// 投币加时
+    /// </summary>
+    public static void InsertCoinForAddTime()
+    {
+        AddGameTimeCountDown(5 * 60);
+    }
 }

+ 1 - 0
Assets/DuckHunter/Scripts/SmartBowController.cs

@@ -27,6 +27,7 @@ namespace DuckHunter
         float _lastShootTime = 0;
         public void OnShooting(float speed)
         {
+            if (Time.time == 0) return;
             if (Time.realtimeSinceStartup - _lastShootTime < 1) return;
             _lastShootTime = Time.realtimeSinceStartup;
             GameManager.Instance?.OnModuleShooting(speed);

+ 1 - 0
Assets/FruitMaster/Scripts/GamingManager.cs

@@ -533,6 +533,7 @@ public class GamingManager : MonoBehaviour
 
     private void SmartBowFireArrow(float speed)
     {
+        if (Time.time == 0) return;
         if (IsGameStarted())
         {
             if (IsGamePaused()) // if game is paused, fire the smart bow will resume game

+ 1 - 0
Assets/WildAttack/Scripts/SmartBowController.cs

@@ -38,6 +38,7 @@ namespace WildAttack
 
         public void OnShooting(float speed)
         {
+            if (Time.time == 0) return;
             GameMananger.GetInstance().OnModuleShooting(speed);
         }