gameplay理解
Camera视角:确定显示的视场及视角。
Game:显示的基类。静态单例模式。但是获取方式很奇怪。
Game::getInstance得到的是__gameInstance,但是__gameInstance是在Game()构造函数里=this。因此如果没有Game的实例,this就是NULL。
然而使用时,编写继承自Game的子类,如HomuraGame,并且声明HomuraGame的全局变量,这样在加载该so时子类的实例就会创建,同时Game也就会创建。而后调用时Game::getInstance就能得到Game的指针。
这也意味着同一时间只能存在一个Game的实例进行操作。
1 Game::Game() 2 : _initialized(false), _state(UNINITIALIZED), _pausedCount(0), 3 _frameLastFPS(0), _frameCount(0), _frameRate(0), _width(0), _height(0), 4 _clearDepth(1.0f), _clearStencil(0), _properties(NULL), 5 _animationController(NULL), _audioController(NULL), 6 _physicsController(NULL), _aiController(NULL), _audioListener(NULL), 7 _timeEvents(NULL), _scriptController(NULL), _scriptTarget(NULL) 8 { 9 GP_ASSERT(__gameInstance == NULL); 10 11 __gameInstance = this; 12 _timeEvents = new std::priority_queue<TimeEvent, std::vector<TimeEvent>, std::less<TimeEvent> >(); 13 } 14 15 Game::~Game() 16 { 17 SAFE_DELETE(_scriptTarget); 18 SAFE_DELETE(_scriptController); 19 20 // Do not call any virtual functions from the destructor. 21 // Finalization is done from outside this class. 22 SAFE_DELETE(_timeEvents); 23 #ifdef GP_USE_MEM_LEAK_DETECTION 24 Ref::printLeaks(); 25 printMemoryLeaks(); 26 #endif 27 28 __gameInstance = NULL; 29 } 30 31 Game* Game::getInstance() 32 { 33 GP_ASSERT(__gameInstance); 34 return __gameInstance; 35 }
1 /** 2 * Constructor. 3 */ 4 Game(); 5 6 /** 7 * Destructor. 8 */ 9 virtual ~Game(); 10 11 /** 12 * Gets the single instance of the game. 13 * 14 * @return The single instance of the game. 15 */ 16 static Game* getInstance();
1 #define DISPATCH_EVENT(dispatch, count, eventName, ...) { \ 2 for (int i = 0; i < count; i++) { \ 3 EXECUTE_FUNCTION(dispatch[i], eventName, __VA_ARGS__); \ 4 } \ 5 } 6 7 HomuraGame game; 8 9 HomuraGame::HomuraGame() : mParticleIndex(3), mGraphicsIndex(1), pFont(NULL) { 10 memset(pParticle, 0, MAX_HOMURA_SIZE * sizeof(Homura*)); 11 memset(pGraphics, 0, MAX_HOMURA_SIZE * sizeof(Homura*)); 12 memset(pPhysical, 0, MAX_HOMURA_SIZE * sizeof(Homura*)); 13 }
而后Game的子类中实现了update和render方法,openGL中每次更新都会调用Game的frame方法,而frame方法会调用update及render方法,从而对动画进行更新。
1 class HomuraGame : public Game { 2 public: 3 HomuraGame(); 4 5 /** 6 * @see Game::initialize 7 */ 8 void initialize(); 9 10 /** 11 * @see Game::finalize 12 */ 13 void finalize(); 14 15 /** 16 * @see Game::update 17 */ 18 void update(float elapsedTime); 19 20 /** 21 * @see Game::render 22 */ 23 void render(float elapsedTime); 24 25 void resizeEvent(unsigned int width, unsigned int height); 26 27 void keyEvent(Keyboard::KeyEvent evt, int key); 28 29 void touchEvent(Touch::TouchEvent evt, int x, int y, unsigned int contactIndex); 30 31 bool mouseEvent(Mouse::MouseEvent evt, int x, int y, int wheelDelta); 32 33 static HomuraGame* getInstance();
gameplay理解相关推荐
- What is Gameplay
Gameplay is the specific way in which players interact with a game.游戏玩法(Gameplay)是指玩家玩游戏的过程,它强调这个过程之 ...
- UE4入门学习3:GamePlay框架
- - 文章 UE4入门学习3:GamePlay框架 作者 游蓝海( http://blog.csdn.net/you_lan_hai ) UE4为游戏开发提供了一套基础的框架,在这套框架的基础上,我 ...
- 《InsideUE4》GamePlay 架构(二)Level 和 World
我发现了新大陆! 引言 上文谈到Actor和Component的关系,UE利用Actor的概念组成一片游戏对象森林,并利用Component组装扩展Actor的能力,让世界里拥有了形形色色的Actor ...
- UE4:浅谈什么是GamePlay框架
世界大纲那里的gamemode下面的选项就可以看成是一个gameplay框架的具体体现 首先是GameMod,它是指游戏模式,一个游戏可能有多个模式,比如一个关卡是一个模式,一个游戏大厅来说又是一个模 ...
- 【UE4】GamePlay框架简介(蓝图)
文章目录 GamePlay框架简介 定义 设计者的规则 Game Mode Game State Default Pawn Player Controller Player State HUD Gam ...
- 虚幻基础之Gameplay游戏框架之Level和World
游戏中的虚拟世界是如何组织的呢? 这里,在玩家中流行使用一个词--关卡.玩家们进入关卡,探索关卡内的迷宫,击败关底boss,然后进入下一个关卡,周而复始. 在Unity3D里,这个关卡被称为是Scen ...
- 谈谈Gameplay,以及UE4的Gameplay框架
文章目录 前言 什么是Gameplay Character Camera Control 游戏脚本 介绍脚本语言 脚本系统 UE4 Gameplay框架 介绍重要框架类 Actor类 Componen ...
- UE5 Gameplay 框架拆解
应前辈要求,开始看UE5中关于Gameplay中两个新的特性--Game Feature和Modular Gameplay. 然而我现在连Fortnite的Gameplay Ability系统还没有摸 ...
- 《InsideUE4》GamePlay架构学习_Level和World
<InsideUE4>GamePlay架构学习 Level和World 前话 Unity To UE 思考 为什么AWorldSettings[0]的位置,而ALevelScriptAct ...
最新文章
- windows7关闭计算机对话框,电脑弹出对话框很烦人怎么办?win7禁止对话框弹出的方法...
- PMCAFF专访:搜狗effevo,这一次我们想连接“人”
- 学习Java需要用到什么软件?
- 计算string长度 java_夯实基础:掌握从Java 9+开始的String的空间优化
- java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。
- python可变参数和关键字参数位置_python 参数笔记 -- 位置参数 关键字参数 命名参数 形式参数 默认参数 可变参数 可选参数 位置顺序...
- android digest 认证,探究 Android 签名机制和原理
- 【Java】基于栈的括号匹配问题
- 在 SQLite3 中使用回调函数
- 在python中创建列表的最佳和/或最快方法
- python oct_Python oct()
- 网站开发中很实用的 HTML5 jQuery 插件
- SSD容量也不宜小,最好1T往上
- Android设备读写NFC标签
- 【触动精灵将图片转成base64字符串后通过post方式上传给服务器】
- 深入理解MPU(内存保护单元)
- 1.3 可移植性和标准
- 201809-2买菜
- 不一样的蓝牙连接方式——C#程序实现蓝牙通信
- 夜神模拟器+Fiddler抓包测试App