《入门级-Cocos2d 4.0塔防游戏开发》---第二课:游戏加载界面开发

一、开发环境介绍

操作系统:UOS1060专业版本。

cocos2dx:版本

环境搭建教程:

统信UOS下配置安装cocos2dx开发环境_三雷科技的博客-CSDN博客

二、开发内容

游戏在开始时都需要加载大量的资源,为了让用户有等待时间,因此最先开发的场景为加载游戏资源场景,用于加载游戏资源,当然其中还可以处理升级等操作。

2.1 修改窗口的大小。

在AppDelegate.cpp文件中修改为以下内容:

cpp 复制代码
static cocos2d::Size designResolutionSize = cocos2d::Size(960, 640);

2.2 添加加载场景相关代码

在Classes目录中创建Scene目录用于存储关于场景相关的代码。

bash 复制代码
mkdir Sence
touch LoadingScene.cpp
touch LoadingScene.h

在CMakeLists.txt文件中加入场景代码文件

2.3 代码内容如下:

  • LoadingScene.cpp
cpp 复制代码
/****************************************************************************
 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
 
 http://www.cocos2d-x.org
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 ****************************************************************************/

#include "LoadingScene.h"

USING_NS_CC;


Scene* LoadingScene::createScene()
{
    return LoadingScene::create();
}


// on "init" you need to initialize your instance
bool LoadingScene::init()
{
    //
    // 1. super init first
    if ( !Scene::init() )
    {
        return false;
    }
    numberOfLoadedRes = 0;
    auto visibleSize = Director::getInstance()->getVisibleSize();
    auto background = Sprite::create("Loadding.png");
    background->setRotation(-90.0f);
    background->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
    addChild(background);
    // 定时更新,用于检测资源是否被加载完成,如果加载完成才跳入到正真的欢迎页面。
    schedule(CC_SCHEDULE_SELECTOR(LoadingScene::logic),1.0f);
    return true;

}
// 该代码处理加载资源的操作。
// 加载资源包括图片,声音等。
void LoadingScene::loadSource(){

}
void LoadingScene::logic(float dt)
{
     // 如果你愿意可以在这里通过监听numberOfLoadedRes的值来显示加载进度。
    if(0 == numberOfLoadedRes){
        loadSource();
    }else if(100 == numberOfLoadedRes){
        // 处理跳转动作。
    }
}
  • LoadingScene.h
cpp 复制代码
/****************************************************************************
 Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
 
 http://www.cocos2d-x.org
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 ****************************************************************************/

#ifndef __LOADING_SCENE_H__
#define __LOADING_SCENE_H__

#include "cocos2d.h"

class LoadingScene : public cocos2d::Scene
{
public:
    static cocos2d::Scene* createScene();

    virtual bool init();
    
    
    // implement the "static create()" method manually
    CREATE_FUNC(LoadingScene)
        void loadSource();
        void logic(float dt);
        int numberOfLoadedRes;
};

#endif // __LOADING_SCENE_H__

2.3 添加资源

由于加载场景中需要使用到资源。因此我们需要将资源拷贝到Resources目录中。

注意:在使用QT调试的时候有可能出现无法找到资源的情况,需要手动将Resources目录内容拷贝的debug/bin/Resources目录中!!!!

三、显示效果

相关推荐
科技资讯早知道2 小时前
java计算机毕设课设—坦克大战游戏
java·开发语言·游戏·毕业设计·课程设计·毕设
程序猿阿伟1 天前
《C++游戏人工智能开发:开启智能游戏新纪元》
c++·人工智能·游戏
Artistation Game1 天前
九、怪物行为逻辑
游戏·unity·游戏引擎
妙为1 天前
unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发
游戏·游戏引擎·虚幻·碰撞预设
网站领航1 天前
服装时尚与动漫游戏的跨界联动:创新运营与策划策略研究
游戏·流量运营·用户运营
龙智DevSecOps解决方案1 天前
Perforce演讲回顾(上):从UE项目Project Titan,看Helix Core在大型游戏开发中的版本控制与集成使用策略
游戏·ue5·源代码管理·perforce·helix core
dangoxiba1 天前
[Unity Demo]从零开始制作空洞骑士Hollow Knight第十三集:制作小骑士的接触地刺复活机制以及完善地图的可交互对象
游戏·unity·visualstudio·c#·游戏引擎
新手unity自用笔记1 天前
项目-坦克大战学习-游戏结束
学习·游戏
DK七七2 天前
【PHP陪玩系统源码】游戏陪玩系统app,陪玩小程序优势
前端·vue.js·游戏·小程序·php·uniapp
幻狐boke2 天前
【mod分享】山脊赛车无限高清重置mod,替换高清贴图和光影材质,可实现reshade光追
游戏·贴图