,
游戏 Game
Game 是游戏对象,通过 Game 实例上的方法,控制游戏暂停、继续。通过将 System 添加到 Game 上让游戏能够支持不同的能力,这些能力都是通过组件添加到 GameObject 上展现出来的。
创建游戏
<style>#canvas {width: 100%;height: auto;}</style><canvas id=“canvas”></canvas>
import { Game } from ‘@eva/eva.js’import { RendererSystem } from ‘@eva/plugin-renderer’// 创建渲染系统const rendererSystem = new RendererSystem({canvas: document.querySelector(‘#canvas’), // 可选,自动生成canvas 挂在game.canvas上width: 750, // 必填height: 1000, // 必填transparent: false, // 可选resolution: window.devicePixelRatio / 2, // 可选, 如果是2倍图设计 可以除以 2enableScroll: true, // 允许页面滚动renderType: 0 // 0:自动判断,1: WebGL,2:Canvas,建议android6.1 ios9 以下使用Canvas,需业务判断。})// 初始化游戏const game = new Game({frameRate: 60, // 可选autoStart: true, // 可选systems: [rendererSystem]})
添加系统
有两种方式添加系统,一种是在 Game 实例化的时候,传入构造函数的 systems 参数中,比如 rendererSystem 渲染能力是必备的,可以通过这种方式添加。另外一种是在创建游戏后调用游戏实例上面的 addSystem 方法添加。Eva.js 提供了很多系统,这些系统都是作为插件单独在一个 package 中,比如,如果我们想检测帧率,可以使用 @eva/plugin-stats 插件。
import { StatsSystem } from ‘@eva/plugin-stats’const statsSystem = new StatsSystem({show: true, // 这里设置是否显示 fps 面板style: {x: 0, // 这里的数值全部都是屏幕宽度的百分比 单位vwy: 50,width: 20,height: 12}})game.addSystem(statsSystem)
获取系统
import { StatsSystem } from ‘@eva/plugin-stats’const stats = game.getSystem(StatsSystem) // 通过类获取系统// orconst stats = game.getSystem(‘StatsSystem’) // 通过系统名获取系统
开始游戏
game.start()
暂停游戏
建议在应用退出到后台时暂停游戏,返回后开始
game.pause()
多场景管理
切换场景
import { Scene } from ‘@eva/eva.js’const scene = new Scene(‘bg’)game.loadScene({scene,mode: LOAD_SCENE_MODE.SINGLE})
渲染到多个 canvas
在项目中,游戏默认会渲染到一个默认 canvas 上,当我们会有渲染到多个 canvas 上的需求,可以将该场景渲染到另一个 canvas 上。
import { Scene, LOAD_SCENE_MODE } from ‘@eva/eva.js’const scene = new Scene(‘bg’)game.loadScene({scene,mode: LOAD_SCENE_MODE.MULTI_CANVAS,params: {// 这里和RendererSystem 参数相同canvas: document.querySelector(‘#canvas’), //可选,自动生成canvas 挂在game.canvas上width: 750, //必填height: 1000, // 必填transparent: false, // 可选resolution: window.devicePixelRatio / 2, // 可选, 如果是2倍图设计 可以除以 2enableScroll: true, // 允许页面滚动renderType: 0// 0:自动判断,1: WebGL,2:Canvas,建议android6.1 ios9 以下使用Canvas,需业务判断。}})
Ticker
增加每帧执行的方
建议在Component中的update方法实增加每帧执行的方法,也可以使用add 方法,该方法将会在所有System的lateUpdate执行后执行
game.ticker.add((e: UpdateParams)=>{})
修改游戏播放速度
,
game.ticker.setPlaybackRate(1.5) // 1.5倍速播放
