Skip to content

Commit 88bf8de

Browse files
Merge branch 'development'
merge
2 parents 76a3f2d + 5edaa60 commit 88bf8de

File tree

8 files changed

+22
-44
lines changed

8 files changed

+22
-44
lines changed

UnityProject/Assets/Dependencies/JEngine/Core/ILRuntimeHelper/Adapters/MonoBehaviourAdapter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ void OnEnable()
180180
{
181181
Awake();
182182
LifeCycleMgr.Instance.ExecuteOnceTask();
183+
_skipEnable = false;
183184
return;
184185
}
185186
if (_skipEnable)

UnityProject/Assets/Dependencies/JEngine/Core/Manager/LifeCycleMgr.cs

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

UnityProject/Assets/Dependencies/JEngine/Editor/JEngineTools/EditorUpdates/ChangeScene.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,13 @@ private static async void DoChange()
3131
if (!Application.isPlaying) return;
3232
await Task.Delay(10);
3333
}
34+
3435
DynamicGI.UpdateEnvironment();
3536
}
3637

37-
var key = Object.FindObjectOfType<InitJEngine>().key;
38+
var initJEngine = GameObject.Find("InitJEngine");
39+
var comp = initJEngine.GetComponent<InitJEngine>();
40+
var key = comp.key;
3841
var k = PlayerPrefs.GetString($"{prefix}.EncryptPassword", "");
3942
if (string.IsNullOrEmpty(k))
4043
{
@@ -50,7 +53,7 @@ private static async void DoChange()
5053
Setting.GetString(SettingString.Ok), Setting.GetString(SettingString.Ignore));
5154
if (res)
5255
{
53-
Object.FindObjectOfType<InitJEngine>().key = k;
56+
comp.key = k;
5457
}
5558
}
5659
}

UnityProject/Assets/Dependencies/JEngine/Templates/MonoAdapter.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
{
7575
Awake();
7676
LifeCycleMgr.Instance.ExecuteOnceTask();
77+
_skipEnable = false;
7778
return;
7879
}
7980
if (_skipEnable)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)