游戏主循环脚手架

在开头,我们知道在一个游戏应用中,游戏是在游戏主循环里面运行的。Flame插件已经提供了可以直接使用的游戏主循环脚手架,要使用这个脚手架,就要用到Flame的游戏(Game)抽象类。

创建一个名称为box-game.dart的新文件,然后开始编写BoxGame类,。

import ‘dart:ui‘;

import ‘package:flame/game.dart‘;

class BoxGame extends Game {
void render(Canvas canvas) {
// TODO: 实现渲染
}

void update(double t) {
// TODO: 实现更新
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
上面的代码中,导入dart:ui库,这样的话,等一下我们就可以使用画布(Canvas)类和大小(Size)类。然后导入package:flame/game.dart库,这个库里面包括我们现在使用的游戏(Game)抽象类,这个类有两个方法:更新(update)和渲染(render),我们直接用同名方法覆盖了它们。

在Dart 2.x版本中,@override注释和new关键字是可选的,所以在这里也不需要写。

接下来,我们在main.dart文件中创建BoxGame类的实例,并将其widget属性传递给runApp函数。同时,引用我们刚才创建的package:hello_flame/box-game.dart,让BoxGame类可以在main.dart中使用。

...
import ‘package:hello_flame/box-game.dart‘;

void main() async {
...
BoxGame game = BoxGame();
runApp(game.widget);
1
2
3
4
5
6
7
到这里为止,我们的main.dart里面应该有以下代码。

import ‘package:flutter/material.dart‘;

import ‘package:flame/util.dart‘;
import ‘package:flutter/services.dart‘;

import ‘package:hello_flame/box-game.dart‘;

void main() async {
Util flameUtil = Util();
await flameUtil.fullScreen();
await flameUtil.setOrientation(DeviceOrientation.portraitUp);

BoxGame game = BoxGame();
runApp(game.widget);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
现在我们的应用程序可以被称为游戏了,运行游戏,会显示一个空白的黑屏,因为我们还没有在屏幕上绘制具体的内容。

原文地址:https://www.cnblogs.com/ly570/p/11488499.html

时间: 2024-10-25 04:31:25

游戏主循环脚手架的相关文章

Cocos2d-x 动手实现游戏主循环

由于Cocos2d-x封装的很好,所以对于很多新手,他们只知道先new一个场景,在场景上添加布景或精灵,然后用Director的runWithScene便可以运行游戏了.如果给一个精灵加个动作,精灵就会动,如果给布景层添加个定时器,游戏会定时执行.你知道为什么会这样吗? 作为一个游戏开发者,我觉得进入游戏这一行业之前,一定要先搞清楚"游戏主循环"这个东东,可惜我到现在才来研究这个东东.或许网上关于Cocos2d-x游戏主循环的讲解一大把,但是这篇文章,我会教你怎么来实现游戏主循环. 一

我的Cocos2d-x学习笔记(九)游戏帧循环(游戏主循环)

游戏运行时候会不断按照游戏逻辑规则重新绘图,反复处理用户输入.处理定时事件.绘图,直到游戏结束. Cocos2d-x引擎也是通过不断绘图来进行游戏的,默认的帧率在AppDelegate.cpp中显示为60帧每秒,也就是每秒执行了60次用户输入.定时时间.绘图等. 抄录Cocos2d-x高级教程中内容如下: 游戏乃至图形界面的本质是不断地绘图,然而绘图并不是随意的,任何游戏都需要遵循一定的规则来呈现出来,这些规则就体现为游戏逻辑. 游戏逻辑会控制游戏内容,使其根据用户输入和时间流逝而改变.因此,游

游戏主循环知识积累

1. 引言 游戏主循环是每个游戏的心跳,输送着整个游戏需要的养分.不幸的是没有任何一篇好的文章来指导一个菜鸟游戏程序员如何为自己的程序供养.不过不用担心,因为你刚好不小心看到了这篇,也是唯一一篇给予这个话题足够重视的文章. 由于我身为游戏程序员,我见过许许多多的手机小游戏的代码.这些代码给我展示了五彩缤纷的游戏主循环实现方法.你可能要问:"这么简单的一个小玩意还能做到千奇百怪?" 事实就是这样,我就会在此文中讨论一些主流实现的优缺点,并且给你介绍在我看来最好的输送养分的解决方案. 游戏

4.帧循环(游戏主循环),schedule

 1 概述 游戏乃至图形界面的本质是不断地绘图,然而绘图并不是随意的,任何游戏都需要遵循一定的规则来呈现出来,这些规则就体现为游戏逻辑.游戏逻辑会控制游戏内容,使其根据用户输入和时间流逝而改变.因此,游戏可以抽象为不断地重复. 2 以下动作: A 处理用户输入 B 处理定时事件 C 绘图 游戏主循环就是这样的一个循环,它会反复执行以上动作,保持游戏进行下去,直到玩家退出游戏. CCDirector::mainLoop()方法,这个方法负责调动定时器,绘图,发送全局通知,并处理内存回收池.该方

cocos2d-x游戏开发之游戏主循环

首先还是就我个人的理解,讲讲游戏引擎的处理流程. 其实游戏逻辑简单化就是一个死循环,如下: 1 2 bool game_is_running = true; 3 4 while( game_is_running ) { 5 update_game(); 6 display_game(); 7 } 我们所看到的游戏画面,游戏音乐,以及一些触控,输入等.在逻辑上就是这么一个死循环.这个循环一直在跑,期间会处理一些列的事件,简化之就是上面的两个函数. cocos2d-x引擎也是如此,所有的逻辑都是在这

辛巴学院-Unity-剑英的c#提高篇(一)主循环

这是测试版 辛巴学院:正大光明的不务正业. 最近刚刚离开了我服务了三年多的公司,因为一个无数次碰到的老问题,没钱了. 之前不知道做什么好的时候,机缘巧合之下和哒嗒网络的吴总聊了一下,发现了vr game这扇窗户,这里权当帮哒嗒网络打个广告吧.^_^ 回头看看仓惶的这一段时间,荒废了很多,抽空回来再和大家聊聊c#. 之前做了个入门系列,胡乱说了些东西.感觉入门这样子也就差不多了,该稍微提高一点了. ? 从写一段程序,到写一个app,写一个游戏,到底其中有什么不同呢?一段程序的执行时间很短,一个应用

C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判定玩家是否有权限做出这种选择,然后才决定是否为玩家执行此选择.例如,<仙剑奇侠传>这款游戏,进入剧情"荷叶迷宫时",会要求玩家击碎迷宫里的5尊雕塑,如图5-12所示.但是击碎的前提是,玩家身上必须携带有"锤子".也就是说系统会遍历玩家身上所有的资源,如果有锤

Unity 3D酷跑类游戏场景循环

Unity 3D酷跑游戏场景循环 ////////////////2015/07/05///////////// ///////////////by xbw//////////////////// ///////////////环境 Unity4.6.1////// 经过一上午的学习与实验,终于实现了3D酷跑游戏的场景循环..大喜.遂分享交流,共同学习. 在场景中建两个Plane作为地面,分别命名为Plane1,Plane2: Position 分别设为0,0,50:0,0,150: Scale

网络游戏中的主循环

引言: 网络游戏作为一种复杂度较高的软件,从其设计角度还是有一些共性的,比方说几乎所有的网游都会有一个主循环.由于游戏需要根据输入.游戏内状态的改变来不间断地更新游戏画面,所以游戏的主循环往往看起来像一个"死循环",那么这个"死循环"是如何工作的? 主循环主要做什么? 1.处理游戏逻辑(输入.AI.事件处理) 2.执行渲染操作(更新游戏画面) 注:对于事件处理,可以归入游戏逻辑一类中,但是在实际中为了处理的方便,往往将事件处理独立出来.(windows环境下) 一个