🧛♂️iecne个人主页::iecne的学习日志
💡每天关注iecne的作品,一起进步
💪学C++必看iecne
本文专栏:【C++游戏引擎】.
🐳希望大家多多支持🥰一起进步呀!
✨前言
哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【游戏引擎Easy2D】这三个基础功能会了,做一个游戏不在话下,Listener。包教包会,快来看看吧!
引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了
任务描述
如何根据据【游戏引擎Easy2D】核心功能Game+Window+Input,学完秒变大神
本实践旨在通过多个代码的案列,让大家理解和掌握如何使用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) 及以上版本。
一、Time 时间类
1.Time时间类的基本结构
Time 类用来管理游戏的时间,它辅助 Game 类处理何时更新游戏、何时释放CPU等。
Time 类提供给开发者的函数有限,如下:
// 获取上一帧与当前帧的时间间隔(秒)float dt = Time::getDeltaTime();// 获取上一帧与当前帧的时间间隔(毫秒)unsignedint dtMs = Time::getDeltaTimeMilliseconds();
而上一期我们讲了如何重置时间,大家有兴趣去看看
2.总时长
// 获取游戏总时长(秒)float totalTime = Time::getTotalTime();// 获取游戏总时长(毫秒)unsignedint totalTimeMs = Time::getTotalTimeMilliseconds();
二.Renderer 渲染器
Window 类封装了有关窗口操作的一些函数,例如修改窗口大小等等。
1.常用函数
Renderer 封装了有关渲染的所有函数,当然大部分函数都不需要开发者手动调用。
Renderer 类建议开发者的使用函数如下:
// 将游戏画面背景色设为白色
Renderer::setBackgroundColor(Color::White);// 显示画面 FPS
Renderer::showFps(true);
2.其他用法
如果你确实需要实现自定义的渲染行为,例如当你需要渲染非常多的物体(一个巨大的地图或其他东西),直接使用 Sprite 会导致游戏卡顿时,可以实现一个自定义的 Sprite 类,直接调用原生函数来提升渲染速度:
获取 Direct2D 的 ID2D1HwndRenderTarget 对象
有关该类的使用方法,请查阅微软官方文档
https://docs.microsoft.com/en-us/windows/win32/api/d2d1/nn-d2d1id2d1hwndrendertarget
auto renderTarget = Renderer::getRenderTarget();
三.Logger 日志
Logger 提供了简单的日志记录功能,用于辅助开发者进行调试。
开启或关闭 Logger 系统只需要一行代码(Logger默认是开启状态):
// 打开日志系统
Logger::enable();// 关闭日志系统
Logger::disable();
Logger 提供了三种日志等级,分别是 message(消息)、warning(警告)、error(错误),三种等级都可以用类似 printf 函数的格式化方式输出日志:
// 输出一行消息
Logger::messageln(L"这是一条消息,同时输出一个数字 %d",123);// 输出一行警告
Logger::warningln(L"这是一条警告,同时输出一个浮点数 %.2f",1.23);// 输出一行错误
Logger::errorln(L"这是一条错误,同时输出一个字符串 %s", L"字符串");
这个用C多的Cpp朋友有福了,printf太熟悉了
四.关于控制台
使用 VS 编译的程序主要分为 控制台程序(Console) 和 Win32程序 两种,一般初学者都习惯于创建控制台程序,它的特点是程序启动后会有一个黑框框,执行printf函数可以在黑框框中输出文字。
但是对于游戏开发而言,控制台(也就是黑框框)是不应该出现的,所以游戏开发应选择 Win32程序 方式创建项目。
在 Win32 程序中,由于不存在控制台,我们 Logger 输出的日志也就看不到了,这时候可以使用 Logger 提供的函数创建一个控制台出来:
// 显示控制台
Logger::showConsole(true);
Tips
这个函数应该只在调试时使用,发布游戏前应去除这个函数。
关于命名
Easy2D 按照以下规律命名函数:
小驼峰式命名法则,第一个单词小写,后面的单词首字母大写,如Window::setTitle
所有函数均按照动词+名语形式命名,如Logger::showConsole
获取对象的属性值:get+属性名,如Node::getWidth
修改对象的属性值:set+属性名,如Node::setPos
获取对象的状态(bool值):is+状态名,如Node::isVisiable
总结
本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
感谢每一个观看本篇文章的朋友,更多精彩敬请期待~( ̄▽ ̄~)~:
iecne的博客
若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
版权归原作者 iecne 所有, 如有侵权,请联系我们删除。