Init.cs 1.1 KB

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