跨场景赋值的问题

首先感谢下有这样一个优秀的论坛,很及时的为我这种入门不到一周的新手耐心解答各种问题。

现在遇到自己做游戏的时候需要一个需求自己无法解决:
场景2:按钮1 按钮2
场景3:一个名为‘player’节点的角色。
需要点击场景2中按钮1的时候,场景3的player节点的图片资源更换为pic1
点击场景2中按钮2的时候,场景3的player节点的图片资源更换为pic2
(也就是场景2是角色选择,场景3是正是游戏,我现在只能做到简单的更换角色图片)

我的问题:主要是卡在不知道如何给不同场景的节点.组件赋值,相同场景我会用
cc.node.getChildByName(‘player’).getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(cc.url.raw(“resources/pic1.png”));
但是不同场景我就不知道要用什么调用了

我再文档和论坛搜索了下跨场景赋值,但是看不懂,所以还请大佬可以根据我的问题给我一个回答,感激不尽!

场景是指不同的scenes?还是只是不同的界面?不过有一种设计模式叫做观察者模式应该可以你想要的事情!

你好 可以参考下这篇帖子的讨论
https://forum.cocos.com/t/topic/66255

不同sence,观察者模式是什么?请问要如何开启?

你可以把数据保存下来,切换场景根据数据更换图片

我现在试图用一个根节点来实现我的需求
这句并不能实现变更myNode节点的图片,请问是哪里有错误吗?等号前面的和我注释掉的第二行是一样的(第二行可以实现),等号后面的是我从我另外一个脚本里抄过来的(路径没错),可是就是不会更换图片,请教各位

您好,我一开始使用搜索功能就是找到的这篇文章,配合文档的场景及切换那一张看,但是还是没有看懂,我觉得这个
session.js

class Session {
id = “”
name = “”
nail = “”
}
export default new Session
xxx.js

import session from “./session”
console.log(session.id)
session.id = “this is new id”
写的好像就是全局,但是我没有语言基础,所以并不知道要如何实现这个,如果能将这个再稍微详细解释一下就感激不尽了,谢谢

cc就是全局的,直接 cc.xxx, 自己想怎么传递怎么传递。自己整理套规范就行了。不要把纯数据和显示混杂到一起

场景2 点按钮改变 cc.xxx = yyy
场景3 读取cc.xxx来更换图片

    cc.find("Canvas/myNode").getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame.setTexture(cc.url.raw("resources/lvlv.png"));

可以帮忙看下上面这条语句吗?
原来是
cc.find(“Canvas/myNode”).getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(cc.url.raw(“resources/lvlv.png”));
不管用,百度又加了一个.setTexture,还是不管用
就是无法更换图片

你试试这样

cc.loader.loadRes('lvlv.png',cc.SpriteFrame,(err,spriteFrame)=>{
     cc.find("Canvas/myNode").getComponent(cc.Sprite).spriteFrame = spriteFrame;
})

变化成功了!
我刚刚从https://docs.cocos.com/creator/manual/zh/scripting/load-assets.html?h=.settexture获取和加载资源这里找到了这个文档,正在看怎么用(释放资源之后再学)
现在出现了一个新的问题,这个语法可以加入position和大小等参数吗?因为两张图大小不一样。

把图片的 节点 选出 自定义 参数 类型 不就可以吗?