laoyao 这样会有很大量的代码是重复的。比如一个Entity的创建类,在服务端和客户端前9个字段都一样,只有最后一个字段的赋值会有不同。这时如果拆成两个System,等于90%的代码都重复了,感觉很难受。我想问的就是如何在share的system里调用服务端客户端不同的那一点点代码(其实就是写在client和server的两个system)
Liquor emmm,可能是我没有表达清楚。如果按照这个规范开发是不会有重复代码的。共用组件的字段放在share的Mode里面,然后在share的hotfix创建system,里面放着共用逻辑。在client的hotfix创建system,放客户端独有逻辑。在server的hotfix创建system,放服务端独有逻辑。
laoyao 我现在也是采取这种方式了,体验下来挺好的。总结下来就是:数据结构共用,相同的逻辑放到Share中共用,不用的逻辑分别放到Server和Client。
laoyao 我现在有一个方法写在share里,其中有一个数据,client需要从client的组件A取,server需要从server上的这个组件取,share里取不到这两个值,不知道该怎么办。
Liquor 就把这个 数据的获取获取方法分别用不同的逻辑写在客户端和服务端呗。把获取数据的方法从共用方法中剔除,解决。
laoyao 还是那个问题,获取数据当然可以剔除,分别写到client和server中,问题是,share中怎么调他们俩呢? 这样share的方法也得拆成2个,share上面的share方法也得拆
我发现ClientServer模式下,组件会同时触发写在Client和Server的两个Awake方法,可能有点逻辑问题,这个怎么办?
laoyao
laoyao 还有一个问题,比如说player都是共用数据放在了share里面,但是server里面有playerComponent.addchild<Player>.这时候因为那个代码检查工具就需要给Player加上[ChildOf(typeof(PlayerComponent))],但是加上这个等于share引用了ET.server.其实不应该引用.题主对于这种情况怎么处理的?直接把那个检查去掉吗
Liquor 我们项目使用的client模式开发,没有使用CS模式。使用client模式开发更接近真实上线环境。在client-server模式下开发,不注意的话会引用奇怪的命名空间。导致打包的时候需要临时解决一些奇怪的错误。
laoyao client模式就是单机测试稍显繁琐,但也没啥大问题。 然后后半段这个问题我也是经常遇见,我是每隔一段时间检查一次,避免积累太多错误
DuckT 好像有点懂了,把PlayerComponent从server移动到share,然后PlayerComponentSystem还在server里面.这样share有PlayerComponent这个数据,但是具体实现在server里面
DuckT 对的