bool Node::addComponent(Component *component)
{
// lazy alloc
if (!_componentContainer)
_componentContainer = new (std::nothrow) ComponentContainer(this);
// should enable schedule update, then all components can receive this call back
scheduleUpdate();
return _componentContainer->add(component);
}
可以看到使用後會 馬上加入schedule中
而用到最多的地方就是 NodeReader
void NodeReader::setPropsWithFlatBuffers(cocos2d::Node node,
const flatbuffers::Table nodeOptions)
{
…
ComExtensionData* extensionData = ComExtensionData::create();
extensionData->setCustomProperty( customProperty );
extensionData->setActionTag( actionTag );
if( node->getComponent( ComExtensionData::COMPONENT_NAME ) )
{
node->removeComponent( ComExtensionData::COMPONENT_NAME );
}
node->addComponent( extensionData );
…
}
結果就是加的一堆schedule
在
void Scheduler::update(float dt)
{
…
DL_FOREACH_SAFE(_updates0List, entry, tmp)
{
if ((! entry->paused) && (! entry->markedForDeletion))
{
entry->callback(dt);
}
}
…
}
這邊 拉低效能
之前用3.5版還不會 最近升級3.10就變這樣
但是不了解addComponent是做什麼用的
該如何解?