Init.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. LitJson.UnityTypeBindings.Register();
  27. ETTask.ExceptionHandler += Log.Error;
  28. Log.ILog = new UnityLogger();
  29. Options.Instance = new Options();
  30. CodeLoader.Instance.CodeMode = this.CodeMode;
  31. }
  32. private void Start()
  33. {
  34. CodeLoader.Instance.Start();
  35. }
  36. private void Update()
  37. {
  38. CodeLoader.Instance.Update();
  39. }
  40. private void LateUpdate()
  41. {
  42. CodeLoader.Instance.LateUpdate();
  43. }
  44. private void OnApplicationQuit()
  45. {
  46. CodeLoader.Instance.OnApplicationQuit();
  47. CodeLoader.Instance.Dispose();
  48. }
  49. }
  50. }