关于下拉刷新和上拉加载实现的一个疑问

最近项目里面需要实现一个类似app的那种下拉刷新和上拉加载的列表,我把整个列表封装成一个prefab
但是当用cc.Instantiate(prefab)拿到节点再取出脚本的时候,发现刷新的回调会有问题
一个场景中只有一个下拉刷新prefab的时候是ok的,当出现多个的时候,最后一个的回调会覆盖之前的所有,后来我找了很久的资料才发现以下这段话
instantiate
克隆指定的任意类型的对象,或者从 Prefab 实例化出新节点。

(Instantiate 时,function 和 dom 等非可序列化对象会直接保留原有引用,Asset 会直接进行浅拷贝,可序列化类型会进行深拷贝。)
那么问题来了 我该如何实现我这个需求呢?

不理解,,,列表就一个,干嘛要刷新一次克隆一次

就是不止一个啊,类似于app中那种多个tabel+多个页面的那种情况,每个页面都有个列表 其中的数据是不同的,就好比微信的聊天记录列表和通讯录列表 可以理解在一个场景内的2个table对应的2个预制体 载体都是listview 但是其中的数据和操作各不相同 在creator中该用什么思路来实现呢?

我的想法,列表为scrollview加layout,layout排序把里面相同的类型的内容做成prefab,多的话弄个对象池,scrollview顶部回弹的回调里判断是否有新信息,有的话就给layout添加新节点,再把它排到前面来(不知道layout设置成bottom to top会如何)。这样弄效果可以了,再把列表做成prefab

:sweat_smile:其实下拉刷新和上拉加载的效果我已经实现了,问题不在这, 根据app端的思路是 任何的列表都是属于一个控件,改变的只是其中的item 所以我把下拉刷新,上拉加载和列表统一封装成了一个prefab 在creator中 prefab是否能理解成自定义控件呢? 如果能的话 那说明我的思路没问题,问题是当我在同一个场景内需要实例化2个一样的prefab的时候,他们的回调会相互覆盖,只有一个生效,这很不科学,原因我已经知道了是因为cc.Instantiate(prefab)function 和 dom 等非可序列化对象会直接保留原有引用, 但是我应该如何避免这个问题从而达到我的需求呢

抱歉。。。我是业余的,又是没学多久的。。。所以对有些专业名词理解有些出入
你的意思是
let a=cc.Instantiate(prefab)
let b=cc.Instantiate(prefab)
然后只有a有用?那不应该啊,我的游戏里同时Instantiate出来几百上千个不同类型的子弹都没事
是不是prefab自动onload引起的
试试给prefab的脚本里不用onload和start,用自定义初始化函数比如init()?

let a=cc.Instantiate(prefab)
a.getComponent('***').init(***);