# 21. 什么是需要共享的数据?

之前说过，需要共享的数据放在 Model 中管理，那么什么是需要共享的数据？

常见的总共有三种:
* 需要存储的数据，是时间上共享的数据。即游戏应用关闭之后，下次打开数据是不变的。
* 需要在多个界面或者 MonoBehaviour 上使用的数据，是物理上共享的数据，即游戏不管是打开别的界面还是跳转到别的场景，数据在内存中是不会被释放的。
* 配置表也是共享的数据，即游戏开发阶段所配置的数据，共享给玩家游玩时的引用，提供数据的查询和展示。

那么非共享的数据放在哪里呢？

主要放在 MonoBehaviour 脚本中就行，比如要判断用户是否输入了，如果输入了则显示某个按钮，那么这里就需要一个 bool 变量的判断，这个 bool 变量如果放在 Model 里就不合适了，因为这个 bool 变量只是被当前的界面一次性使用了，除非这个 bool 变量需要存储或者在别的地方引用了，才适合放到 Model 里。

再比如一个常见的问题是，敌人的生命要不要放在 Model 里？

答案是不需要的，敌人的生命交给敌人脚本自己管理即可。

如果敌人的生命需要存储，那么存储和加载就需要将敌人的生命转换成对应的存储用的数据结构，然后将这个数据结构序列化并保存，而 Model 不需要持有这种数据结构。

如果敌人的最大生命需要查询，那么可以从配置表里查询，配置表可以由 Model 管理，也可以由之后要介绍的 System 管理。也可以将最大数据的配置定义在 敌人脚本 或者 敌人 prefab 上，把 prefab 当做配置。


* QFramework 主页：[qframework.cn](https://qframework.cn)
* QFramework 交流群: 541745166
* QFramework Github 地址: <https://github.com/liangxiegame/qframework>
* QFramework Gitee 地址：<https://gitee.com/liangxiegame/QFramework>
* 本文由 《QFramework 教程年会员》赞助，地址：[https://www.gamepixedu.com/vip/?levelId=1](https://www.gamepixedu.com/vip/?levelId=1)  