我在用es6语法弄乱了Phaser 3。在Phaser 3中,现在所有内容都由场景组成,您可以在其中加载/更新/等所有内容。因此,对于主要Game
场景,我进行扩展Phaser.Scene
。
export default class Game extends Phaser.Scene {
preload()
create()
...
但是,假设我有一个播放器,其中涉及100行代码,我希望将它们保存在一个单独的文件中,以确保代码整洁。我该如何组织?
我发现的每个教程/信息都将场景的所有代码都包含在同一文件中,但是对于完全充实的游戏而言,这显然是不现实的。我想将游戏的许多元素分成各自的类/文件。
所以,我只创建一个播放器类,没有扩展任何内容?还是应该用类似的方式扩展它Phaser.Sprite
?
我认为大多数教程将所有内容都放在一个文件中的原因是:
要回答您的特定问题“因此,我只创建一个播放器类,不扩展任何内容?还是应该使用类似的扩展Phaser.Sprite
?”,这取决于。
我正在使用TypeScript工作,因此我的结构和代码有些不同,但是我有一个src目录结构,如下所示:
在ts / Scenes目录中,我抛出了所有延伸的场景Phaser.Scene
。在ts / Prefabs目录中(prefabs是我几年前从Phaser 2教程中学到的东西),我放置了所有自定义类。
看看我现在正在开发的游戏,我有一个可以扩展的对象Phaser.GameObjects.Group
,三个可以扩展自该自定义对象的对象,还有两个可以扩展的对象。在过去,我也扩展了Phaser.Sprite
。
是否扩展范围的真正问题Phaser.Sprite
取决于对象要为您执行的操作。
在我的情况,我想创建一个基本Character
类,我Hero
和Monster
实例可以扩展,当我创建它们将在游戏中打造的精灵。我Group
之所以选择a,是因为我使用的sprites由两部分组成,因此使用Group时,我可以Sprite
在创建对象时在其上添加两个s,但是如果Sprite
我只需要一个资产,则可以将其都加上。
我的其他自定义对象之一只是存储有关游戏状态的信息,因此,既然游戏在存在时实际上不需要显示任何内容,那么它就不会扩展任何内容Phaser.GameObjects
。
因此,您的问题是,在创建新的时Player
,是否要将其显示为Sprite
具有其他功能/属性的?如果是前者,请扩展Sprite
(或Phaser.GamesObjects
您需要的其他任何内容。否则,则不需要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句