/// <summary> /// Check and cancel task.delay /// </summary> private void CheckJBehaviour() { for (int i = 0; i < JBehaviours.Count; i++) { var jb = JBehaviours.ElementAt(i); if (jb.Value == null) { JBehaviours.Remove(jb.Key); continue; } try { if (jb.Value._gameObject == null) { jb.Value.LoopAwaitToken?.Cancel(); JBehaviours[jb.Value._instanceID] = null; JBehaviours.Remove(jb.Value._instanceID); i--; } } catch (MissingReferenceException) { jb.Value.LoopAwaitToken?.Cancel(); JBehaviours[jb.Value._instanceID] = null; JBehaviours.Remove(jb.Value._instanceID); i--; } } }
/// <summary> /// Constuctor /// 构造函数 /// </summary> public JBehaviour() { //添加实例ID _instanceID = JBehaviourMgr.Instance.GetJBehaviourInstanceID(); JBehaviours.Add(_instanceID, this); LoopAwaitToken = new CancellationTokenSource(); }
/// <summary> /// Get Instance ID for JBehaviour /// </summary> /// <returns></returns> public string GetJBehaviourInstanceID() { var _instanceID = System.Guid.NewGuid().ToString("N"); while (JBehaviours.ContainsKey(_instanceID)) { _instanceID = System.Guid.NewGuid().ToString("N"); } return(_instanceID); }
/// <summary> /// Check and cancel task.delay /// </summary> private void CheckJBehaviour() { var ie = JBehaviours.GetEnumerator(); while (ie.MoveNext()) { if (ie.Current.Value._gameObject == null) { ie.Current.Value.LoopAwaitToken.Cancel(); } } }
/// <summary> /// Check and cancel task.delay /// </summary> private void CheckJBehaviour() { for (int i = 0; i < JBehaviours.Count; i++) { var jb = JBehaviours.ElementAt(i); if (jb.Value._gameObject == null) { jb.Value.LoopAwaitToken.Cancel(); JBehaviours[jb.Value._instanceID] = null; JBehaviours.Remove(jb.Value._instanceID); i--; } } }
/// <summary> /// Constuctor /// 构造函数 /// </summary> public JBehaviour() { //启动线程 if (DestoryListner.ThreadState == System.Threading.ThreadState.Unstarted) { DestoryListner.Start(); } //添加实例ID _instanceID = System.Guid.NewGuid().ToString("N"); while (JBehaviours.ContainsKey(_instanceID)) { _instanceID = System.Guid.NewGuid().ToString("N"); } JBehaviours.Add(_instanceID, this); }
/// <summary> /// Constuctor /// 构造函数 /// </summary> public JBehaviour() { //启动线程 if (!Listening) { Task.Run(ListenDestroy); Listening = true; } //添加实例ID _instanceID = System.Guid.NewGuid().ToString("N"); while (JBehaviours.ContainsKey(_instanceID)) { _instanceID = System.Guid.NewGuid().ToString("N"); } JBehaviours.Add(_instanceID, this); }
/// <summary> /// Constuctor /// 构造函数 /// </summary> public JBehaviour() { //添加实例ID _instanceID = JBehaviourMgr.Instance.GetJBehaviourInstanceID(); JBehaviours.Add(_instanceID, this); }