> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用者產生的內容 (UGC) 快速入門

> 使用服務對服務呼叫的 PlayFab UGC 快速入門，可連線至草稿內容物品、發佈這些物品，並在遊戲中公開玩家建立的內容。

# 使用者產生的內容 (UGC) 快速入門

本指南的目的是說明如何使用直接的服務對服務呼叫快速開始使用 UGC。我們會逐步示範如何連線至草稿 UGC 內容物品、發佈這些物品，然後搜尋並找到它們。

## 取得實體權杖

UGC 是設計為搭配 PlayFab 實體使用，因此第一步是使用 [LoginWithCustomID](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-custom-id) 取得實體權杖。此範例顯示服務呼叫。

```json theme={null}
{
  "CustomId": "exampleUser",
  "CreateAccount": true,
  "TitleId": "DC7B"
}
```

## 建立 Blob URL

UGC 系統使用 [Azure Blob 儲存體](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)來儲存與您遊戲的 UGC 相關聯的所有內容 (檔案和影像)。若要上傳內容，我們首先需要呼叫 [CreateUploadUrls](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-upload-urls) API，並傳入檔案名稱和大小 (以位元組為單位) 來建立新的 Blob。例如，如果您想要上傳文字檔和 PNG 影像，您會將下列內容傳入要求本文：

```json theme={null}
{
  "Files": [
    {
      "FileName": "HelloWorld.txt",
      "FileSize": 12
    },
    {
      "FileName": "PlayFabLogo.png",
      "FileSize": 20725
    }
  ]
}
```

回應會包含每項內容的 `Id` 和 `Url`：

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "UploadUrls": [
            {
                "Id": "[Content ID]",
                "Url": "[Content Url + '?' + Token]",
                "FileName": "HelloWorld.txt"
            },
            {
                "Id": "[Image ID]",
                "Url": "[Image Url + '?' + Token]",
                "FileName": "PlayFabLogo.png"
            }
        ]
    }
}
```

## 建立草稿 UGC 物品

您可以使用 `"Type":"ugc"` 參數呼叫 [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) API 來建立「草稿」UGC 物品。創作者可以在發佈之前審閱及存取草稿物品。若要建立草稿物品，您需要：

* 在 X-EntityToken 標頭中使用上一個呼叫的 `EntityToken`。
* 在物品的 `CreatorEntityKey.Id` 中使用上一個呼叫的 `Entity.Id`。
* 在物品的 sourceId 中使用遊戲的 `TitleId`。

此呼叫大致如下所示。

```json theme={null}
{
  "Item": {
   "Type": "ugc",
    "Title": {
      "NEUTRAL": "Neutral Title Test",
      "en-GB": "en-gb Title",
      "en-US": "en-us Title"
    },
    "Description": {
      "NEUTRAL": "Neutral Description Test",
      "en-GB": "en-gb Description",
      "en-US": "en-us Description"
    },
    "startDate": "2018-10-18T20:01:26.1520582Z"
  }
}
```

這會傳回已建立且具有 `Id` 的草稿物品。請儲存該 `Id` 以便稍後使用。

```json theme={null}
       "Item": {
            "SourceEntity": {
                "Id": "1184A",
                "Type": "title",
                "TypeString": "title"
            },
            "SourceEntityKey": {
                "Id": "1184A",
                "Type": "title",
                "TypeString": "title"
            },
            "Id": "44857e2b-c93b-4054-80be-7890028201ff",
            "Type": "ugc",
            "Title": {
              "NEUTRAL": "Neutral Title Test",
              "en-GB": "en-gb Title",
              "en-US": "en-us Title"
            },
          ...
        }
```

## 取得玩家的草稿物品識別碼

若要取得特定玩家的草稿物品識別碼，可以使用 [GetEntityDraftItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/get-entity-draft-items) API。遊戲實體可以在 `Entity` 參數中使用玩家識別碼呼叫此 API，而 API 會傳回該特定玩家的草稿物品清單。只有遊戲實體可以傳入 `Entity` 參數。玩家實體可以在沒有 `Entity` 參數的情況下呼叫 API，而 API 會傳回由呼叫玩家建立的草稿物品清單。

```json theme={null}
{
  "Count": 2,
  "Entity": {
    "Id": "C88F55C6A734B1DC",
    "Type": "title_player_account",
    "TypeString": "title_player_account"
  }
}
```

## 發佈 UGC 物品

物品處於草稿狀態後，您可以使用 [PublishDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/publish-draft-item) 將其推送至已發佈狀態。UGC 物品發佈之後，即可供搜尋並公開提供。您需要使用從 `CreateDraftItem` 回應傳回的物品 `Id`。

```json theme={null}
{
"Id": "44857e2b-c93b-4054-80be-7890028201ff"
}
```

## 取得 UGC 物品的發佈狀態

使用物品 `Id`，您可以透過 [GetItemPublishStatus](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/get-item-publish-status) API 取得 UGC 目錄中物品的發佈狀態。

```json theme={null}
{
"Id": "44857e2b-c93b-4054-80be-7890028201ff"
}
```

可能的發佈 `Result` 值如下：

* `Unknown`
* `Pending`
* `Succeeded`
* `Failed`
* `Canceled`

重新發佈物品會更新已發佈物品，使其與目前的草稿物品相符。

## 執行搜尋

發佈呼叫成功之後，所有玩家都可以在公用目錄中存取該物品。[`SearchItems` API](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/search-items) 會使用提供的參數對已發佈目錄 (包括 UGC 物品) 執行搜尋，並傳回一組分頁結果。`Filter`、`OrderBy` 和 `Select` 欄位使用 OData 作為查詢標準。

```json theme={null}
{
  "Search": "Test",
  "Count": 2
}
```

## 另請參閱

[發佈您的第一個使用者產生的內容](/zh-TW/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc)


## Related topics

- [PlayFab 使用者產生的內容](/zh-TW/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [審核使用者產生的內容](/zh-TW/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
- [XR-018：使用者產生的內容](/zh-TW/publishing/certification/xr/xr-018.md)
- [XR018 使用者產生的內容](/zh-TW/publishing/certification/fma/xr-018.md)
- [Game Manager 參考](/zh-TW/services/playfab/live-service-management/gamemanager/reference.md)
