跳转至

GameConfig游戏配置

【说明】

这是根据Phaser3 API文档整理的。或略作说明,或增加代码示例,或用翻译软件翻译了大段文字(标记为引用格式,已经通读、调整,无碍阅读),或暂时保留文字备览。可做便览之用。

后附网上收集的用例。

Phaser.Game配置文件详例#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import 'phaser';
import {Boot} from "./game";
import {Index} from "./game";

export const config = {
    type: Phaser.AUTO, //picks WEBGL if available, otherwise CANVAS
    // type: Phaser.CANVAS,
    // type: Phaser.HEADLESS,
    // type: Phaser.WEBGL, 
    backgroundColor: "#cccccc",
    // transparent: false, //背景透明
    width: 800,
    height: 600,
    // zoom: 1,
    // parent: 'yourgamediv',
    // canvas : null, //HTMLCanvasElement
    // canvasStyle: null,
    // customEnvironment: false,
    // context: CanvasRenderingContext2D,
    scale: { // 缩放配置对象
        // width: 1024,
        // height: 768,
        // zoom: Phaser.Scale.Zoom.MAX_ZOOM,
        // zoom: Phaser.Scale.Zoom.NO_ZOOM,
        // zoom: Phaser.Scale.Zoom.ZOOM_2X,
        // zoom: Phaser.Scale.Zoom.ZOOM_4X,
        // parent: 'yourgamediv',
        // expandParent: true,
        mode: Phaser.Scale.ScaleModes.FIT, // 单向撑满,另一向可能留空
        // mode: Phaser.Scale.ScaleModes.ENVELOP, // 双向遮满,其中一向可能超出
        // mode: Phaser.Scale.ScaleModes.WIDTH_CONTROLS_HEIGHT, // 适配宽度
        // mode: Phaser.Scale.ScaleModes.HEIGHT_CONTROLS_WIDTH, // 适配高度
        // mode: Phaser.Scale.ScaleModes.RESIZE, //重设尺寸以适配父元素,调整长宽比
        // mode: Phaser.Scale.ScaleModes.NONE,
        min: {
            width: 800,
            height: 600
        },
        // max: {width: 800,height: 600},
        // autoRound:false,
        autoCenter:Phaser.Scale.Center.CENTER_BOTH,
        // autoCenter:Phaser.Scale.Center.CENTER_HORIZONTALLY,
        // autoCenter:Phaser.Scale.Center.CENTER_VERTICALLY,
        // autoCenter:Phaser.Scale.Center.NO_CENTER,
        // resizeInterval: 500,
        // fullscreenTarget: , // HTMLElement | string
    },
    scene: [
        Boot ,  //第一个场景默认启动
        Index,  //不启动,除非场景配置了{ active: true }
    ],
    // seed: Array.<string>, //随机生成器种子
    // banner: true, // 控制台显示横幅
    title: "FreeLiteracy", // 控制台用横幅上的游戏的名字
    version: '0.1.0', // 控制台用横幅上的游戏的版本号
    url: "https://www.xiiiGame.com", // 控制横幅下的游戏的链接
    // autoFocus: true, //启动后自动获得输入焦点
    input: {
        keyboard: true,
        mouse: true,
        touch: true,
        // gamepad: false,
        activePointers: 1,
        smoothFactor: 0,
        windowEvents: true, // 使得可以接收'POINTER_UP_OUTSIDE'等游戏外窗口事件
    },
    physics: { //物理系统配置
        default:"arcade", //'arcade', 'impact', and 'matter'
        // arcade:,
        // matter:,
    },
    // disableContextMenu: false, //关闭浏览器上下文菜单(如鼠标右键菜单) 
    // dom:Phaser.Types.Core.DOMContainerConfig, //文档对象配置
    // fps: Phaser.Types.Core.FPSConfig, // 循环配置
    // render: Phaser.Types.Core.RenderConfig, // 渲染配置
    // pipeline: Phaser.Types.Core.PipelineConfig, //WebGL流水线配置,可作为RenderConfig的一部分 
    // audio: Phaser.Types.Core.AudioConfig, //声音配置
    // callbacks: Phaser.Types.Core.CallbacksConfig, // 配置游戏启动前后的调用
    // loader: Phaser.Types.Core.LoaderConfig, //加载器配置
    // images: Phaser.Types.Core.ImagesConfig, //配置base64编码的图像,用作默认图、确实图和白图
    // plugins: {}, // 要安装的插件
};

移动设备全屏适配最佳实践#

本节引自here by yannick

如果游戏只用于移动设备(游戏期间不会调整画布尺寸1),如下策略是最简单的。它会根据设备宽高比适配。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
window.addEventListener('load', () => {
  // 设置1秒延时以防闪屏问题
  window.setTimeout(() => {
    // 固定高度为720
    const DEFAULT_HEIGHT = 720
    // 根据设备宽高比调整宽度
    const DEFAULT_WIDTH = (window.innerWidth / window.innerHeight) * DEFAULT_HEIGHT

    const config = {
      //...
      scale: {
        mode: Phaser.Scale.FIT,
        autoCenter: Phaser.Scale.CENTER_BOTH,
        width: DEFAULT_WIDTH,
        height: DEFAULT_HEIGHT
      },
      //...
    }
    new Phaser.Game(config)
  }, 1000)
})

  1. 如果涉及全屏问题,可结合Scene.scale.isFullscreenScene.scale.orientation等实时调整。 

评论