ET客户端代码Init.cs文件注释

作者: 归零者 分类: ET学习 发布时间: 2018-10-11 01:03
using System;
using System.IO;
using System.Threading;
using Google.Protobuf;
using UnityEngine;

namespace ETModel
{
  public class Init : MonoBehaviour
  {
    private async void Start()
    {
      try
      { 
        if (!Application.unityVersion.StartsWith("2017.4"))
        {
          Log.Error($"新人请使用Unity2017.4版本,减少跑demo遇到的问题! 下载地址:\n https://unity3d.com/cn/unity/qa/lts-releases?_ga=2.227583646.282345691.1536717255-1119432033.1499739574");
        }
                ///给Socket线程队列同步
        SynchronizationContext.SetSynchronizationContext(OneThreadSynchronizationContext.Instance);

        DontDestroyOnLoad(gameObject);
                ///反射当前所有的Dll
        Game.EventSystem.Add(DLLType.Model, typeof(Init).Assembly);
                ///全局配置文件,服务器的连接Ip,资源服务器的http地址
        Game.Scene.AddComponent<GlobalConfigComponent>();
                ///网络组件.进行服务器通信用的组件
        Game.Scene.AddComponent<NetOuterComponent>();
                ///资源管理组件(AB包)
        Game.Scene.AddComponent<ResourcesComponent>();
                ///用户组件(用户信息,等)
        Game.Scene.AddComponent<PlayerComponent>();
                ///单元组件(熊猫用来做帧同步,DEMO用的)
        Game.Scene.AddComponent<UnitComponent>();
                ///帧同步组件
        Game.Scene.AddComponent<ClientFrameComponent>();
                ///ET的UI框架组件(掌管ET的UI)
        Game.Scene.AddComponent<UIComponent>();

        // 下载ab包
        await BundleHelper.DownloadBundle();
                ///读取热更代码(ILRntime)
        Game.Hotfix.LoadHotfixAssembly();

        // 加载配置
        Game.Scene.GetComponent<ResourcesComponent>().LoadBundle("config.unity3d");
        Game.Scene.AddComponent<ConfigComponent>();
        Game.Scene.GetComponent<ResourcesComponent>().UnloadBundle("config.unity3d");
                ///消息代码,识别码组件,服务器主动生成的,不用自己做
        Game.Scene.AddComponent<OpcodeTypeComponent>();
                ///消息分发组件
        Game.Scene.AddComponent<MessageDispatherComponent>();
                ///执行热更的Init
        Game.Hotfix.GotoHotfix();
                ///熊猫测试的代码
        Game.EventSystem.Run(EventIdType.TestHotfixSubscribMonoEvent, "TestHotfixSubscribMonoEvent");
      }
      catch (Exception e)
      {
        Log.Error(e);
      }
    }

    private void Update()
    {
      OneThreadSynchronizationContext.Instance.Update();
      Game.Hotfix.Update?.Invoke();
      Game.EventSystem.Update();
    }

    private void LateUpdate()
    {
      Game.Hotfix.LateUpdate?.Invoke();
      Game.EventSystem.LateUpdate();
    }

    private void OnApplicationQuit()
    {
      Game.Hotfix.OnApplicationQuit?.Invoke();
      Game.Close();
    }
  }
}

 

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

说点什么

avatar
  Subscribe  
提醒
跳至工具栏