public static void Create() { if (I == null) { I = new T(); SingletonBase.AddInstance(I); } }
public void AreSingletonHashcodeInstancesSame() { var singletonOne = SingletonBase.GetInstance <SingletonBase>(); var singletonTwo = SingletonBase.GetInstance <SingletonBase>(); Assert.IsInstanceOfType(singletonOne, typeof(SingletonBase)); Assert.IsInstanceOfType(singletonTwo, typeof(SingletonBase)); Assert.AreEqual(singletonOne.GetHashCode(), singletonTwo.GetHashCode()); }
public void AreSingletonInstancesSame() { var singletonOne = SingletonBase.GetInstance <SingletonBase>(); var singletonTwo = SingletonBase.GetInstance <SingletonBase>();; Assert.IsInstanceOfType(singletonOne, typeof(SingletonBase)); Assert.IsInstanceOfType(singletonTwo, typeof(SingletonBase)); Assert.AreSame(singletonOne, singletonTwo); }
public void AreTwoInheritedInstancesFromSingletonAreSame() { var singletonOne = SingletonBase.GetInstance <ChildOneSingleton>(); var singletonTwo = SingletonBase.GetInstance <ChildTwoSingleton>(); Assert.AreEqual(singletonOne.TestMethod(), singletonTwo.TestMethod()); Console.WriteLine(singletonOne.TestMethod()); Assert.IsInstanceOfType(singletonOne, typeof(ChildOneSingleton)); Assert.IsInstanceOfType(singletonTwo, typeof(ChildOneSingleton)); Assert.AreSame(singletonOne, singletonTwo); }
static public int LateUpdate(IntPtr l) { try { SingletonBase self = (SingletonBase)checkSelf(l); self.LateUpdate(); pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
static public int InitCoroutine(IntPtr l) { try { SingletonBase self = (SingletonBase)checkSelf(l); var ret = self.InitCoroutine(); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } }
public void Add(int batchIndex, SingletonBase singleton) { var batch = _batches[batchIndex]; if (batch == null) { batch = new SingletonBatch(); _batches[batchIndex] = batch; } batch.Add(singleton); ++_count; }
public void AreSingletonInstancesSame_MultipleThread() { var thread_count = 100; var threads = new List <Thread>(); var instances = new List <SingletonBase>(); for (int i = 0; i < thread_count; i++) { var thread = new Thread(() => { instances.Add(SingletonBase.GetInstance <SingletonBase>()); }); threads.Add(thread); thread.Start(); } threads.ForEach(x => x.Join()); instances.ForEach(x => Assert.AreSame(instances[0], x)); }
public void Add(int batchIndex, SingletonBase singleton) { _singletons.Add(batchIndex, singleton); }
public void Add(SingletonBase singleton) { _singletons.Add(singleton); }
public void Dispose() { SingletonBase <TestSingleton> .Reset(); }
public void CanCreateSingleton() { var singleton = SingletonBase <TestSingleton> .GetOrCreateInstance(); Assert.NotNull(singleton); }
private IEnumerator DoReset(bool need_clear_cache, bool need_predownload) { isReset = true; if (MonoBehaviourSingleton <UIManager> .IsValid()) { MonoBehaviourSingleton <UIManager> .I.SetDisable(UIManager.DISABLE_FACTOR.RESET, true); } if (MonoBehaviourSingleton <TransitionManager> .IsValid()) { yield return((object)MonoBehaviourSingleton <TransitionManager> .I.Out(TransitionManager.TYPE.BLACK)); } if (MonoBehaviourSingleton <SoundManager> .IsValid() && MonoBehaviourSingleton <SoundManager> .I.playingBGMID != 0) { MonoBehaviourSingleton <SoundManager> .I.requestBGMID = 0; MonoBehaviourSingleton <SoundManager> .I.fadeOutTime = 1f; yield return((object)new WaitForSeconds(1f)); } if (MonoBehaviourSingleton <PredownloadManager> .IsValid()) { Object.DestroyImmediate(MonoBehaviourSingleton <PredownloadManager> .I); } if (MonoBehaviourSingleton <LoadingProcess> .IsValid()) { Object.DestroyImmediate(MonoBehaviourSingleton <LoadingProcess> .I); } if (MonoBehaviourSingleton <DataTableManager> .IsValid()) { MonoBehaviourSingleton <DataTableManager> .I.Clear(); Object.DestroyImmediate(MonoBehaviourSingleton <DataTableManager> .I); } if (MonoBehaviourSingleton <ResourceManager> .IsValid()) { MonoBehaviourSingleton <ResourceManager> .I.CancelAll(); while (MonoBehaviourSingleton <ResourceManager> .I.isLoading) { yield return((object)null); } } MonoBehaviourSingleton <ResourceManager> .I.Reset(); SceneManager.LoadScene("Empty"); if (need_clear_cache) { if (Singleton <StringTable> .IsValid() && MonoBehaviourSingleton <UIManager> .IsValid() && MonoBehaviourSingleton <UIManager> .I.loading != null) { MonoBehaviourSingleton <UIManager> .I.loading.ShowSystemMessage(StringTable.Get(STRING_CATEGORY.COMMON, 20u)); } yield return((object)UnloadUnusedAssets(true)); PlayerPrefs.SetInt("AppMain.Reset", (need_clear_cache ? 1 : 0) | (need_predownload ? 2 : 0)); yield return((object)this.StartCoroutine(ResourceManager.ClearCache())); yield return((object)new WaitForSeconds(1f)); if (need_predownload && Singleton <StringTable> .IsValid() && MonoBehaviourSingleton <UIManager> .IsValid() && MonoBehaviourSingleton <UIManager> .I.loading != null) { this.get_gameObject().AddComponent <PredownloadManager>(); while (MonoBehaviourSingleton <PredownloadManager> .I.totalCount == 0) { yield return((object)null); } int total = MonoBehaviourSingleton <PredownloadManager> .I.totalCount; int count = -1; while (count < total) { if (count != MonoBehaviourSingleton <PredownloadManager> .I.loadedCount) { count = MonoBehaviourSingleton <PredownloadManager> .I.loadedCount; MonoBehaviourSingleton <UIManager> .I.loading.ShowSystemMessage(StringTable.Format(STRING_CATEGORY.COMMON, 21u, count, total)); } yield return((object)null); } MonoBehaviourSingleton <UIManager> .I.loading.ShowSystemMessage(null); MonoBehaviourSingleton <ResourceManager> .I.Reset(); } PlayerPrefs.SetInt("AppMain.Reset", 0); } this.get_gameObject().BroadcastMessage("OnApplicationQuit", 1); MonoBehaviour[] monos = this.GetComponents <MonoBehaviour>(); for (int i = base._transform.get_childCount() - 1; i >= 0; i--) { base._transform.GetChild(i).get_gameObject().SetActive(false); } MonoBehaviour[] array = monos; foreach (MonoBehaviour mono in array) { if (mono != this) { mono.set_enabled(false); } } SetMainCamera(null); for (int j = base._transform.get_childCount() - 1; j >= 0; j--) { GameObject game_object = base._transform.GetChild(j).get_gameObject(); Object.DestroyImmediate(game_object); } MonoBehaviour[] array2 = monos; foreach (MonoBehaviour mono2 in array2) { if (mono2 != this) { Object.DestroyImmediate(mono2); } } CreateDefaultCamera(); yield return((object)new WaitForEndOfFrame()); yield return((object)new WaitForEndOfFrame()); yield return((object)new WaitForEndOfFrame()); SingletonBase.RemoveAllInstance(); yield return((object)Resources.UnloadUnusedAssets()); GC.Collect(); yield return((object)new WaitForEndOfFrame()); yield return((object)new WaitForEndOfFrame()); yield return((object)new WaitForEndOfFrame()); MonoBehaviourSingleton <AppMain> .I.startScene = "Title"; Start(); }