刚玩cocoscreator几个星期,突然想做一个软件就是在前一个场景输入内容然后按下确认键,然后切换场景并可以获取到内容进行处理。
本来我感觉这个应该是一个超简单的东西,但是没有只学过一点点C++、pyhthon的我感觉无从下手。
总结了一下,发现实现的方法有很多:
1.用回调函数实现(暂时没搞明白,先不写);
2.定义一个常驻节点并挂载脚本实现(cocos切换场景会自动销毁原场景,所以可以通过常驻节点来做一些操作);
3.单独创建一个ts脚本类来传输(用单例模式保证节点一直发挥作用);
4............
这里介绍第三种方法:
首先,创建一个新的ts脚本,把里面清空;
export default class my_data{ //export default class表示这是一个可导入的脚本
static data:string[] = []; //创建静态数组存储数据
private static my_data:my_data; //准备创建一个单例模式
my_data(){ if(!my_data.my_data){ //判断是否存在本单例模式实例
my_data.my_data = new my_data();}
return my_data.my_data; }
//接收发送过来的输入框信息
set_data(arr:string[]){
my_data.data = arr;}
//获取输入框信息
get_data(){
return my_data.data; }}
在需要用到传送数据的脚本顶部输入:
import my_data from './单例模式脚本名字'; //即导入了脚本
然后通过:
data = new my_data(); //即实例化了单例模式
实例化之后就可以通过 data.get_data() \ data.set_data(arr) 使用里面的方法;
获取输入框内容:
创建一个新的脚本挂载在所有输入框的父节点上:
arr:string[] = []; //创建字符串数组存储输入框内容
set_txt(){ for(let a in this.node.children){ //收集输入框的信息
let txt:string = this.node.children[a].getComponent(cc.EditBox).string; //输入框内容
this.arr[a] = txt; //存储内容
data.set_data(arr) ; } //发送数组
然后通过类似方法创建一个切换场景的脚本,并绑定到按键上,就可以实现传输数据和切换场景了;
然后在下一个场景的脚本上同样导入单例模式脚本,通过 **.get_data() 方法获取得到前面输入框内容的数组啦!
本人对Java、typescript不是很掌握,或许上述方法看起来没有那么舒服流畅,欢迎大佬们能够告诉我更多好用的办法!