Phaser 3 ES6:如何创建Player类?

盖奇·亨迪·雅男孩

我在用es6语法弄乱了Phaser 3。在Phaser 3中,现在所有内容都由场景组成,您可以在其中加载/更新/等所有内容。因此,对于主要Game场景,我进行扩展Phaser.Scene

export default class Game extends Phaser.Scene {
  preload()
  create()
  ...

但是,假设我有一个播放器,其中涉及100行代码,我希望将它们保存在一个单独的文件中,以确保代码整洁。我该如何组织?

我发现的每个教程/信息都将场景的所有代码都包含在同一文件中,但是对于完全充实的游戏而言,这显然是不现实的。我想将游戏的许多元素分成各自的类/文件。

所以,我只创建一个播放器类,没有扩展任何内容?还是应该用类似的方式扩展它Phaser.Sprite

詹姆斯·斯肯普

我认为大多数教程将所有内容都放在一个文件中的原因是:

  • 他们面向的是初学者,他们可能是第一次体验编程,因此可能会因为使用多个源文件而感到困惑
  • Phaser中的有趣游戏绝对可以在一个源文件中创建
  • 一些游戏托管平台希望/首选单个JS文件

要回答您的特定问题“因此,我只创建一个播放器类,不扩展任何内容?还是应该使用类似的扩展Phaser.Sprite?”,这取决于。

我正在使用TypeScript工作,因此我的结构和代码有些不同,但是我有一个src目录结构,如下所示

  • 资产
  • ts
    • 预制件
    • 场景
    • 游戏

在ts / Scenes目录中,我抛出了所有延伸的场景Phaser.Scene在ts / Prefabs目录中(prefabs是我几年前从Phaser 2教程中学到的东西),我放置了所有自定义类。

看看我现在正在开发的游戏,我有一个可以扩展的对象Phaser.GameObjects.Group,三个可以扩展自该自定义对象的对象,还有两个可以扩展的对象。在过去,我也扩展了Phaser.Sprite

是否扩展范围的真正问题Phaser.Sprite取决于对象要为您执行的操作。

在我的情况,我想创建一个基本Character类,我HeroMonster实例可以扩展,当我创建它们将在游戏中打造的精灵。Group之所以选择a,是因为我使用的sprites由两部分组成,因此使用Group时,我可以Sprite在创建对象时在其上添加两个s,但是如果Sprite我只需要一个资产,则可以将其都加上

我的其他自定义对象之一只是存储有关游戏状态的信息,因此,既然游戏在存在时实际上不需要显示任何内容,那么它就不会扩展任何内容Phaser.GameObjects

因此,您的问题是,在创建新的时Player,是否要将其显示为Sprite具有其他功能/属性的?如果是前者,请扩展Sprite(或Phaser.GamesObjects您需要的其他任何内容。否则,则不需要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章