听我没描述清楚还是你没听懂?
简单点说,从A飞金币到B,B不用关心A是否存在,但B总要给个目的地的坐标吧?或者告诉A到哪个node
A再去计算世界坐标,否则还能怎么做?
赞同~~这就是最简洁的处理方式 
回答问题前首先看看文章的标题
可能你mvc切的太竖了。一般都是M层和VC层横切,然后M层切模块,VC层切模块,2者的切分不一定一样(一般可能一样,也会放到竖切的目录里面)。VC层的模块在上层,就可以随意使用下面M层的数据。
因为一般很多界面会依赖好几个模块的数据,如果这块竖切了就跨太多模块了。
像你这个飞金币的例子,比较简单,资产界面图标保存位置到资产Model,然后背包界面直接就使用资产Model,因为vc是上层,m是下层,是可以随意读取下层的数据的。
中间层这个,有个说法是blackboard,但是基本上只要M层作为下层全访问,基本上就没有这个问题了。
PS:艹,看了一下是1年前的,谁挖的坟,我还回了一下。
哈哈哈大佬还可以详细说一下么
已经说的比较详细了吧。
就是MVC有几种形式,可能你们是先切模块,例如模块A,模块B。模块A里面有自己的MVC。AModel,AController,AView。
但是由于数据和界面本身不能用一个分类,最好是M层和VC层先分离,下层是Model层,横切AModel,BModel。上层是VC层,可能是A1Controller,A2Controller。
这个分离你可以看成是Layer模式,下层是数据模块,上层是业务逻辑和界面模块。然后每一层再各自分模块。相当于游戏里面整个一个大M层。
在这种结构下有几个特点:
1.Model模块和VC模块分类可能完全不一样,根据数据来分和根据系统功能模块来分。这样可以让很多使用跨模块信息的界面实现起来比较方便。也可以把一个大界面功能模块的数据细分成多个Model数据模块。
(当然在代码文件目录结构上,是怎么方便怎么来,如果大部分模块都是1对1的,那用竖切的目录结构也可以)
2.上层的VC模块,可以跨模块使用下层的Model模块,因为是上下层的关系,你也可以看成下层Model是一套数据API,给上层VC模块调用。
3.事件派发这里,中心的事件派发器,只用于上层的VC模块之间交互,下层数据模块每个模块都有自己的事件派发器(主要派发数据修改信息)。
其实就一句话,在这个层级思路下,Model可以随便跨界面模块直接用。
而楼主提到的屏蔽模块不会报错也可以做到,屏蔽对应界面模块即可,对应数据层继续跑。对应飞金币的例子,屏蔽了资产界面模块,但是数据模块接口还在,有资产界面模块的时候由它设置,没有模块的时候就是默认数据,就飞到默认数据0,0点就好。
挺好的,我后来差不多就是采用这种 model公用 的方案了,但我还是抽了一层中间层通过注册来间接调用不同的model, 谢谢大佬晚来一年的回复 啊哈哈哈 