Cocos2d x 不再调用组件的更新函数

Cocos2d x 不再调用组件的更新函数,cocos2d-x,cocos2d-x-3.0,Cocos2d X,Cocos2d X 3.0,组件的更新函数在cocos2dxv3中不再被调用,而在v2.x中被调用为fine 我注意到两个版本中的CCScheduler完全不同,v2中的Node::update是从CCScheduler::update函数调用的,但在v3中,它是从Scene::update调用的,而Scene::update从未调用过 任何人都知道从v2迁移到v3的最佳方法是什么 我的代码如下 在游戏场景中 layerMoveLeft = ParallaxNode::create(); layerMoveLeft->

组件的更新函数在cocos2dxv3中不再被调用,而在v2.x中被调用为fine

我注意到两个版本中的CCScheduler完全不同,v2中的Node::update是从CCScheduler::update函数调用的,但在v3中,它是从Scene::update调用的,而Scene::update从未调用过

任何人都知道从v2迁移到v3的最佳方法是什么

我的代码如下

在游戏场景中

layerMoveLeft = ParallaxNode::create();
layerMoveLeft->addComponent(new MoveLeft() );
this->addChild(layerMoveLeft);
在左类中-

class MoveLeft : public Component
...

void MoveLeft::onEnter()
{
     log("- MoveLeft::onEnter");
}

void MoveLeft::update(float delta) {
    log("- MoveLeft::update"); 
}

v3+中从未调用v3中的更新函数。您可以使用ScheduleUpdate函数调用在节点类上调用更新方法

 virtual void update(float dt);

我不知道您为什么希望V3.0中的组件类进行以下更改,我希望它能正常工作

向左移动

MoveLeft.cpp

您可以在类中任意位置添加上述代码,最好是在init方法中 现在,按照之前的操作创建函数:

void MoveLeft::update(float delta) {
    log("- MoveLeft::update"); 
}
附言:我没有在组件中使用它,我在图层中使用过它

class Quizzes: public cocos2d::Layer{
 public:
      virtual bool init();
}

在v3+中,您可以将上面的代码添加到组件的父类中

this->scheduleUpdate();

我实际上正在将我的v2项目迁移到v3+。。如果你能告诉我什么是组件机制的替代方案,那就太好了。我在组件的“oneter”函数上调用ScheduleUpdate吗?组件类是Ref类的子类。我想你可以使用scheduleUpdate。这可能对你有帮助:谢谢,我会试试的。我将其与组件一起使用,并将其添加到ParrallaxNode
class Quizzes: public cocos2d::Layer{
 public:
      virtual bool init();
}
this->scheduleUpdate();