游戏开发散记

今天开始进行游戏开发,怕自己忘掉,记录每天学习到的东西。

经过前些天的比较,在cocos和unity中还是选择了先用cocos来进行开发。今天用cocos做了一个小demo,只完成了很少的一部分功能。

1.获取节点。目前我知道的方法只有通过场景(作为根节点),进行递归遍历,找到想要的节点。方法很简单,如下:

Node* HelloWorld::seekNodeByName(Node *root, const std::string &name)
{
    if (!root)
    {
        return nullptr;
    }
    
    if (root->getName() == name)
    {
        return root;
    }
    
    const auto& subNodes = root->getChildren();
    for(auto& subNode : subNodes)
    {
        Node *subRoot = dynamic_cast(subNode) ;
        if (subRoot) {
            Node *res = seekNodeByName(subRoot, name);
            if (res != nullptr)
            {
                return res;
            }
        }
    }
    return nullptr;
}
需要注意的是,通过这个方法中root节点要选对,我利用cocos提供的LevelSelection这个实例,选择的是MainScreen.csd,结果找不到我想要的button,而后选择了Layer.csd就找到了,因为我要的button在Layer.csd中。

2.点击button的方法回调方法,可以给button增加监听器。通过查阅api,可以看到button是继承Widget的,而且事件方法也是复用Widget的。我用void addClickEventListener(const ccWidgetClickCallback& callback)这个方法试了一下这个的参数是个回调函数,callback用的是cocos定义好的CC_CALLBACK_0(

__selector__,__target__, ...)(其中最后一个数字代表的是函数selector的参数个数),在selector函数中可以定义动作事件后要处理的事情

你可能感兴趣的:(游戏开发,游戏开发,cocos2d-x)