cocos怎么初始化一个预制场景

hello!各位大佬好,我是一个才入坑cocos不久的小白,如今遇到了一个让我摸不着头脑的问题。就是我采用了单场景多预制体的方法制作我的游戏,然后我通过做好一个场景之后,实例创建它的方式来实现打开某一功能后的场景跳转,但是我运行后。
假如我目前在游戏主页,点击实例化我的新场景后,可以完全正常的游玩,然后游戏结束后转回页面,当我再次点击按钮实例这个新场景后,开始出现了无法访问属性的报错。
微信图片_20250122124859
在浏览器里面的报错是这个


第一个报错发生的时候大概就是我在点击我游戏中的西瓜后,想让西瓜的数量+1,然后采用了单利的写法,里面写了如下增加西瓜的一个方法,报错也是在把fruit1转字符的那个地方
微信图片_20250122124903
西瓜是个预制体,绑定了fruitfly的组件,里面写着如下代码

报错是在通过调用addxigua这个方法这个地方
我自己改来改去真的没有什么头绪,我其实就是想让这个预制体完全初始化,就是每次都从0开始,我只需要产出的一些数据而已。
我的ts也是我自学的,所以代码写的也不规范,正在努力学习,希望可以得到大家的指教,小白真心求解!!!

出问题地方断点后 ,一步步往前查看堆栈

没怎么用过3.x,但是你这个赋值有问题,Node节点没有string属性的,需要fruitl.getComponent(Label).string = xxx,修改label是修改的Label组件的string,不是Node节点

哦哦好的我去看看

不行大佬,报错变成了这个

看下你的Node有没有在cc里导入

你第一次可以,第二次才报错,大概率是你第二次持有的还是第一次实例化出来的对象,这个对象在你第一次结束后被销毁了, 第二次所以报cannot set properties of null了.

报错是说你这个fruilt找不到了,你调用addxigua这个函数时,传的fruit是空的,可能被销毁掉了

导入了,哥

嗯对,我是这个场景使用完调用了个销毁,但是预制体第一次的销毁还会影响到这个预制体第二次的生成吗,不太理解,要是会的话,有没有什么办法让他不销毁呢,请教一下。

我也是这样理解的,但是我用完这个场景就想着销毁掉整个场景,然后实例化新的场景,我不太理解为什么同一个预制场景的第一次生成和第二次生成有关


看下这个instance.xigual的相关逻辑.

大佬就是这个,那个就是西瓜数量的文本显示。逻辑的话就是点击西瓜,数量+1,然后西瓜的文本同步更新一次。
微信图片_20250122124903
还有一个是文本变动的时候调用一个文字跳动的方法,也就是这个getfruit,但我觉得这个应该没什么问题,报错主要出在num字符串转成西瓜文本的时候,那个文本丢失了。
我这个addxigua的方法就是在guoyuanmanger,然后用的单利,在西瓜本身的脚本上调用guoyuanmanger的addxigua的方法,关于文本的全部逻辑就是这样了


然后就是销毁,我在guoyuanmanger里面写了个销毁的办法,相当于是自己销毁自己,是不是这块的错误呢?
微信图片_20250122173549

这个销毁方法是绑定在了一个按钮上面

不是这些,报错堆栈里面是在 addxigua方法里面 set string报cannot set properties of null, 应该是你的fruitl为null, 你的fruitl是第二个参数,看你调用的时候是传的 guoyuanmanger.instance.xigual, 所以要看这个单例持有的xigual的相关逻辑,比如赋值和销毁。

大佬对不起,我不太能理解您的意思,单利里面有关于xigual的相关逻辑以下就是全部了,第二次报错的时候,编辑器上也并没有丢失对象。
销毁的话我也没有单独对于这个xigual文本进行销毁,我是直接销毁整个guoyuan场景。
赋值的话就是点击西瓜后调用单利里面的方法addxigua让xiguanum+1,然后xigual再通过string的方法同步更新。


微信图片_20250122175308
微信图片_20250122175339

单例+预制体重复生成报错,应该是预制体销毁时或者重新生成预制体时没有处理好数据,导致还在引用已经销毁过的预制体。你报错的是空引用,简单解释就是你使用的东西不存在,仔细检查一下相关内容。

你的 guoyuanmanager 是单例吗,那guoyuanmanager的this.guoyuan.destroy();之后要把 this.guoyuan=null;,以及其他对象也得置空

是的是的,这个方法我还没试过,我试一下大佬

恩恩,好的