diff --git a/packages/kilonet/kilonet/Utils/VuplexHelper.cs b/packages/kilonet/kilonet/Utils/VuplexHelper.cs index daae2962e..82d1fad2f 100644 --- a/packages/kilonet/kilonet/Utils/VuplexHelper.cs +++ b/packages/kilonet/kilonet/Utils/VuplexHelper.cs @@ -13,10 +13,9 @@ namespace KBVE.Kilonet.Utils public class VuplexHelper : MonoBehaviour { public Canvas CanvasObject; - public BaseWebViewPrefab CanvasWebViewPrefab; - - public BaseWebViewPrefab CanvasWebViewPrefab; + public CanvasWebViewPrefab CanvasWebViewPrefab; + public CanvasWebViewPrefab CanvasWebViewPrefabView; private CanvasWebViewPrefab _canvasWebViewPrefab; private Supabase.Client _supabaseClient; @@ -29,10 +28,11 @@ private void Start() { try { - // Use UniTask to manage initialization - InitializeWebView().Forget(); // Use UniTask's Forget to run async without awaiting + await UniTask.WhenAll( + InitializeWebView().Timeout(TimeSpan.FromSeconds(10)), + InitializeSupabaseClientAsync().Timeout(TimeSpan.FromSeconds(10)) + ); - InitializeSupabaseClientAsync().Forget(); // Initialize Supabase client asynchronously } catch (Exception ex) { @@ -55,28 +55,22 @@ private async UniTaskVoid InitializeWebView() return; } - // Attempt to locate the CanvasWebViewPrefabView inside CanvasWebViewPrefab - Transform prefabViewTransform = CanvasWebViewPrefab.transform.Find("CanvasWebViewPrefabView"); - if (prefabViewTransform == null) - { - Debug.LogError("Failed to locate CanvasWebViewPrefabView inside CanvasWebViewPrefab."); - return; - } - - _canvasWebViewPrefab = prefabViewTransform.GetComponent(); - if (_canvasWebViewPrefab == null) + if (CanvasWebViewPrefabView == null) { - Debug.LogError("CanvasWebViewPrefabView does not have a CanvasWebViewPrefab component."); + Debug.LogError("CanvasWebViewPrefabView is not set in the Unity Editor."); return; } - await _canvasWebViewPrefab.WaitUntilInitialized(); + // Ensure CanvasWebViewPrefabView is properly initialized + await CanvasWebViewPrefabView.WaitUntilInitialized(); - _canvasWebViewPrefab.WebView.MessageEmitted += OnMessageReceived; + // Register message handling + CanvasWebViewPrefabView.WebView.MessageEmitted += OnMessageReceived; Debug.Log("Vuplex CanvasWebView successfully initialized and ready to receive messages."); } + private async UniTaskVoid InitializeSupabaseClientAsync() { try