当前位置: 首页 > news >正文

cocos2 场景跳转传参

cocos2 场景跳转传参

这是一个什么需求呢,就是我用cocos2.14.2开发了几个场景,其中一个首页,五六个场景,现在从首页点进去需要传递一个参数到其他场景里面进行判断用

分析

这个功能其实不是很难,但是对于没有用过或者写过的人来说确实没思路,现在就简单总结一下我的想法。

方法一

首先一个方法就是使用“常驻组件”。这样的话保证一个组件在系统里面常驻,切换到哪个场景也存在这个组件,可以把参数放到这个组件中保存,就是实现了传参,这个方法算是曲线救国吧,和我印象里面的传参不一样,我不喜欢,就没有用这个方法,当然是可以的哈!

方法二

我是用的是这种方法,就是通过单例模式,存储了一个全局的吧算是,全局的参数对象,跳转的时候把参数存起来,然后在另一个需要接收的场景里面去读取。关键就是在传的时候把数据push进去,需要的场景pull一下,有的话就是有传参,没有的话就是没有传参。

实现

实现的花很简单,首先创建一个全局文件:/SceneDataManager/SceneDataManager.ts

文件里面的内容也很简单:

const { ccclass, property } = cc._decorator;@ccclass('SceneDataManager')
export class SceneDataManager {private static instance: SceneDataManager;private params: { [key: string]: any } = {};private constructor() { }public static getInstance(): SceneDataManager {if (!SceneDataManager.instance) {SceneDataManager.instance = new SceneDataManager();}return SceneDataManager.instance;}// 存储参数public setParam(key: string, value: any): void {this.params[key] = value;}// 获取参数public getParam(key: string): any {return this.params[key];}// 清除参数public clearParam(key: string): void {delete this.params[key];}
}

使用的话也很简单,比如按照我的需求,在首页:

  // 引用先import { SceneDataManager } from '../SceneDataManager/SceneDataManager';// 跳转场景传递参数chooseSceneFuncWithParams(params) {SceneDataManager.getInstance().setParam('sceneParams', { params: params});cc.director.loadScene("student");}

在接受参数的页面也很简单

  // 先引入import { SceneDataManager } from '../SceneDataManager/SceneDataManager';// 页面加载回调start() {const sceneParams = SceneDataManager.getInstance().getParam('sceneParams'); // 获取传递的参数if (sceneParams) {SceneDataManager.getInstance().clearParam('sceneParams'); // 清空参数console.log("接收的参数---> ", sceneParams)}}

没了,就这些!

http://www.lryc.cn/news/610107.html

相关文章:

  • 佰力博检测与您探讨介温谱和介电谱的区别?
  • 【实战】Dify从0到100进阶--中药科普助手(1)
  • 7.1、《软件工程》-软件生命周期-CMM-开发模型
  • 【2025/08/04】GitHub 今日热门项目
  • 【2025-08-04 Java学习小记】
  • Linux磁盘分区与挂载完全指南
  • Java基础学习(一):类名规范、返回值、注释、数据类型
  • 使用1panel将http升级至https的过程
  • javacc学习笔记 03、编译原理实践 - JavaCC解析表达式并生成抽象语法树
  • 深入解析线程同步中WaitForSingleObject的超时问题
  • 【Java基础知识 17】面向对象编程
  • Adobe Experience Manager (AEM) Assets|企业级数字资产管理平台(DAM)
  • javacc学习笔记 01、JavaCC本地安装与测试
  • TorchDynamo源码解析:从字节码拦截到性能优化的设计与实践
  • 厄米系统(Hermitian System)
  • Go 函数选项模式
  • 模型学习系列之考试
  • day15 SPI
  • 疏老师-python训练营-Day35模型可视化推理
  • Golang中的`io.Copy()`使用场景
  • #C语言——刷题攻略:牛客编程入门训练(四):运算(二)
  • 网站从HTTP升级到HTTPS网址方法
  • 北京JAVA基础面试30天打卡01
  • 【多智能体cooragent】CoorAgent 系统中 5 个核心系统组件分析
  • 力扣-1.两数之和
  • 腾讯混元重磅开源:四款小尺寸模型全面发布
  • Git如何为多平台配置密钥和用户信息?
  • 互联网医院整体项目套表整理过程文档全流程分析
  • 【MySQL基础篇】:MySQL常用内置函数以及实用示例
  • Flask + HTML 项目开发思路