From 9d137d613a752f8be7fe2f6be67872a78c4a914f Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Fri, 15 Dec 2023 14:15:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3Utility.Unity=E6=B3=A8?= =?UTF-8?q?=E5=85=A5=E9=9D=9EMono=E7=9A=84LateUpdate=E6=97=B6=E5=BA=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正Utility.Unity注入非Mono的LateUpdate时序问题 --- .../Runtime/Core/Utility/Utility.Unity.cs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/UnityProject/Assets/TEngine/Runtime/Core/Utility/Utility.Unity.cs b/UnityProject/Assets/TEngine/Runtime/Core/Utility/Utility.Unity.cs index d3c1731b..e0045672 100644 --- a/UnityProject/Assets/TEngine/Runtime/Core/Utility/Utility.Unity.cs +++ b/UnityProject/Assets/TEngine/Runtime/Core/Utility/Utility.Unity.cs @@ -1,4 +1,5 @@ using System.Collections; +using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.Events; using UnityEngine.Internal; @@ -108,6 +109,12 @@ namespace TEngine public static void AddUpdateListener(UnityAction fun) { _MakeEntity(); + AddUpdateListenerImp(fun).Forget(); + } + + private static async UniTaskVoid AddUpdateListenerImp(UnityAction fun) + { + await UniTask.Yield(/*PlayerLoopTiming.LastPreUpdate*/); _behaviour.AddUpdateListener(fun); } @@ -118,6 +125,12 @@ namespace TEngine public static void AddFixedUpdateListener(UnityAction fun) { _MakeEntity(); + AddFixedUpdateListenerImp(fun).Forget(); + } + + private static async UniTaskVoid AddFixedUpdateListenerImp(UnityAction fun) + { + await UniTask.Yield(PlayerLoopTiming.LastEarlyUpdate); _behaviour.AddFixedUpdateListener(fun); } @@ -128,6 +141,12 @@ namespace TEngine public static void AddLateUpdateListener(UnityAction fun) { _MakeEntity(); + AddLateUpdateListenerImp(fun).Forget(); + } + + private static async UniTaskVoid AddLateUpdateListenerImp(UnityAction fun) + { + await UniTask.Yield(/*PlayerLoopTiming.LastPreLateUpdate*/); _behaviour.AddLateUpdateListener(fun); }