npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

phaser-plugin-inspector

v2.5.0

Published

View and change Phaser 3 game properties

Downloads

93

Readme

Phaser 3 Inspector Plugin 🧐

View and change game properties, with Tweakpane.

Demos

You can also paste the Quick load snippet into any of the labs examples.

Install

The plugins add controls for the game and scene systems. If you don't need these, you can skip this step and use the helper functions only.

Browser / UMD

First Phaser 3 game shows this setup.

Include Phaser, Tweakpane, and the plugin UMD script in this order. You can download the scripts or use the CDN links.

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/phaser.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/tweakpane.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/phaser-plugin-inspector.umd.js"></script>

If this is the only plugin you're using then you can use the "default" configuration:

/* global PhaserPluginInspector */

new Phaser.Game({
  plugins: PhaserPluginInspector.DefaultPluginsConfig
});

Or you can configure the plugins individually:

/* global PhaserPluginInspector */

const { InspectorGlobalPlugin, InspectorScenePlugin } = PhaserPluginInspector;

new Phaser.Game({
  plugins: {
    global: [{ key: 'InspectorGlobalPlugin', plugin: InspectorGlobalPlugin, mapping: 'inspectorGame' }],
    scene: [{ key: 'InspectorScenePlugin', plugin: InspectorScenePlugin, mapping: 'inspectorScene' }]
  }
});

You can use any mapping, or { start: true } for no mapping. If you don't want to add any controls, you don't need any mapping.

The helper functions are on the same namespace:

/* global PhaserPluginInspector */

const { AddGameObject } = PhaserPluginInspector

Module

npm install phaser-plugin-inspector tweakpane

This package has an ES module (phaser-plugin-inspector.esm.js, marked as module) and a CommonJS-compatible UMD module(phaser-plugin-inspector.umd.js, marked as browser). You should use the ES module, but some bundlers may pick the UMD module by default. Configure your bundler to use the module field, or add an alias to the ES module file, or import the ES module file directly.

If this is the only plugin you're using then you can use the "default" configuration:

import { DefaultPluginsConfig } from 'phaser-plugin-inspector';

new Phaser.Game({
  plugins: DefaultPluginsConfig
});

Or you can configure the plugins individually:

import { InspectorGlobalPlugin, InspectorScenePlugin } from 'phaser-plugin-inspector';

new Phaser.Game({
  plugins: {
    global: [{ key: 'InspectorGlobalPlugin', plugin: InspectorGlobalPlugin, mapping: 'inspectorGame' }],
    scene: [{ key: 'InspectorScenePlugin', plugin: InspectorScenePlugin, mapping: 'inspectorScene' }]
  }
});

You can import the helper functions as well:

import { AddGameObject } from 'phaser-plugin-inspector';

Quick load

function preload() {
  this.load.scripts('inspector', [
    'https://cdn.jsdelivr.net/npm/[email protected]/dist/tweakpane.js',
    'https://cdn.jsdelivr.net/npm/[email protected]/dist/phaser-plugin-inspector.umd.js',
  ]);
  this.load.once('complete', () => {
    PhaserPluginInspector.Install(this.plugins);
  });
}

Load from console

Given a game variable:

const scene = game.scene.getScenes(true)[0];

scene.load.scripts('inspector', [
  'https://cdn.jsdelivr.net/npm/[email protected]/dist/tweakpane.js',
  'https://cdn.jsdelivr.net/npm/[email protected]/dist/phaser-plugin-inspector.umd.js',
]);
scene.load.once('complete', () => {
  PhaserPluginInspector.Install(game.plugins);
}).start();

Use

All of the “Print” buttons call console.info() or console.table().

Beware that Tweakpane inputs (checkboxes, sliders, etc.) do not update their values automatically; use the pane's Refresh button.

Tweakpane monitors are updated automatically 5 times per second. For more precise work you may want to pause a scene or its systems.

You can inspect game objects using the Display List: Inspect and Update List: Inspect buttons in each scene. The new folder is added to the end of the inspector pane. Look in the console to confirm.

To step one frame at a time, use Game → Loop → Sleep, Game → Step (repeat), Game → Loop → Wake.

Helper functions

These create a set of controls for common Phaser objects.

You can use these functions with or without the plugins.

The pane argument is the Tweakpane pane or a folder in it. The options argument is options for the folder.

Each function creates a folder and returns it.

If you've installed the plugins, then within a scene context (this)

  • this.inspectorGame.pane or this.inspectorScene.pane is the main pane
  • this.inspectorGame.folder is the “Game” folder
  • this.inspectorScene.folder is the current scene's folder

See the First Phaser 3 game demo for this setup.

If you're not using the plugins, then you should create a pane yourself:

const pane = new Tweakpane.Pane();

Some of these folders need to be disposed manually if you destroy the target object or stop the scene it belongs to. Use

folder.dispose();

AddActive(items, pane, options?) → folder

Adds a set of "active" toggles for any objects with an active property, identified by name.

AddAlpha(items, pane, options?) → folder

Adds a set of "alpha" sliders for any objects with an alpha property, identified by name.

AddAnimationState(animationState, pane, options?) → folder

Adds a folder for a sprite's animation state, e.g.,

AddAnimationState(sprite.anims, pane);

AddArcadeBody(body, pane, options?) → folder

Adds a folder for a game object's Arcade Physics body, e.g.,

AddArcadeBody(sprite.body, pane);

AddCamera(camera, pane) → folder

Adds a folder for a camera, e.g.,

AddCamera(this.cameras.main, pane);

AddChain(chain, pane, options?) → folder

Adds a folder for a tween chain.

Dispose this folder if you remove the tween chain.

AddFXComponent(component, pane, options?) → folder

Adds a folder for a game object's FX component, e.g.,

AddFXComponent(sprite.preFX, pane);

Note that Post FX controllers are always enabled.

AddFXController(controller, pane, options?) → folder

Adds a folder for a game object's FX controller, e.g.,

const barrelEffect = sprite.preFX.addBarrel();

AddFXController(barrelEffect, pane);

Note that Post FX controllers are always active.

AddGameObject(obj, pane, options?) → folder

Adds a folder for a game object (except group).

AddGroup(group, pane, options?) → folder

Adds a folder for a group.

AddInput(interactiveObject, pane, options?) → folder

Adds a folder for a game object's interactive object, e.g.,

AddInput(sprite.input, pane);

AddKey(key, pane, options?) → folder

Adds a folder for a keyboard key object.

Dispose this folder if you remove the key.

AddKeys(keys, pane, options?) → folder

Adds a folder for an object map of keyboard key objects, such as that returned by addKeys().

Dispose this folder if you remove those keys.

AddLight(light, pane, options?) → folder

Adds a folder for a light (not point light).

AddParticleEmitter(emitter, pane, options?) → folder

Adds a folder for a particle emitter.

AddScenes(scene, pane, options?) → folder

Adds a set of "visible" toggles for the scenes, e.g.,

AddScenes(this.scene.manager.getScenes(false), pane);

AddSound(sound, pane, options?) → folder

Adds a folder for a sound.

AddTimeline(timeline, pane, options?) → folder

Adds a folder for a timeline.

AddTimerEvent(timerEvent, pane, options?) → folder

Adds a folder for a timer event.

Dispose this folder if you remove the timer event.

AddTween(tween, pane, options?) → folder

Adds a folder for a tween.

AddVideo(video, pane, options?) → folder

Adds a folder for a Video game object.

AddVisible(items, pane, options?) → folder

Adds a set of "visible" toggles for any objects with an visible property, identified by name.