From 06df35f1e8e9695b844553867a39cd12d68db8b4 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 22 Apr 2022 09:24:15 +0800 Subject: *arrow --- AlienSurvival/Assets/Scripts/Utils/GameLoop.cs | 13 +++--- AlienSurvival/Assets/Scripts/Utils/Singleton.cs | 24 +++++++++++ .../Assets/Scripts/Utils/Singleton.cs.meta | 11 +++++ .../Assets/Scripts/Utils/TinyCountDown.cs | 48 ++++++++++++++++++++++ .../Assets/Scripts/Utils/TinyCountDown.cs.meta | 11 +++++ 5 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 AlienSurvival/Assets/Scripts/Utils/Singleton.cs create mode 100644 AlienSurvival/Assets/Scripts/Utils/Singleton.cs.meta create mode 100644 AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs create mode 100644 AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs.meta (limited to 'AlienSurvival/Assets/Scripts/Utils') diff --git a/AlienSurvival/Assets/Scripts/Utils/GameLoop.cs b/AlienSurvival/Assets/Scripts/Utils/GameLoop.cs index 6bbb140..6ae7d87 100644 --- a/AlienSurvival/Assets/Scripts/Utils/GameLoop.cs +++ b/AlienSurvival/Assets/Scripts/Utils/GameLoop.cs @@ -2,18 +2,17 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -public class GameLoop : MonoBehaviour +public class GameLoop : Singleton { - static public GameLoop Instance { get; private set; } - public int indexOfUpdate { get; private set; } = 0; - - private void Awake() + public GameLoop() { - Instance = this; + indexOfUpdate = 0; } - private void Update() + public int indexOfUpdate { get; private set; } = 0; + + public void Update() { ++indexOfUpdate; } diff --git a/AlienSurvival/Assets/Scripts/Utils/Singleton.cs b/AlienSurvival/Assets/Scripts/Utils/Singleton.cs new file mode 100644 index 0000000..d7aad49 --- /dev/null +++ b/AlienSurvival/Assets/Scripts/Utils/Singleton.cs @@ -0,0 +1,24 @@ +public class Singleton where T : class, new() +{ + private static T _instance; + private static readonly object syslock = new object(); + + public static T Instance + { + get + { + if (_instance == null) + { + lock (syslock) + { + if (_instance == null) + { + _instance = new T(); + } + } + } + return _instance; + + } + } +} \ No newline at end of file diff --git a/AlienSurvival/Assets/Scripts/Utils/Singleton.cs.meta b/AlienSurvival/Assets/Scripts/Utils/Singleton.cs.meta new file mode 100644 index 0000000..ff0aab9 --- /dev/null +++ b/AlienSurvival/Assets/Scripts/Utils/Singleton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b80a3ccdebef4b4db85130a4bde2d00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs b/AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs new file mode 100644 index 0000000..dbeae55 --- /dev/null +++ b/AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs @@ -0,0 +1,48 @@ +using System.Linq; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TinyCountDown :Singleton +{ + + private Dictionary m_CountDown = new Dictionary(); + public TinyCountDown() + { + } + + public void Set(string key, float time) + { + if (!m_CountDown.ContainsKey(key)) + { + m_CountDown.Add(key, time); + } + else + { + m_CountDown[key] = time; + } + } + + public float Get(string key) + { + if (m_CountDown.ContainsKey(key)) + { + return m_CountDown[key]; + } + return 0; + } + + public void Update() + { + List keys = new List(m_CountDown.Keys); + foreach (var key in keys) + { + m_CountDown[key] -= Time.deltaTime; + if(m_CountDown[key] <= 0) + { + m_CountDown.Remove(key); + } + } + + } +} diff --git a/AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs.meta b/AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs.meta new file mode 100644 index 0000000..c9f5545 --- /dev/null +++ b/AlienSurvival/Assets/Scripts/Utils/TinyCountDown.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de0d1a4a5baf48a4083e5d7f457ea8b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.1-26-g67d0