赞
踩
SkyGameEngine2d - 探索 简洁 易用 ,一款适合游戏入门学习的2d游戏引擎
项目地址 https://gitee.com/xfcode/SkyGameEngine2d
QQ群号
:498358732
加群链接
:https://jq.qq.com/?_wv=1027&k=5odSA9K
示例游戏视频链接
:https://www.bilibili.com/video/av59147631/
更多文章见
:SkyGameEngine2d 游戏引擎相关文章目录汇总
引擎中的精灵(Sprite)、UI控件等支持图片显示的组件都支持从纹理缓存中图片信息。图片可以是纹理中的某一块区域,也可以是纹理的全部区域。涉及纹理相关的类如下图所示。
注:
SpriteFrame 内部的纹理对象如果已经加载过一次,那么再次引用该对象时不会重新加载,而是从纹理缓存(TextureCache)中获取
缓存纹理有2种方式:
引擎支持TexturePacker工具打包生成的纹理信息。
进入官方网站https://www.codeandweb.com/texturepacker下载工具
安装很简单 一路下一步就OK了
将生成的文件(xml ,png)copy到游戏项目目录的res目录下
以重复播放一段角色动画为例,演示如何在代码中使用打包后的纹理,以及纹理缓存。
void TestScene::enterScene() { //{{ //加载纹理到精灵帧缓存中 auto cache = GameWorld::getInstance()->getDefultSpriteFrameCache(); //使用打包纹理加载 cache->addSpriteFramesWithImagePack(_R("player.xml"), _R("player.png")); //使用图片直接加载 cache->addSpriteFrame(SpriteFrame::createFromPicture(_R("bg.png")), L"bg"); //}} //添加背景 m_bg = Sprite::create(cache->getSpriteFrame(L"bg"), this); auto size = GameWorld::getInstance()->getAppView()->getWinSize(); m_bg->setPosition(Vector2(size.width / 2, size.height / 2)); //添加玩家精灵 m_player = Sprite::create(cache->getSpriteFrame(L"player1-2-1"), this); m_player->setPosition(300, 200); //播放动画 std::vector<SpriteFrameSharedPtr> frames; frames.push_back(cache->getSpriteFrame(L"player1-2-1")); frames.push_back(cache->getSpriteFrame(L"player1-2-2")); frames.push_back(cache->getSpriteFrame(L"player1-2-3")); frames.push_back(cache->getSpriteFrame(L"player1-2-4")); auto animation = Animation::create(frames,0.2f,INT_MAX); AnimateSharedPtr action = Animate::create(animation); m_player->runAction(action); return; }
效果图
更多文章见:SkyGameEngine2d 游戏引擎相关文章目录汇总
完结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。