【ET框架6.0】客户端程序集设计和热更新相关

522 阅读1分钟

论坛讨论帖子

1.1 熊猫原话:

没错 ,所以et分4个程序集是非常必要的,不仅做机器人,还能跟手游共用逻辑层 千古风流,把表现层一改用端游的逻辑层,马上就能改出一个手游出来 表现层 逻辑层两个,每个又有数据层跟逻辑,2*2就是4 数据跟逻辑放一起就不好重构 服务器因为要做不停机热更,所以model和hotfix要分开 et是 data + fuction的写法,data跟fuction强制分开,就没有耦合,也十分容易重构

1.2 个人理解:

程序集作用例子
Model非UI的数据User
ModelViewUI的数据Text,Button
Hotfix非UI的逻辑ChangeUserInfo
HotfixViewUI的逻辑ChangeText,ClickButton

感觉是客户端还没重构完,到时候Model跟Hotfix应该会换个名字,现在语义跟作用有点不符。

1.3 表现层

表现层是指UI相关部分,对应的数据、逻辑层是ModelView跟HotfixView。
UI的声明应该放在ModelView,比如:

using FairyGUI;
using FairyGUI.Utils;

namespace ETModel.View
{
    public partial class CheckForResUpdateBar : GProgressBar
    {
        public GImage bar;
        public const string URL = "ui://233k1ld9rfuv4";

        public static CheckForResUpdateBar CreateInstance()
        {
            return (CheckForResUpdateBar)UIPackage.CreateObject("FUICheckForResUpdate", "CheckForResUpdateBar");
        }

        public override void ConstructFromXML(XML xml)
        {
            base.ConstructFromXML(xml);
            n0 = (GImage)GetChildAt(0);
        }
    }
}

UI的操作函数应该放在HotfixView,比如:

using FairyGUI;

namespace ETModel
{
    public class FUILoadingFactory
    {
        public static FUI Create()
        {
            FUI fui = ComponentFactory.Create<FUI, GObject>(FUILoading.CreateInstance());
            fui.MakeFullScreen();
            return fui;
        }
    }
}

1.4 逻辑层

逻辑层是跟UI无关部分,对应的数据、逻辑层是Model跟Hotfix。这部分也会被机器人复用

数据结构的声明应该放在Model,比如:

namespace ETModel
{
   public sealed class Unit : Entity
   {
      public long UnitId { get; set; }
      
      public override void Dispose()
      {
         if (this.IsDisposed)
         {
            return;
         }

         base.Dispose();
      }
   }
}

数据结构的操作应该放在Hotfix,比如:

namespace ET
{
    public class UnitSystem: AwakeSystem<Unit, int>
    {
        public override void Awake(Unit self, int configId)
        {
            self.ConfigId = configId;
        }
    }
}