@@ -204,16 +204,6 @@ private void OnDestroy()
204204 /// </summary>
205205 private readonly List < IntPtr > _onceTaskItems = new List < IntPtr > ( 100 ) ;
206206
207- /// <summary>
208- /// no gc search for awake objs
209- /// </summary>
210- private readonly HashSet < IntPtr > _awakeObjs = new HashSet < IntPtr > ( ) ;
211-
212- /// <summary>
213- /// no gc search for start objs
214- /// </summary>
215- private readonly HashSet < IntPtr > _startObjs = new HashSet < IntPtr > ( ) ;
216-
217207 /// <summary>
218208 /// Create lifecycle item
219209 /// </summary>
@@ -248,7 +238,6 @@ public void AddAwakeItem<T>(T instance, MethodInfo method) where T : class
248238 _awakeItems . Add ( GetLifeCycleItem ( in ptr , in address ,
249239 ( ) => method ? . Invoke ( instance , ConstMgr . NullObjects ) ,
250240 ( ) => true ) ) ;
251- _awakeObjs . Add ( ( IntPtr ) ptr ) ;
252241 }
253242
254243 /// <summary>
@@ -262,7 +251,6 @@ public void AddStartItem<T>(T instance, MethodInfo method) where T : class
262251 _startItems . Add ( GetLifeCycleItem ( in ptr , in address ,
263252 ( ) => method ? . Invoke ( instance , ConstMgr . NullObjects ) ,
264253 ( ) => true ) ) ;
265- _startObjs . Add ( ( IntPtr ) ptr ) ;
266254 }
267255
268256 /// <summary>
@@ -287,7 +275,8 @@ public void AddUpdateItem(object instance, MethodInfo method)
287275 /// <param name="method"></param>
288276 /// <param name="parent"></param>
289277 /// <param name="cond"></param>
290- public void AddUpdateItem < T > ( T instance , MethodInfo method , GameObject parent , Func < bool > cond = null ) where T : class
278+ public void AddUpdateItem < T > ( T instance , MethodInfo method , GameObject parent , Func < bool > cond = null )
279+ where T : class
291280 {
292281 void * ptr = UnsafeUtility . PinGCObjectAndGetAddress ( instance , out var address ) ;
293282 _updateItems . Add ( GetLifeCycleItem ( in ptr , in address ,
@@ -362,11 +351,12 @@ public void AddLateUpdateItem(object instance, MethodInfo method)
362351 /// <param name="method"></param>
363352 /// <param name="parent"></param>
364353 /// <param name="cond"></param>
365- public void AddLateUpdateItem < T > ( T instance , MethodInfo method , GameObject parent , Func < bool > cond = null ) where T : class
354+ public void AddLateUpdateItem < T > ( T instance , MethodInfo method , GameObject parent , Func < bool > cond = null )
355+ where T : class
366356 {
367357 void * ptr = UnsafeUtility . PinGCObjectAndGetAddress ( instance , out var address ) ;
368358 _lateUpdateItems . Add ( GetLifeCycleItem ( in ptr , in address ,
369- ( ) => method ? . Invoke ( instance , ConstMgr . NullObjects ) ,
359+ ( ) => method ? . Invoke ( instance , ConstMgr . NullObjects ) ,
370360 ( ) => cond == null ? parent . activeInHierarchy : parent . activeInHierarchy && cond . Invoke ( ) ) ) ;
371361 }
372362
@@ -408,11 +398,12 @@ public void AddFixedUpdateItem(object instance, MethodInfo method)
408398 /// <param name="method"></param>
409399 /// <param name="parent"></param>
410400 /// <param name="cond"></param>
411- public void AddFixedUpdateItem < T > ( T instance , MethodInfo method , GameObject parent , Func < bool > cond = null ) where T : class
401+ public void AddFixedUpdateItem < T > ( T instance , MethodInfo method , GameObject parent , Func < bool > cond = null )
402+ where T : class
412403 {
413404 void * ptr = UnsafeUtility . PinGCObjectAndGetAddress ( instance , out var address ) ;
414405 _fixedUpdateItems . Add ( GetLifeCycleItem ( in ptr , in address ,
415- ( ) => method ? . Invoke ( instance , ConstMgr . NullObjects ) ,
406+ ( ) => method ? . Invoke ( instance , ConstMgr . NullObjects ) ,
416407 ( ) => cond == null ? parent . activeInHierarchy : parent . activeInHierarchy && cond . Invoke ( ) ) ) ;
417408 }
418409
@@ -626,22 +617,10 @@ private bool InstancesContains(in LifeCycleItem* item)
626617 /// <returns></returns>
627618 private bool IgnoreWithInInstances ( in LifeCycleItem * item )
628619 {
629- return _awakeObjs . Contains ( item -> InstancePtr )
630- || _startObjs . Contains ( item -> InstancePtr ) ;
620+ return _awakeItems . Contains ( ( IntPtr ) item )
621+ || _startItems . Contains ( ( IntPtr ) item ) ;
631622 }
632623
633- /// <summary>
634- /// remove obj from instances
635- /// </summary>
636- /// <param name="ptr"></param>
637- /// <returns></returns>
638- private bool RemoveInstanceIfContains ( IntPtr ptr ) => _instances . Contains ( ptr ) ;
639-
640- /// <summary>
641- /// remove obj from instances
642- /// </summary>
643- private Predicate < IntPtr > RemoveInstanceIfContainsPredicate => RemoveInstanceIfContains ;
644-
645624 /// <summary>
646625 /// execute once task
647626 /// </summary>
@@ -709,9 +688,6 @@ private void LateUpdate()
709688 }
710689
711690 ExecuteItems ( _awakeItems ) ;
712-
713- //清理
714- _awakeObjs . RemoveWhere ( RemoveInstanceIfContainsPredicate ) ;
715691 }
716692
717693 //如果有start
@@ -720,9 +696,6 @@ private void LateUpdate()
720696 //确保本帧没处理过这些对象
721697 if ( _instances . Count > 0 )
722698 {
723- //调用start,并记录本帧处理的对象
724- ExecuteItems ( _startItems , true , InstancesContains ) ;
725-
726699 cnt = _startItems . Count ;
727700 for ( i = 0 ; i < cnt ; i ++ )
728701 {
@@ -732,22 +705,22 @@ private void LateUpdate()
732705 _instances . Add ( item ->InstancePtr ) ;
733706 }
734707 }
708+
709+ //调用start,并记录本帧处理的对象
710+ ExecuteItems ( _startItems , true , InstancesContains ) ;
735711 }
736712 else
737713 {
738- ExecuteItems ( _startItems ) ;
739-
740714 //调用start,并记录本帧处理的对象
741715 cnt = _startItems . Count ;
742716 for ( i = 0 ; i < cnt ; i ++ )
743717 {
744718 item = ( LifeCycleItem * ) _startItems [ i ] ;
745719 _instances . Add ( item ->InstancePtr ) ;
746720 }
747- }
748721
749- //清理
750- _startObjs . RemoveWhere ( RemoveInstanceIfContainsPredicate ) ;
722+ ExecuteItems ( _startItems ) ;
723+ }
751724 }
752725
753726 //处理late update
0 commit comments