# Services Core SDK API

> Initialize all Unity Gaming Services with Services Core.

Services Core パッケージは、単一の呼び出しですべての Unity Gaming Services を初期化するソリューションを提供し、複数のパッケージが使用する共通コンポーネントを定義します。これらの標準化されたコンポーネントは、Unity Gaming Services のパッケージ利用時の体験全体を統一することを目的としています。

> **Note:**
>
> **ノート**: この API は、バージョン 2019.4 以降の Unity エディターでサポートされています。

## UnityServices##unityservices

```plaintext

namespace Unity.Services.Core
{
    public static class UnityServices{}
}
```

このクラスは、プロジェクトに現在インストールされているすべての Unity Gaming Services を初期化するために使用します。

### InitializeAsync##initializeasync

```plaintext
public static Task InitializeAsync(InitializationOptions options)
```

このメソッドは、プロジェクトに現在インストールされているすべての Unity Gaming Services を初期化します。このメソッドによって返される [`Task`](https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=net-5.0) を使用すると、初期化の進捗状況を監視できます。

| パラメーター    | 型                                                 | 説明                                                  |
| --------- | ------------------------------------------------- | --------------------------------------------------- |
| `options` | [`InitializationOptions`](#initializationoptions) | この任意のパラメーターは、一意の SDK 初期化仕様の指定を容易にするキー/値ストアとして機能します。 |

ノート:このメソッドはランタイム時にのみサポートされます。

### State##state

```plaintext
public static ServicesInitializationState State
```

このメソッドは、ランタイム時にゲームの現在の `ServicesInitializationState` を返します。

| **値**           | **説明**                       |
| --------------- | ---------------------------- |
| `Uninitialized` | Unity Services は初期化されていません。  |
| `Initializing`  | Unity Services は初期化中です。      |
| `Initialized`   | Unity Services が正常に初期化されました。 |

## InitializationOptions##initializationoptions

```plaintext
namespace Unity.Services.Core 
{
    public class InitializationOptions{}
}
```

初期化オプションは、一意の SDK 初期化仕様の指定を容易にするキー/値ストアとして機能します。Unity Gaming Services SDK を初期化するときに、[`InitializeAsync`](#initializeasync) メソッドを使用してこれらのオプションを渡します。

### TryGetOption##trygetoption

```plaintext
public bool TryGetOption(string key, out bool option)
public bool TryGetOption(string key, out int option)
public bool TryGetOption(string key, out float option)
public bool TryGetOption(string key, out string option)
```

これらのメソッドは、指定したキーが存在する場合は `true` を、存在しない場合は `false` を返します。

| パラメーター   | 型      | 説明                                 |
| -------- | ------ | ---------------------------------- |
| `key`    | string | 取得するオプションのキー。                      |
| `option` | 各種     | そのキーに関連付けられている保存済みのオプション (存在する場合)。 |

### SetOption##setoption

```plaintext
public InitializationOptions SetOption(string key, bool value)
public InitializationOptions SetOption(string key, int value)
public InitializationOptions SetOption(string key, float value)
public InitializationOptions SetOption(string key, string value)
```

これらのメソッドは、指定したキーの値を保存します。

| パラメーター  | 型      | 説明                                 |
| ------- | ------ | ---------------------------------- |
| `key`   | string | 保存するオプションのキー。                      |
| `value` | 各種     | そのキーに関連付けられている保存済みのオプション (存在する場合)。 |

## 初期化の例##initialization-example

以下の例では、[Environments](./service-environments.md) 初期化拡張機能を使用して、すべてのサービスを一度に初期化します。

```plaintext
using System;
using Unity.Services.Core;
using Unity.Services.Core.Environments;
using UnityEngine;
 
public class InitializeUGS : MonoBehaviour {
    
    public string environment = "production";
 
    async void Start() {
        try {
            var options = new InitializationOptions()
                .SetEnvironmentName(environment);
 
            await UnityServices.InitializeAsync(options);
        }
        catch (Exception exception) {
            // An error occurred during initialization.
        }
    }
}
```

### 初期化のデバッグ##initialization-debugging

Services Core バージョン 1.4.2 以降では、デバッグ目的で詳細モードを有効にできます。詳細モードを有効にすると、Services Core SDK はすべてのサービスで共有されている共通の設定に関する情報をエディターのコンソールに記録します。詳細モードを有効にするには、以下の手順に従います。

1. Unity エディターで、**Edit** (編集) > **Project Settings** (プロジェクト設定) > **Player** (プレイヤー) の順に選択します。
2. Player Settings (プレイヤー設定) ウィンドウで、**Other Settings** (その他の設定) をクリックします。
3. **Script Compilation** (スクリプトコンパイル) の下に、スクリプティング定義シンボル `ENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING` を追加します。
4. **Apply** (適用) をクリックします。


**Frame:**
![](/api/media?file=/services/media/images/enable-verbose.png)

## 例外タイプ##exception-types

### ServicesInitializationException##servicesinitializationexception

サービスの初期化時に発生するエラーの基本の例外タイプ。

### CircularDependencyException##circulardependencyexception

2 つの登録済みの `IInitializablePackage` インスタンスが相互に依存している場合に発生する例外。このエラーは、設計の問題を示している可能性が高いため、修正する必要があります。

### RequestFailedException##requestfailedexception

リクエスト失敗の基本の例外タイプ。各例外では、失敗理由を示す `int ErrorCode` を返します。

| **名前**               | **コード** | 説明                                                                                            |
| -------------------- | ------- | --------------------------------------------------------------------------------------------- |
| `Unknown`            | `0`     | エラーを特定できません。                                                                                  |
| `TransportError`     | `1`     | 無効な HTTP レスポンスが返される、DNS、TLS などのトランスポートエラー。                                                    |
| `Timeout`            | `2`     | 割り当てられた時間内にレスポンスを受信しなかったために、リクエストがタイムアウトになりました。                                               |
| `ServiceUnavailable` | `3`     | サービスを利用できません。これは通常、サービスが過負荷になっていることを示します。                                                     |
| `ApiMissing`         | `4`     | API が存在しません。                                                                                  |
| `RequestRejected`    | `5`     | 通常はリクエストが API エンドポイントに到達する前に、リクエストが拒否されました。詳細については、"title" (タイトル) と "details" (詳細) を参照してください。 |
| `TooManyRequests`    | `50`    | リクエストがレート制限されています。クライアントがリクエストを行う頻度が高すぎます。                                                    |
| `InvalidToken`       | `51`    | 認証トークンの形式が正しくないか無効です。                                                                         |
| `TokenExpired`       | `52`    | 認証トークンの有効期限が切れています。                                                                           |
| `Forbidden`          | `53`    | ユーザーがリクエストされた操作の実行権限を持っていません。                                                                 |
| `NotFound`           | `54`    | リクエストされたリソースが見つかりません。                                                                         |
| `InvalidRequest`     | `55`    | リクエストは理解されたものの、1 つ以上のコンポーネントが無効なため、API がその処理を拒否しました。                                          |
