论坛讨论帖子
1.1 熊猫原话:
没错 ,所以et分4个程序集是非常必要的,不仅做机器人,还能跟手游共用逻辑层 千古风流,把表现层一改用端游的逻辑层,马上就能改出一个手游出来 表现层 逻辑层两个,每个又有数据层跟逻辑,2*2就是4 数据跟逻辑放一起就不好重构 服务器因为要做不停机热更,所以model和hotfix要分开 et是 data + fuction的写法,data跟fuction强制分开,就没有耦合,也十分容易重构
1.2 个人理解:
| 程序集 | 作用 | 例子 |
|---|---|---|
| Model | 非UI的数据 | User |
| ModelView | UI的数据 | Text,Button |
| Hotfix | 非UI的逻辑 | ChangeUserInfo |
| HotfixView | UI的逻辑 | 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;
}
}
}