ET中,如果一个组件的绝大部分功能都前后端都是一样的。就只有一点点不同。这种情况下,如何比较优雅的处理呢?我看了一下,如果我直接把这个组件写成两份,分别放入Client和Server中,那么,share中,在使用该组件的时候,需要我指定用的是哪一个,这样的话,是不是意味着就无法正确区分前后端的内容了?
有点不一样说明还是不一样,就不要共用了,或者你抽象的不够完善,最好完全一样再共用
egametang 写两份代码的话,那share中添加组件的时候如何区分用的是客户端还是服务端的呢?
egametang
这个在ET7中应该怎么做比较好呢, 写两份代码,还是把iunitcache也放share中?
写两份了还放到share中干啥
egametang 不是放到share中,是share中的代码需要用到这个组件,例如,我这个组件是添加在Unit上面的。
那你是依赖share 而不是share依赖你的组件
接口共用就行了
字段不同的话,不是可以用 partial class 解决?
Long 实测在share中写一个A的partial类,在server和clicent中分别写两个同样A的partial类。那么在服务器A的system里面调不到Share的A中字段。且在Client,Server,ServerClient中分别定义A的partial类,ide不识别是分部类。
不建议,一个组件要么都一样,要么就分开。多出来的字段做成另外一个组件
laoyao 新项目这两天我也在纠结要不用共用一些组件,比如Player组件,客户端和服务器大部分字段是一样的,但是还是有部分字段不同, 想用partial类来解决,后面发现不同的命名空间的partial是不能一起的组合的。
dred 距离上次回复已经过去两个月了,说一下我的开发方法。我这边操作是有能前后端共用的方法组件,就放在share当中,但是对应的System脚本通常会有三个。share一个,写通用方法。client一个,写只有客户端用到的方法。server一个,写只有服务器用到的方法。如果客户端需要在共用组件中新增字段,这个操作不允许。需要客户端单独写组件扩充,add到这个组件的客户端实体上。两个月下来,这样开发节奏还是比较清晰的。这是我个人习惯哈。大佬有不同见解,欢迎指正。
dred 共用的组件的awake和destroy监听要在client和server的system中分别实现,维护两份。这样就实现了公用组件可以独立维护自身组件增删修改的特性。
laoyao 讲真,我听听都觉得麻烦.一个功能的东西分这么多份脚本去写. 我直接全都塞进share里面, Client和Server中的代码不多. 不就是share里面有的代码客户端用不上,有的代码服务端用不上嘛,不管他.
laoyao 我共用组件的Awake也放在Share里了,ET的client-server模式下相同组件在unity会走到server的Awake里。
DuckT 上一个项目我也是这样的。到后期你会发现所有东西堆在一起,共同维护的人多了之后逻辑会凌乱无比。分开来维护起来清晰非常多。
DuckT 我恰好相反,我现在选择分开写了,客户端和服务器端各写各的,全弄一起我强迫症得更严重了
laoyao 我们当前的开发规范,虽然创建的脚本会多。但是逻辑职责划分比较清晰。多人协作维护起来很方便。
laoyao 确实是这样,所以我感觉et6挺好的
laoyao 如果share一个共用的方法,在服务端和客户端有不同的逻辑,该怎么做?
当然,只要有一点不一样,就分开,不要搞一起