Cocos2d-x V3如何正确重写::create()

Cocos2d-x V3 How to override ::create() properly?

本文关键字:create 重写 V3 何正确 Cocos2d-x      更新时间:2023-10-16

我的Player类是这样定义的:

"Player.h"

#ifndef PLAYER_h
#define PLAYER_h
#include "cocos2d.h"
USING_NS_CC;
class Player: public Sprite {
public:
     Player();
     ~Player();

private:
    Sprite *playerSprite;
    __String name;
    int maxHP;
    int currHP;
    int maxMP;
    int currMP;
    int maxEXP;
    int currEXP;
 };
#endif

和"Player.cpp":

#include "Player.h"

我想初始化int maxHP, int maxMP。等

Player* myPlayer = Player::create();

用如下参数重写::create()函数的正确方法是什么

// create(int maxHP, int currHP, int maxMP, int currMP, int maxEXP, int currEXP)
Player* myPlayer = Player::create(100, 100, 100, 100, 100, 100); 

可以使用吗?

可以重载create(有多个同名不同签名的函数)

class Player : public Sprite {
public:
    static Player* create(int maxHP, int currHP, int maxMP, int currMP, int maxEXP, int currEXP) {
        Player* p = Player::create();
        p->maxHP = maxHP;
        // etc ...
        return p;
    }
}