【问题标题】:Data driven game with phaser 3带有 Phaser 3 的数据驱动游戏
【发布时间】:2021-08-31 16:16:06
【问题描述】:

我正在为孩子们开发一个包含课程的电子学习平台,每门课程都包含课程和一些游戏 游戏将在 Phaser 3 中进行编程 因此仪表板中的管理员将有一个表格来添加新课程(添加课程是视频以及移相器游戏的链接,因为管理员不是开发人员所以我想将我的移相器游戏转换为链接或其他东西像那样 ) 我的问题是如何设置游戏以使用来自 URL [sort of Data-driven game] 的 json 对象的数据 ps:开发这个平台我使用的是spring boot和angular

【问题讨论】:

  • “使用来自 json 对象的数据” - 什么样的数据?当前的答案是资产是否存储在 JSON 中,但问题/答案是您想要提取的数据吗?

标签: json phaser-framework


【解决方案1】:

直到您将 Phaser 游戏实例化为例如const game = Phaser.Game(myconfig),你可以做很多事情来异步加载所需的数据。所以关于获取数据的部分就这样解决了。

如何实际使用数据的问题是一个更广泛的问题。我会考虑考虑资产加载,然后一起实例化,并设置预定义的工厂函数来使用 Loader 函数将使用的相同数据。

您可以使用 Loader 插件中的 pack 方法轻松地从 json 数据加载资产,请参阅 here

然后,您需要根据数据实现在这些资产加载后对它们起作用的东西:

{
...

"sceneSprites":{
    "oneSprite":{'
        "textureKey": "myAssetLoaded",
        "x":32,
        "y":42,
        "tint": 0xff0000
        (etc)
    }
}
}

您在 json 的“pack”部分中定义的键将位于 TextureManager 中,您只需匹配对象数据中的该键。

然后,您使用一系列函数创建一个场景,这些函数迭代您拥有的数据并根据数据创建对象:

class MyScene extends Phaser.Scene {
    create(){
       for(const obj of spriteData){
           const spr=this.add.sprite(obj.x,obj.y,obj.texturKey)
           spr.setTint(obj.tint)
       }
    }
}

这只是您必须做的事情的粗略草图。通常,您可以创建一个移相器“游戏”,该移相器“游戏”在移相器提供的基础上使用足够的辅助工厂函数构建,以使用您在任何给定 json 文件中拥有的特定数据。

我相信您可以通过这种方式涵盖很多 Phaser 功能,包括补间、着色器和音频。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2017-01-14
    • 2017-01-12
    • 2020-02-10
    • 1970-01-01
    相关资源
    最近更新 更多