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



    前言

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

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


    目录

    前言

    一.场景

    二.节点

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

    四.内存管理与垃圾回收

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

    六.总结


    一.场景

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

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

    1. // 创建一个空场景
    2. auto scene = new Scene;
    3. // 记得删除场景
    4. delete scene;

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

    1. // 进入 scene 场景
    2. SceneManager::enter(scene);
    3. // 退出当前场景
    4. SceneManager::back();

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


    二.节点

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

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

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

    格式如下:

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

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

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

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

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

    1. #include
    2. #include
    3. using namespace easy2d;
    4. using namespace std;
    5. int main()
    6. {
    7. if (Game::init())
    8. {
    9. /* 设计游戏内容 */
    10. // 创建一个空场景
    11. auto scene = new Scene;
    12. // 进入 scene 场景
    13. SceneManager::enter(scene);
    14. // 创建一个文本节点
    15. auto text = new Text(L"Hello Easy2D");
    16. // 将文本添加到场景中
    17. scene->addChild(text);
    18. Game::start();
    19. // 释放内存
    20. delete scene;
    21. delete text;
    22. }
    23. Game::destroy();
    24. return 0;
    25. }

    效果如下:

    其实这一块都是一样的:

    1. #include
    2. #include
    3. using namespace easy2d;
    4. using namespace std;
    5. int main()
    6. {
    7. if (Game::init())
    8. {
    9. /* 设计游戏内容 */
    10. // 创建一个空场景
    11. auto scene = new Scene;
    12. // 进入 scene 场景
    13. SceneManager::enter(scene);
    14. // 创建一个文本节点
    15. Game::start();
    16. // 释放内存
    17. delete scene;
    18. delete text;
    19. }
    20. Game::destroy();
    21. return 0;
    22. }

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

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

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


    四.内存管理与垃圾回收

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

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

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

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

    五.综合实例

    1. #include
    2. #include
    3. using namespace easy2d;
    4. using namespace std;
    5. int main()
    6. {
    7. if (Game::init())
    8. {
    9. /* 设计游戏内容 */
    10. // 创建一个空场景
    11. auto scene = new Scene;
    12. // 进入 scene 场景
    13. SceneManager::enter(scene);
    14. // 创建一个文本节点
    15. auto text = gcnew Text(L"点赞,关注,收藏,评论,支持一下iecne吧!!!");
    16. // 将文本添加到场景中
    17. scene->addChild(text);
    18. Game::start();
    19. // 释放内存
    20. //delete scene;
    21. //delete text;
    22. }
    23. Game::destroy();
    24. return 0;
    25. }

    效果如下:

    而这里任然一样:

    1. #include
    2. #include
    3. using namespace easy2d;
    4. using namespace std;
    5. int main()
    6. {
    7. if (Game::init())
    8. {
    9. /* 设计游戏内容 */
    10. // 创建一个空场景
    11. auto scene = new Scene;
    12. // 进入 scene 场景
    13. SceneManager::enter(scene);
    14. // 创建一个文本节点
    15. auto text = gcnew Text(L"");
    16. // 将文本添加到场景中
    17. scene->addChild(text);
    18. Game::start();
    19. // 释放内存
    20. //delete scene;
    21. //delete text;
    22. }
    23. Game::destroy();
    24. return 0;
    25. }

    只是在括号里加上了

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

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


    六.总结

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

    包教包会。

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

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

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

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

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


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

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

  • 相关阅读:
    33.线程中常用的方法【20220811】
    大二《web课程设计》网页制作HTML个人主题青春网站(带psd)
    [附源码]Python计算机毕业设计大学生兼职系统
    `英语` 2022/8/17
    Go 中的类型断言与静态转换
    微信小程序(原生)使用Swiper实现(商品详情)视频和图片轮播(仿京东/淘宝商品详情头部视频+图片轮播)
    机器学习实验------密度聚类方法之DB-Scan
    C++:函数指针进阶二:指向对象成员函数的指针
    Vue之Vue的介绍&安装&开发实例&生命周期钩子
    centos7.9日志排查硬件故障问题【温度过高导致硬盘故障】
  • 原文地址:https://blog.csdn.net/CSDN_linyanchen/article/details/126286287