zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C++游戏引擎Easy2D】基于Node节点展开的Text文本拓展详解

C++游戏引擎节点Node 详解 基于 文本
2023-09-27 14:19:56 时间

在这里插入图片描述


iecne


🧛‍♂️iecne个人主页:iecne的学习日志
💡每天关注iecne的作品,一起进步
💪学C++必看iecne
本文专栏【C++游戏引擎】.
🐳希望大家多多支持🥰一起进步呀!
iecne


✨前言

哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【游戏引擎Easy2D】树形模型节点详解。包教包会,快来看看吧!
引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了

任务描述

如何根据据【游戏引擎Easy2D】树形模型节点详解 学会节点NOTE
本实践旨在通过多个代码的案列,让大家理解和掌握如何使用Easy2D引擎来将这三个基础类型详细的解释并且会运用
在这里插入图片描述



Easy2D导读

对于编程而言,初学者最需要的不是技能,而是成就感。
如果你喜欢用 C/C++ 编写自己的小游戏,那么 Easy2D 将是个不错的选择,它大大简化了游戏制作过程,可以帮助你快速开发 Windows 上的 2D 小游戏。
它的特点和它的名字一样,Everything is Easy!


安装 Easy2D

使用简易安装器
运行里面的 install.bat 文件进行安装。
点击此链接进行下载(纯免费,给官方搞成了VIP)
点击下载
安装程序会检测您已经安装的 Visual Studio 版本,并根据您的选择将对应库文件解压至 VS 库目录下。
Easy2D 不支持 VS2012 及以下的版本(包括 VC6.0),如果你使用的是低版本的 VS,那你需要尝试一下新版的 Visual Studio 了。

安装环境:
操作系统:Windows 7 及以上操作系统。
编译环境:Visual Studio 2013 (x86 & x64) 及以上版本。


一.入门

点赞关注马上继续

1.使用方法

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

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

格式如下:

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

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

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

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

上面的内容都属于 设计游戏内容,所以上面这个 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是不能改变的


二.进阶

接下来我们进阶介绍一下

1.通用属性

Text 支持节点的所有通用属性,例如坐标、缩放、旋转角度、不透明度等

// 顺时针旋转 30 度
text->setRotation(30);
// 放到至原来的两倍
text->setScale(2);
// 不透明度设为 0.5
text->setOpacity(0.5f);

Tips
注意:坐标、宽高、缩放、旋转角度、不透明度等是所有节点都具有的属性,并不是 Text 特有的。
如果文字比较多,你可以设置它自动换行:

auto text = gcnew Text(L"Hello Easy2D!");
text->setWordWrappingEnable(true);  // 开启自动换行
text->setWordWrappingWidth(70);     // 设置文字自动换行的宽度

2.文字的字体

如果你想设置文字的字体、颜色、字号等等属性,就需要为它创建一个 Font(字体)。

丰富的文字样式
Text::Style 结构体中提供了丰富的文字样式设定,例如下面的代码为文字设置了文字颜色、描边等样式

// 创建文字样式
auto style = Text::Style();
style.color = Color::Blue;          // 颜色为蓝色
style.hasOutline = true;            // 开启文字描边
style.outlineColor = Color::Red;    // 文字描边颜色为红色
style.outlineWidth = 2.0;           // 文字描边宽度为 2.0
style.wrapping = true;              // 开启自动换行
style.wrappingWidth = 70;           // 文字自动换行的宽度为 70(像素)
// 更多样式不再列出
// 设置文字样式
auto text = gcnew Text(L"Hello Easy2D!");
text->setStyle(style);

Tips
没有设置 Text 的样式时,它会自动创建一个默认样式并使用。
多个 Text 可以使用一个 Text::Style,例如下面的代码中 text1 和 text2 使用了同一个 Text::Style 对象。

text1 和 text2 在内部会各自拷贝一份 Text::Style,所以创建文字后再修改 style 不会影响 text1 和 text2。

auto style = Text::Style();
auto text1 = gcnew Text(L"Hello", Font(), style);    // text1 使用 style
auto text2 = gcnew Text(L"Easy2D", Font(), style);   // text2 也使用 style

三.属性实例

#include <easy2d/easy2d.h>
#include <iostream>
 
using namespace std;
using namespace easy2d;
 
int main()
{
    if (Game::init())
    {
        // 设置窗口标题和窗口大小
        Window::setTitle(L"Rotating Text");
        Window::setSize(300, 300);
 
        // 创建场景
        auto scene = gcnew Scene;
        // 进入该场景
        SceneManager::enter(scene);
 
        // 创建一个 Text 对象
        auto text = gcnew Text(L"Hello Easy2D!");
        // 将 Text 添加到场景中
        scene->addChild(text);
 
        // 居中显示在屏幕上
        text->setAnchor(0.5f, 0.5f);
        text->setPos(Window::getWidth() / 2, Window::getHeight() / 2);
 
        // 创建一个旋转动画,1 秒内顺时针旋转 60 度
        auto rotate = gcnew RotateBy(1, 60);
        // 创建一个循环动画
        auto action = gcnew Loop(rotate);
        // 让 Text 执行这个动作
        text->runAction(action);
 
        Game::start();
    }
    Game::destroy();
    return 0;
}

详细解说见【游戏引擎Easy2D】 学C++还不会文字旋转?如此炫酷的技巧来这学学习


关于命名

Easy2D 按照以下规律命名函数:

小驼峰式命名法则,第一个单词小写,后面的单词首字母大写,如Window::setTitle
所有函数均按照动词+名语形式命名,如Logger::showConsole
获取对象的属性值:get+属性名,如Node::getWidth
修改对象的属性值:set+属性名,如Node::setPos
获取对象的状态(bool值):is+状态名,如Node::isVisiable


总结

本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
iecne


感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

iecne