cocos2d-js

How to send final game score between Cocos Creator scenes?


I'm trying to create a game with Cocos Creator. I'm using more than one file in the game. Like Game.js GameOver.js Jump.js etc. I'm collecting scores with GainScore.js. I have to send final score to GameOver.js file. I show the score properly during the game. But when the game is over I have to send it to the other screen. How can I use the game score as global?

My gainScore function:

  gainScore() {
    this.score += 1;
    if (this.scoreDisplay === null) return;
    this.scoreDisplay.string = this.score;
  },

My GameOver.js file

cc.Class({
    extends: cc.Component,

    properties: {
        scoreEnd: {
            default: null,
            type: cc.Label,
        },
    },

    start() {
        this.scoreEnd.string = this.score.toString(); // I can't access with this way
    },
});

Solution

  • You can use CommonJS. Create a new file called Global.js.

    scripts
      |__ GameOver.js
      |__ GainScore.js
      |__ Global.js
    

    and keep your global variables here.

    Global.js:

    module.exports = {
        score: 0
    };
    

    And use with require in other files:

    let Globals = require("Globals");
    
    ....
    
    gainScore() {
       Globals.score += 1; // not this.score, should be Globals.score
       if (this.scoreDisplay === null) return;
       this.scoreDisplay.string = Globals.score;
    },
    

    You should require all other files that will use

    let Globals = require("Globals");
    
    cc.Class({
        extends: cc.Component,
    
        properties: {
            scoreEnd: {
                default: null,
                type: cc.Label,
            },
        },
    
        start() {
            this.scoreEnd.string = Globals.score.toString();
        },
    });