【游戏引擎Easy2D】场景和文本,不同的输出方式


前言

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++游戏引擎Easy2D教程 —— 调整窗口 ,包教包会,快来看看吧!

引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了


目录

前言

一.场景

二.节点

三.文本节点加入场景实例(代码实例)

四.内存管理与垃圾回收

五.综合实例  (代码实例)

六.总结


一.场景

Scene(场景) 代表游戏中的一个界面,你的游戏可以有类似主菜单、游戏界面、结束界面等多个场景。

你可以直接使用 new 关键字创建场景:

// 创建一个空场景
auto scene = new Scene;
// 记得删除场景
delete scene;

SceneManager(场景管理器) 是控制场景间切换的类,使用 SceneManager::enter() 函数进入你创建的场景中,使用 SceneManager::back() 可以退出当前场景。

// 进入 scene 场景
SceneManager::enter(scene);
// 退出当前场景
SceneManager::back();

每一个可视化程序都要有一个场景 ,持续关注iecne,带你们学会告别黑框框


二.节点

场景中所有的元素都被称为Node(节点),比如场景中的一个按钮,或者一张图片,它们都是节点的一种。

Easy2D 提供了许多游戏中常用的节点,比如Text(文本) Sprite(精灵) Button(按钮)等等,你可以像创建场景一样,直接用 new 关键字创建它们

// 创建一个文本节点
auto text = new Text(L"Hello Easy2D");

格式如下:

auto 名字 = new (gcnew) Text(L"要输入的文本");

将创建好的节点加入到场景中,它将显示在画面上

// 将文本添加到场景中
scene->addChild(text);

三.文本节点加入场景实例

上面的内容都属于 设计游戏内容,所以上面这个 Demo 的完整代码如下所示

#include <easy2d/easy2d.h>
#include <iostream>

using namespace easy2d;
using namespace std;

int main()
{
    if (Game::init())
    {
        /* 设计游戏内容 */
        // 创建一个空场景
        auto scene = new Scene;
        // 进入 scene 场景
        SceneManager::enter(scene);

        // 创建一个文本节点
        auto text = new Text(L"Hello Easy2D");
        // 将文本添加到场景中
        scene->addChild(text);

        Game::start();

        // 释放内存
        delete scene;
        delete text;
    }
    Game::destroy();
    return 0;
}

效果如下:

其实这一块都是一样的:

#include <easy2d/easy2d.h>
#include <iostream>

using namespace easy2d;
using namespace std;

int main()
{
    if (Game::init())
    {
        /* 设计游戏内容 */
        // 创建一个空场景
        auto scene = new Scene;
        // 进入 scene 场景
        SceneManager::enter(scene);

        // 创建一个文本节点
        
        Game::start();

        // 释放内存
        delete scene;
        delete text;
    }
    Game::destroy();
    return 0;
}

只不过是在原基础上增加了这两行

auto text = new Text(L"Hello Easy2D");
        // 将文本添加到场景中
scene->addChild(text);

 当然text这个变量是可以改变的,但是后面的Text是不能改变的


四.内存管理与垃圾回收

Easy2D 支持垃圾内存的自动回收,要使用这个功能,你需要使用 gcnew 代替 new 来创建对象。

// 创建一个自动回收的场景
auto scene = gcnew Scene;
// 创建一个自动回收的文本
auto text = gcnew Text(L"Hello Easy2D");

使用 new 运算符创建的对象也可以手动调用 autorelease 函数,使其可以自动被回收。

// 使用 new 创建对象
auto scene = new Scene;
// 调用 autorelease 函数,使 GC 自动对其进行回收
scene->autorelease();

五.综合实例

#include <easy2d/easy2d.h>
#include <iostream>

using namespace easy2d;
using namespace std;

int main()
{
    if (Game::init())
    {
        /* 设计游戏内容 */
        // 创建一个空场景
        auto scene = new Scene;
        // 进入 scene 场景
        SceneManager::enter(scene);

        // 创建一个文本节点
        auto text = gcnew Text(L"点赞,关注,收藏,评论,支持一下iecne吧!!!");
        // 将文本添加到场景中
        scene->addChild(text);

        Game::start();

        // 释放内存
        //delete scene;
        //delete text;
    }
    Game::destroy();
    return 0;
}

效果如下:

而这里任然一样:

#include <easy2d/easy2d.h>
#include <iostream>

using namespace easy2d;
using namespace std;

int main()
{
    if (Game::init())
    {
        /* 设计游戏内容 */
        // 创建一个空场景
        auto scene = new Scene;
        // 进入 scene 场景
        SceneManager::enter(scene);

        // 创建一个文本节点
        auto text = gcnew Text(L"");
        // 将文本添加到场景中
        scene->addChild(text);

        Game::start();

        // 释放内存
        //delete scene;
        //delete text;
    }
    Game::destroy();
    return 0;
}

只是在括号里加上了

点赞,关注,收藏,评论,支持一下iecne吧!!!

 所以快点赞,关注,收藏,评论,支持一下iecne吧!!!


六.总结

本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下

包教包会。

帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!

原创不易,还希望各位大佬支持一下

点赞,你的认可是我创作的动力!

收藏,你的青睐是我努力的方向!

评论,你的意见是我进步的财富!


  感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主

文章存在借鉴,如有侵权请联系修改删除!dd8b4788b2554df4bec4b8202395cad2.gif

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 37
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值