Flutter开发游戏初体验,喜大普奔

小微 科技Flutter开发游戏初体验,喜大普奔已关闭评论115字数 2258阅读模式
摘要今天来给大家带来一个更劲爆的知识点——Flutter开发游戏。是的,没错,Flutter也可以用来开发游戏了。有人会问不懂Unity或者Cocos2d也能用Flutter开发游戏吗...

今天来给大家带来一个更劲爆的知识点——Flutter开发游戏。是的,没错,Flutter也能够用来开发游戏了。有人会问不懂Unity或者Cocos2d也能用Flutter开发游戏吗???是的,你没看错,Flutter就是这么666。

我在pub.dev上面找到了一些有关游戏的第三方开源库,使用它们你就能够轻而易举的实现你的游戏梦(你要说开发王者光荣、吃鸡那种大型游戏的话就当我前面的话没说)。下面开始今天的干货分享。文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

添加依赖包

首先在pubspec.yaml 里面添加依赖包,如下所示:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

dependencies:
  flutter:
    sdk: flutter文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

  flame: ^0.17.2
  box2d_flame: ^0.4.4
  sensors: ^0.4.1+1

在main.dart中添加相关设置要素

接下来看看 main.dart 里面的代码,如下所示:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

1 import &39;;
2 import &39;;
3 import &39;;
4 import &39;;
5 import &39;;
6
7 void main async {
8   // 启动游戏前要先设置flame的相关属性
9   await setupFlame;
10   var game = new FlutterGame;
11   runApp;
12 }
13
14 /// 构建Flame所需要的属性设置
15 Future setupFlame async {
16   // 创立 Util对象
17   var flameUtil = Util;
18   // 设置全屏
19  await flameUtil.fullScreen;
20  // 固定为纵向位置,不允许旋转
21  await flameUtil.setOrientation;
22}

首先解释一下每一个包的作用:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

// MD组件
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

// 咱们需要Flame构建游戏
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

// setupFlame 办法中需要用到
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

// 异步支撑
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

// 具体的游戏界面
import &39;;

main函数用了一个async表示异步,由于这触及到里面的“setupFlame”函数。setupFlame函数是一个异步的,它里面主要是构建Flame所需要的属性设置,咱们在启动游戏前要先设置flame的相关属性。文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html

setupFlame 函数里面做了3件事:

● 创立 Util对象

● 设置全屏

● 固定为纵向位置,不允许旋转

游戏部份的代码

接下来看看 game.dart 里面的代码,如下所示:

1 import &39;;
2
3 import &39;;
4 import &39;;
5 import &39;;
6
7 class FlutterGame extends Game {
8   static const int WORLD_POOL_SIZE = 100;
9   static const int WORLD_POOL_CONTAINER_SIZE = 10;
10
11   World world;
12
13   final Vector2 _gravity = Vector2.zero;
14
15   FlutterGame {
16     world = new World.withPool,
19     );
20     initialize;
21   }
22
23   Future initialize async {
24     resize);
25   }
26
27   void resize {
28     super.resize;
29   }
30
31   @override
32   void render {
33   }
34
35   @override
36   void update {
37   }
38 }

解释一下上面的代码的意思:

FlutterGame类是具体游戏功能的实现,继承了Flame提供的Game类,所以可以放心斗胆的写咱们自己的功能,比如游戏循环或者调剂大小事件等。Box2D将负责咱们所有与物理相关的操作,这包含处理碰撞,加速/减速物体/质量和摹拟咱们游戏中的不同形状/材料。

World是主要物理对象。

gravity 设置向量为0 表示无重力,Vector2你可以把它看作是平面二维坐标系统内的一个点,每一个Vector2都有一个X以及一个Y值。咱们的gravity向量坐标值为手机坐标系统左上角为,上部水平向右x轴正方向,左边垂直向下位y轴正方向重力设置位表示元素从屏幕顶部掉落到底部。

Box2D 需要用到 这两个常量值,这里面定义了两个,分别是:WORLD_POOL_SIZE以及WORLD_POOL_CONTAINER_SIZE。

然后使用World.withPool创立World对象。

接下来调用initialize办法,初始化咱们所有需要的东西,包含:需要调剂大小以及不需要调剂大小的东西。然后它的返回值调用Flame的初始化的办法,一旦Flutter筹备就绪,当即调用resize办法检查显示尺寸。

接下来看看几个函数的说明:

● render:在画布上绘制元素。

● update: 目标是60fps的速度进行,这象征着在一秒内将调用该函数60次。因为其实不一直是60fps的速度,time参数会告知你自上次调用以来经由了多少时间。

开启引擎,绘制元素

如果你依照以上步骤都都设置

以上就是微观生活(93wg.com)关于“Flutter开发游戏初体验,喜大普奔”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/4916.html