赞
踩
最近对闭包有了一定的了解,再加上最近遇到一个问题,发现正好可以运用闭包的思想来优化下,书以记之。
闭包可参考https://blog.csdn.net/qq_39779932/article/details/103050787
问题是这样的:在scrollview中动态加载button cell,然后点击button可以让右边的Text显示button的一些说明。见下图
正常逻辑下,在我加载的button 的预制体中必然需要加上脚本,因为一来要注册button的点击事件,二来要获得button中text的内容,必然需要一个脚本才行。给每个Button加一个脚本也有两种的解法。
1、采用单列模式,让button cell可以访问到足够多信息
2、使用委托进行一定的解耦
3、利用闭包保存外部局部变量的特性进行表达
对比以上三者,第一种是最常见的,第二种有一定的解耦,第三种是既解耦也因为不用再创建button的脚本节省一些内存。创建一个脚本其实还是要占些内存的,因为MonoBehaviour包含了大量的属性,很多时候都用不上,但是一旦创建了MonoBehaviour必然会开辟那么多的内存空间。另Unity官方也正在推行ECS来优化MonoBehaviour。
项目已上传码云,有需要见下链接。项目采用2018.3.1版本unity。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。