

適用於 Unity 的 AWS Mobile SDK 現在已包含在 中 適用於 .NET 的 AWS SDK。本指南參考適用於 Unity 的 Mobile SDK 封存版本。如需詳細資訊，請參閱[什麼是適用於 Unity 的 AWS Mobile SDK？](what-is-unity-plugin.md)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定適用於 Unity 的 AWS Mobile SDK
<a name="setup-unity"></a>

若要開始使用適用於 Unity 的 AWS Mobile SDK，您可以設定 SDK 並開始建立新專案，也可以將 SDK 與現有專案整合。您也可以複製並執行[範例](https://github.com/awslabs/aws-sdk-unity-samples)，以了解 SDK 的運作方式。

## 先決條件
<a name="prerequisites"></a>

在使用適用於 Unity 的 AWS Mobile SDK 之前，您將需要下列項目：
+  [AWS 帳戶](https://aws.amazon.com/) 
+ Unity 4.x 或 5.x 版 （如果您想要寫入在 iOS 64 位元上執行的應用程式，則需要Unity 4.6.4p4 或 Unity 5.0.1p3)

完成先決條件後，您需要執行下列動作才能開始使用：

1. 下載適用於 Unity 的 AWS Mobile SDK。

1. 設定適用於 Unity 的 AWS Mobile SDK。

1. 使用 Amazon Cognito 取得 AWS 登入資料。

## 步驟 1：下載適用於 Unity 的 AWS Mobile SDK
<a name="step-1-download-the-aws-mobile-sdk-for-unity"></a>

首先，[下載適用於 Unity 的 AWS Mobile SDK](http://sdk-for-net.amazonwebservices.com/latest/aws-sdk-unity.zip)。開發套件中的每個套件都需要根據套件的名稱來使用對應的 AWS 服務。例如，aws-unity-sdk-dynamodb-2.1.0.0.unitypackage 套件用於呼叫 AWS DynamoDB 服務。您可以匯入所有套件，或只匯入您要使用的套件。

1. 開啟 Unity 編輯器並建立新的空白專案，使用預設設定。

1. 選取**資產** > **匯入套件** > **自訂套件**。

1. 在**匯入**套件對話方塊中，導覽至並選取您要使用的 .unitypackage 檔案。

1. 在**匯入**套件對話方塊中，確定已選取所有項目，然後按一下**匯入**。

## 步驟 2：設定適用於 Unity 的 AWS Mobile SDK
<a name="step-2-configure-the-aws-mobile-sdk-for-unity"></a>

### 建立場景
<a name="create-a-scene"></a>

使用適用於 Unity 的 AWS Mobile SDK 時，您可以在 `Start`或單一行為類別的 `Awake`方法中包含以下程式碼行，以開始使用：

```
UnityInitializer.AttachToGameObject(this.gameObject);
```

從**檔案**功能表中選擇**新場景**來建立場景。

適用於 Unity 的 AWS 開發套件包含其支援的每個 AWS 服務的用戶端類別。這些用戶端是使用名為 **awsconfig.xml** 的檔案進行設定。下一節說明 **awsconfig.xml** 檔案中最常用的設定。如需這些設定的詳細資訊，請參閱 [Unity SDK API 參考](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/Index.html)。

### 設定預設 AWS 服務區域
<a name="set-the-default-aws-service-region"></a>

若要為所有服務用戶端設定預設區域：

```
<aws region="us-west-2" />
```

這會設定 Unity SDK 中所有服務用戶端的預設區域。您可以在建立服務用戶端的執行個體時明確指定區域，以覆寫此設定，如下所示：

```
IAmazonS3 s3Client = new AmazonS3Client(<credentials>,RegionEndpoint.USEast1);
```

### 設定記錄資訊
<a name="set-logging-information"></a>

記錄設定指定如下：

```
<logging logTo="UnityLogger"
         logResponses="Always"
         logMetrics="true"
         logMetricsFormat="JSON" />
```

此設定用於在 Unity 中設定記錄。當您登入 時`UnityLogger`，框架會在內部將輸出列印到偵錯日誌。如果您想要記錄 HTTP 回應，請設定 logResponses 旗標 - 值可以是 Always、Never 或 OnError。您也可以使用 logMetrics 屬性記錄 HTTP 請求的效能指標，可以使用 LogMetricsFormat 屬性指定日誌格式，有效值為 JSON 或標準。

下列範例顯示 awsconfig.xml 檔案中最常用的設定。如需特定服務設定的詳細資訊，請參閱下列服務區段：

```
<?xml version="1.0" encoding="utf-8"?>
<aws region="us-west-2"
    <logging logTo="UnityLogger"
             logResponses="Always"
             logMetrics="true"
             logMetricsFormat="JSON" />
/>
```

### 使用 link.xml 檔案
<a name="working-with-the-link-xml-file"></a>

開發套件使用平台特定元件的反射。如果您使用的是 IL2CPP 指令碼後端， 一律`strip bytecode`會在 iOS 上啟用，因此您需要在組件根中具有具有下列項目`link.xml`的檔案：

```
<linker>
<!-- if you are using AWSConfigs.HttpClient.UnityWebRequest option-->
<assembly fullname="UnityEngine">
    <type fullname="UnityEngine.Networking.UnityWebRequest" preserve="all" />
    <type fullname="UnityEngine.Networking.UploadHandlerRaw" preserve="all" />
    <type fullname="UnityEngine.Networking.UploadHandler" preserve="all" />
    <type fullname="UnityEngine.Networking.DownloadHandler" preserve="all" />
    <type fullname="UnityEngine.Networking.DownloadHandlerBuffer" preserve="all" />
</assembly>
<assembly fullname="mscorlib">
    <namespace fullname="System.Security.Cryptography" preserve="all"/>
</assembly>
<assembly fullname="System">
    <namespace fullname="System.Security.Cryptography" preserve="all"/>
</assembly>
<assembly fullname="AWSSDK.Core" preserve="all"/>
<assembly fullname="AWSSDK.CognitoIdentity" preserve="all"/>
<assembly fullname="AWSSDK.SecurityToken" preserve="all"/>
add more services that you need here...
</linker>
```

## 步驟 3：使用 Amazon Cognito 取得身分集區 ID
<a name="step-3-obtain-the-identity-pool-id-using-amazon-cognito"></a>

若要在行動應用程式中使用 AWS 服務，您必須使用 Amazon Cognito Identity 取得身分集區 ID。使用 Amazon Cognito 取得身分集區 ID 可讓您的應用程式存取 AWS 服務，而不必在應用程式中內嵌私有憑證。這也可讓您設定許可，以控制使用者可存取的 AWS 服務。

若要開始使用 Amazon Cognito，您必須建立身分集區。身分集區是您的帳戶專屬的使用者身分資料存放區。每個身分集區都有可設定的 IAM 角色，可讓您指定應用程式使用者可以存取的 AWS 服務。一般而言，開發人員每個應用程式將使用一個身分集區。如需身分集區的詳細資訊，請參閱 [Amazon Cognito 開發人員指南](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)。

若要為您的應用程式建立身分集區：

1. 登入 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)，然後按一下**建立新身分集區**。

1. 輸入身分集區的名稱，並勾選核取方塊以啟用對未驗證身分的存取。按一下**建立集**區以建立您的身分集區。

1. 按一下**允許**以建立與身分集區相關聯的兩個預設角色：一個用於未驗證的使用者，另一個用於已驗證的使用者。這些預設角色可讓您存取 Cognito Sync 和 Mobile Analytics 的身分集區。

下一頁顯示的程式碼會建立登入資料提供者，讓您可以輕鬆地將 Cognito Identity 與 Unity 應用程式整合。您可以將登入資料提供者物件傳遞至您正在使用的 AWS 用戶端建構函式。程式碼看起來像這樣：

```
CognitoAWSCredentials credentials = new CognitoAWSCredentials (
    "IDENTITY_POOL_ID", // Identity Pool ID
    RegionEndpoint.USEast1 // Region
);
```

## 後續步驟
<a name="next-steps"></a>
+  **入門**：閱讀[適用於 Unity 的 AWS Mobile 開發套件入門](getting-started-unity.md)，以取得開發套件中包含之服務的更詳細概觀。
+  **執行示範**：檢視我們示範常見使用案例[的範例 Unity 應用程式](https://github.com/awslabs/aws-sdk-unity-samples)。若要執行範例應用程式，請依照上述方式設定適用於 Unity 的 SDK，然後遵循個別範例的 README 檔案中包含的指示。
+  **閱讀 API 參考**：檢視適用於 Unity 的 AWS Mobile SDK 的 [API 參考](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/Index.html)。
+  **提出問題**：在 [AWS Mobile SDK 論壇](https://forums.aws.amazon.com/forum.jspa?forumID=88)上張貼問題或在 [Github 上開啟問題](https://github.com/aws/aws-sdk-unity/issues)。