我放心你带套猛 发表于 2021-2-23 16:05

看项目大小,小项目问题不大,大项目问题不小

当当当当裤裆坦 发表于 2021-2-23 16:15

单例对于访问外部非静态方法非常有用,通常一类功能统一又不经常变化的功能经常设计为单例,因此单例是有其适用场景的。单例滥用造成的问题有:
1. 维护成本
      不是所有类随便就写作单例,所以项目一大就会选用一些框架以更好的组织代码,作为程序员不能仅以实现功能为目的,写完的代码还需要维护,自己写的代码自己都会忘更何况去维护别人的代码,而维护别人的代码有时又不可避免。不合适的类作为单例若经常功能发生改变,比如修改参数个数或类型、删除某个方法、功能相近的两个单例合并,则要修改用到的很多地方。合适的做法是不面向类实例编程,功能都封装在类内部能不对外就不对外。
2. 资源无法释放
      单例的实例不自实现销毁操作时,其本身会一直处于活跃状态,多了自然就会有更多的资源无法合适的释放

我是来围观的逊 发表于 2021-2-23 16:17

写了ABCD脚本,里面变量相互引用是大多数用Unity新手常见的思路和错误,你能想到用单例模式解决说明你还是思考了的,但是像很多回答的一样,单例有他的适用范围,比如管理Manager类等,不可以乱使用,特别是对游戏逻辑层。但是怎么解决呢,建议你多看一下别的设计模式,增加一些中间桥接层,比如使用MVC模式,A模块访问B模块只可以访问B模块的数据层,而所有游戏逻辑模块的数据层又由一个全局的Manager类进行管理。

123456825 发表于 2021-2-23 16:24

看你的描述我觉得你的问题不在于在unity中滥用单例 而在于过度依赖mono那些东西 既然要考虑这种架构的问题就一定要脱离unity编程 那也就不会出现大量start什么的

惜颜705 发表于 2021-2-23 16:28

和用全局变量的利弊相似。

123456823 发表于 2021-2-23 16:29

单列滥用说明资源管理混乱

我爱萨其马虞co 发表于 2021-2-23 16:34

如果是继承了 MonoBehaviour的,销毁请注意内存泄露,被单例引用的,引用类型变量要置Null
一定要上真机查内存泄漏。
内存泄漏排查工具 推荐UWA GOT
页: 1 [2]
查看完整版本: Unity里滥用单例模式有弊端吗?