1. 维护成本
不是所有类随便就写作单例,所以项目一大就会选用一些框架以更好的组织代码,作为程序员不能仅以实现功能为目的,写完的代码还需要维护,自己写的代码自己都会忘更何况去维护别人的代码,而维护别人的代码有时又不可避免。不合适的类作为单例若经常功能发生改变,比如修改参数个数或类型、删除某个方法、功能相近的两个单例合并,则要修改用到的很多地方。合适的做法是不面向类实例编程,功能都封装在类内部能不对外就不对外。
2. 资源无法释放
单例的实例不自实现销毁操作时,其本身会一直处于活跃状态,多了自然就会有更多的资源无法合适的释放 写了ABCD脚本,里面变量相互引用是大多数用Unity新手常见的思路和错误,你能想到用单例模式解决说明你还是思考了的,但是像很多回答的一样,单例有他的适用范围,比如管理Manager类等,不可以乱使用,特别是对游戏逻辑层。但是怎么解决呢,建议你多看一下别的设计模式,增加一些中间桥接层,比如使用MVC模式,A模块访问B模块只可以访问B模块的数据层,而所有游戏逻辑模块的数据层又由一个全局的Manager类进行管理。 看你的描述我觉得你的问题不在于在unity中滥用单例 而在于过度依赖mono那些东西 既然要考虑这种架构的问题就一定要脱离unity编程 那也就不会出现大量start什么的 和用全局变量的利弊相似。 单列滥用说明资源管理混乱 如果是继承了 MonoBehaviour的,销毁请注意内存泄露,被单例引用的,引用类型变量要置Null
一定要上真机查内存泄漏。
内存泄漏排查工具 推荐UWA GOT
页:
1
[2]