Init.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Threading;
  2. using UnityEngine;
  3. namespace ET
  4. {
  5. // 1 mono模式 2 mono热重载模式
  6. public enum CodeMode
  7. {
  8. Mono = 1,
  9. Reload = 2,
  10. }
  11. public class Init: MonoBehaviour
  12. {
  13. public CodeMode CodeMode = CodeMode.Mono;
  14. private void Awake()
  15. {
  16. #if ENABLE_IL2CPP
  17. this.CodeMode = CodeMode.ILRuntime;
  18. #endif
  19. System.AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
  20. {
  21. Log.Error(e.ExceptionObject.ToString());
  22. };
  23. SynchronizationContext.SetSynchronizationContext(ThreadSynchronizationContext.Instance);
  24. DontDestroyOnLoad(gameObject);
  25. ETTask.ExceptionHandler += Log.Error;
  26. Game.ILog = new UnityLogger();
  27. Options.Instance = new Options();
  28. CodeLoader.Instance.CodeMode = this.CodeMode;
  29. }
  30. private void Start()
  31. {
  32. CodeLoader.Instance.Start();
  33. }
  34. private void Update()
  35. {
  36. CodeLoader.Instance.Update();
  37. }
  38. private void LateUpdate()
  39. {
  40. CodeLoader.Instance.LateUpdate();
  41. }
  42. private void OnApplicationQuit()
  43. {
  44. CodeLoader.Instance.OnApplicationQuit();
  45. CodeLoader.Instance.Dispose();
  46. }
  47. }
  48. }