使用Unity和AWS AppSync创建HelloWorld

这是AWS & Game Advent Calendar 2020活动的第4天文章。

首先

AppSyncArchitecture.png

亚马逊云服务 AppSync

AWS AppSync 是一个 GraphQL 管理服务。虽然不详细解释 GraphQL,但在游戏开发中,可能可以享受以下主要优点。

    • 一度のリクエストでクライアントが必要とする全てのデータを過不足なく取得する(複数のデータを取得する必要がある場合でもリクエストを分ける必要がなく効率的)

 

    • GraphQLスキーマによるクライアント-サーバー間の強力な型付け

 

    データの取得・更新だけでなくGraphQLのSubscriptionsによって、WebSocketを介したデータ更新のリアルタイムでのプッシュが可能(チャット機能などの実装)

AWS AppSync是一个基于GraphQL的托管服务,它使构建GraphQL API服务器和管理基础设施变得非常简单,从而使我们更容易获得上述GraphQL的优点。
同时,由于它与其他AWS服务的集成非常容易,因此我们可以轻松地将AWS AppSync与AWS Lambda或Amazon DynamoDB等无服务器服务结合起来,从而构建一个完全无服务器的后端。

实施

AWS AppSync的配置

スクリーンショット3.png
type Query {
    text: String
}

schema {
    query: Query
}
スクリーンショット7.png
{
    "version": "2017-02-28",
    "payload": {}
}
スクリーンショット9.png

Unity的实现

创建Unity项目。

要访问AWS AppSync,需要使用GraphQL的客户端。想要安装包含GraphQL客户端的软件包,可以使用NuGet,因此首先要安装NuGetForUnity。可以从https://github.com/GlitchEnzo/NuGetForUnity/releases下载「NuGetForUnity.X.Y.Z.unitypackage」,然后将unitypackage导入到UnityProject中。

スクリーンショット11.png

在搜索结果中会显示许多与GraphQL有关的软件包,但我们这次只需安装以下对实现HelloWorld所必需的软件包。

    • GraphQL.Client

 

    GraphQL.Client.Serializer.Newtonsoft

当安装上述软件包后,您可以在“Assets”文件夹下创建一个名为HelloWorldButton的C#脚本,并将以下代码复制并粘贴进去。

using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
using GraphQL.Client.Http;
using GraphQL.Client.Abstractions;
using GraphQL.Client.Serializer.Newtonsoft;
public class HelloWorldButton : MonoBehaviour
{
    const string API_URL = "";
    const string API_KEY = "";

    class HelloWorldResponse
    {
        public string text { get; set; }
    }
    public async void OnClick()
    {
        var graphQLClient = new GraphQLHttpClient(API_URL, new NewtonsoftJsonSerializer());
        graphQLClient.HttpClient.DefaultRequestHeaders.Add("x-api-key", API_KEY);

        var query = "query MyQuery { text }";
        var graphQLResponse = await graphQLClient.SendQueryAsync<HelloWorldResponse>(query, CancellationToken.None);
        Debug.Log(graphQLResponse.Data.text);
    }
}

代码中的常量 API_URL 和 API_KEY 的值为空字符串,但您需要将它们分别复制粘贴为 AWS AppSync 配置页面上显示的「API URL」和「API KEY」。

スクリーンショット15.png

最后

这次我们仅仅在Unity和AWS AppSync上实施了HelloWorld,但是将来我们还希望总结一些使用GraphQL作为游戏后端以及集成AWS AppSync和其他服务的示例。
特别是作为AWS AppSync实现用户认证的一种方式,将Amazon Cognito整合在一起将是一个非常有用的实例,因此下次我们希望总结一下相关内容。

如果您是在游戏的后端使用过GraphQL的人,或者对GraphQL有了解的人,我们希望能听到您的意见。

(免责) 本文仅代表个人观点,与所属公司或组织无关。

请提供您需要翻译的具体内容,谢谢!

无服务器移动游戏后端和 AWS-AppSync 游戏技术之夜-2

利用 AWS AppSync 进行 Hello World
https://www.injpok.tokyo/posts/2018/08/helloappsync/

bannerAds