SlideShare a Scribd company logo
1 of 31
Azure PlayFab
Unity SDK vs C# SDK
2020/07/26 PlayFab Meetup #4
南 @y_minami
自己紹介
名前 : 南 @_y_minami
所属 : miraibox.inc
仕事 : Game Programmer(Unity + .NET + GCP)
好き : C# .NET Unity Azure PlayFab 紅茶
一緒に働いてくれる C#er を大募集中です!
今日お伝えしたいこと
今日お伝えしたいこと
Unity + PlayFab の開発で使用できる SDK は 2 種類あります。
- 古い Unity やWebGL でも動作する Unity SDK
- API 呼び出しが async/await スタイルで使いやすい C# SDK
実は Unity SDK 一択ではありません。
お好みにあわせてご利用ください。
アジェンダ
- PlayFab には多数の SDK が存在する話
- Unity で使用できる PlayFab SDK の話
- PlayFab C# SDK の導入方法と使用例の紹介
PlayFab には多数の SDK が存在する話
PlayFab には多数の SDK が存在する話
サポートされている言語
C# C++ Java Objective-C Python PHP Lua JavaScript ActionScript
カバーしている範囲が広い!
PlayFab には多数の SDK が存在する話
しかも 1 言語につき 1 SDK ではない
たとえばC++
- Unreal Marketplace Plugin(Unreal Engine 用プラグイン)
- Cocos2d-x SDK(Cocos2d-x 用 SDK)
- XPlat Cpp SDK(汎用的なC++ SDK)
※GSDK や Party SDK のような追加機能用 SDK はここでは省略
たとえば JavaScript
- JavaScript SDK(フロントエンド用 SDK)
- NodeJS SDK(バックエンド用 SDK)
Unity で使用できる PlayFab SDK の話
Unity で使用できる PlayFab SDK の話
使える SDK は 2 種類。
- Unity SDK(Unity 用 SDK)
- C# SDK(汎用的な C# SDK)
Unity で使用できる PlayFab SDK の話
使える SDK は 2 種類。
- Unity SDK(Unity 用 SDK)
- C# SDK(汎用的な C# SDK)
Unity では Unity SDK を使いましょう。
Not Unity なアプリケーションや、サーバーサイドの API や
Azure Functions では C# SDK を使いましょう。
Unity で使用できる PlayFab SDK の話
使える SDK は 2 種類。
- Unity SDK(Unity 用 SDK)
- C# SDK(汎用的な C# SDK)
Unity では Unity SDK を使いましょう。
Not Unity なアプリケーションや、サーバーサイドの API や
Azure Functions では C# SDK を使いましょう。
というのが基本ですが、
今日はここに一石を投じてみたいと思います。
PlayFab Unity SDK の特徴
PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
かなり古い Unity でも OK!
プラットフォームも PC でも iOS/Android でもWebGL でも OK!
PlayFab Unity SDK の特徴
PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
かなり古い Unity でも OK!
プラットフォームも PC でも iOS/Android でもWebGL でも OK!
めでたしめでたし!
とはいかず、その代償がある。
代償 = コールバックスタイルのコード
たとえばログインのコード。
public void Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx“ };
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
}
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("ログイン成功したときの処理をここに書く");
}
private void OnLoginFailure(PlayFabError error)
{
Debug.LogWarning(“ログイン失敗したときの処理をここに書く");
}
代償 = コールバックスタイルのコード
たとえばログインのコード。
public void Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx“ };
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
}
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("ログイン成功したときの処理をここに書く");
}
private void OnLoginFailure(PlayFabError error)
{
Debug.LogWarning(“ログイン失敗したときの処理をここに書く");
}
代償 = コールバックスタイルのコード
たとえばログインのコード。
public void Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx“ };
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
}
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("ログイン成功したときの処理をここに書く");
}
private void OnLoginFailure(PlayFabError error)
{
Debug.LogWarning(“ログイン失敗したときの処理をここに書く");
}
いわゆるコールバック地獄に陥りやすい…
コールバックスタイルを投げ捨てたい
C# の非同期処理といえば async/await 。
async/await を使えばコールバックスタイルは投げ捨てられる。
コールバックスタイルを投げ捨てたい
C# の非同期処理といえば async/await 。
async/await を使えばコールバックスタイルは投げ捨てられる。
たとえば先ほどのログインのコードを async/await スタイルに。
async Task Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx" };
var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
var message = response.Error is null
? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}"
: $"ログイン失敗... {response.Error.ErrorMessage}";
Debug.Log(message);
}
コールバックスタイルを投げ捨てたい
C# の非同期処理といえば async/await 。
async/await を使えばコールバックスタイルは投げ捨てられる。
たとえば先ほどのログインのコードを async/await スタイルに。
async Task Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx" };
var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
var message = response.Error is null
? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}"
: $"ログイン失敗... {response.Error.ErrorMessage}";
Debug.Log(message);
} すっきり書けて素敵!
なぜ Unity SDK はコールバックスタイル?
> PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
Unity 5 系は C# 4.0 しか使えない。
async/await は C# 5.0 で導入された機能。
だから非同期処理をコールバックで処理する必要があった。
なぜ Unity SDK はコールバックスタイル?
> PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
Unity 5 系は C# 4.0 しか使えない。
async/await は C# 5.0 で導入された機能。
だから非同期処理をコールバックで処理する必要があった。
最近の Unity は C# 7.3 まで使える。
だからきっと C# SDK を使っても大丈夫。
※WebGL 以外のプラットフォームならば
PlayFab C# SDK の
導入方法と使用例の紹介
PlayFab C# SDK の導入方法(Unity の場合)
Docs か GitHub からダウンロード。
https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/c-sharp/
https://github.com/PlayFab/CSharpSDK
ダウンロードした zip を展開して、
PlayFabSDK の source 一式を
適当な Scripts フォルダにまるごと配置。
PlayFab C# SDK の導入方法(Server の場合)
サーバープログラムやAzure Functions で使う場合は NuGet から
PlayFabAllSDK をインストール。
PlayFab C# SDK の使用例(Unity の場合)
使い方は Unity SDK と殆ど変わらない。
- async/await を付ける
- SDK のメソッド名は xxxAsync になる
- API のエラーを判定するときは response.Error をチェック
async Task Start()
{
var request = new LoginWithCustomIDRequest { CustomId = "xxx" };
var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
var message = response.Error is null
? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}"
: $"ログイン失敗... {response.Error.ErrorMessage}";
Debug.Log(message);
}
PlayFab C# SDK の使用例(Unity の場合)
UniTask と組み合わせると他の処理との並列処理もすっきり!
async UniTaskVoid Start()
{
var request = new LoginWithCustomIDRequest { CustomId = "xxx" };
var (response, nanikaOmoiSyoriResult) = await (
PlayFabClientAPI.LoginWithCustomIDAsync(request).AsUniTask(),
NanikaOmoiSyoriAsync());
// 以下略
}
async UniTask<string> NanikaOmoiSyoriAsync()
{
// 何か重い処理
return "何か重い処理の結果";
}
PlayFab C# SDK の注意点
WebGL では動きません…😢
理由は C# SDK が HttpClient に依存していてこれが動かないから。
なお Unity で HttpClient を使うと Android 実機で動かないという話も
よく目にしましたが、それは1年ほど前に改善されています。
※当時 Unity 2019.1.13 + iOS 実機 + Android 実機で検証済み
まとめ
まとめ
Unity + PlayFab の開発で使用できる SDK は 2 種類あります。
- 古い Unity やWebGL でも動作する Unity SDK
- API 呼び出しが async/await スタイルで使いやすい C# SDK
実は Unity SDK 一択ではありません。
お好みにあわせてご利用ください。
※ただしターゲットが WebGL の場合は Unity SDK 一択です。
ご清聴ありがとうございました

More Related Content

What's hot

コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話torisoup
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx torisoup
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステムSEGADevTech
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーションUnityTechnologiesJapan002
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Daisuke Masubuchi
 
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現Unity Technologies Japan K.K.
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lttorisoup
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例UnityTechnologiesJapan002
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムAndroid向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムKLab Inc. / Tech
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~UnityTechnologiesJapan002
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法モノビット エンジン
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 

What's hot (20)

コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
 
【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現【Unity道場】VectorGraphicsで作る エモい表現
【Unity道場】VectorGraphicsで作る エモい表現
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムAndroid向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 

Similar to Azure PlayFab Unity SDK vs C# SDK

Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!Kazuaki Ueda
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座ecolight
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Masayuki Abe
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートAkira Inoue
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiTadahiro Ishisaka
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返るYuta Matsumura
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...佑介 九岡
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsYutoNishine
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書くYusuke Kita
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティyaegashi
 
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!史識 川原
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!Minoru Naito
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法Yasuyuki Kamata
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにinvogue
 

Similar to Azure PlayFab Unity SDK vs C# SDK (20)

Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure Functions
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書く
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
 
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
 

More from YutoNishine

入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介YutoNishine
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!YutoNishine
 
C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携YutoNishine
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!YutoNishine
 
5分で入門するAzure PlayFab
5分で入門するAzure PlayFab5分で入門するAzure PlayFab
5分で入門するAzure PlayFabYutoNishine
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたYutoNishine
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)YutoNishine
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことYutoNishine
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいYutoNishine
 

More from YutoNishine (9)

入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!
 
C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!
 
5分で入門するAzure PlayFab
5分で入門するAzure PlayFab5分で入門するAzure PlayFab
5分で入門するAzure PlayFab
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
 

Recently uploaded

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

Azure PlayFab Unity SDK vs C# SDK

  • 1. Azure PlayFab Unity SDK vs C# SDK 2020/07/26 PlayFab Meetup #4 南 @y_minami
  • 2. 自己紹介 名前 : 南 @_y_minami 所属 : miraibox.inc 仕事 : Game Programmer(Unity + .NET + GCP) 好き : C# .NET Unity Azure PlayFab 紅茶 一緒に働いてくれる C#er を大募集中です!
  • 4. 今日お伝えしたいこと Unity + PlayFab の開発で使用できる SDK は 2 種類あります。 - 古い Unity やWebGL でも動作する Unity SDK - API 呼び出しが async/await スタイルで使いやすい C# SDK 実は Unity SDK 一択ではありません。 お好みにあわせてご利用ください。
  • 5. アジェンダ - PlayFab には多数の SDK が存在する話 - Unity で使用できる PlayFab SDK の話 - PlayFab C# SDK の導入方法と使用例の紹介
  • 6. PlayFab には多数の SDK が存在する話
  • 7. PlayFab には多数の SDK が存在する話 サポートされている言語 C# C++ Java Objective-C Python PHP Lua JavaScript ActionScript カバーしている範囲が広い!
  • 8. PlayFab には多数の SDK が存在する話 しかも 1 言語につき 1 SDK ではない たとえばC++ - Unreal Marketplace Plugin(Unreal Engine 用プラグイン) - Cocos2d-x SDK(Cocos2d-x 用 SDK) - XPlat Cpp SDK(汎用的なC++ SDK) ※GSDK や Party SDK のような追加機能用 SDK はここでは省略 たとえば JavaScript - JavaScript SDK(フロントエンド用 SDK) - NodeJS SDK(バックエンド用 SDK)
  • 10. Unity で使用できる PlayFab SDK の話 使える SDK は 2 種類。 - Unity SDK(Unity 用 SDK) - C# SDK(汎用的な C# SDK)
  • 11. Unity で使用できる PlayFab SDK の話 使える SDK は 2 種類。 - Unity SDK(Unity 用 SDK) - C# SDK(汎用的な C# SDK) Unity では Unity SDK を使いましょう。 Not Unity なアプリケーションや、サーバーサイドの API や Azure Functions では C# SDK を使いましょう。
  • 12. Unity で使用できる PlayFab SDK の話 使える SDK は 2 種類。 - Unity SDK(Unity 用 SDK) - C# SDK(汎用的な C# SDK) Unity では Unity SDK を使いましょう。 Not Unity なアプリケーションや、サーバーサイドの API や Azure Functions では C# SDK を使いましょう。 というのが基本ですが、 今日はここに一石を投じてみたいと思います。
  • 13. PlayFab Unity SDK の特徴 PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 かなり古い Unity でも OK! プラットフォームも PC でも iOS/Android でもWebGL でも OK!
  • 14. PlayFab Unity SDK の特徴 PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 かなり古い Unity でも OK! プラットフォームも PC でも iOS/Android でもWebGL でも OK! めでたしめでたし! とはいかず、その代償がある。
  • 15. 代償 = コールバックスタイルのコード たとえばログインのコード。 public void Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx“ }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("ログイン成功したときの処理をここに書く"); } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning(“ログイン失敗したときの処理をここに書く"); }
  • 16. 代償 = コールバックスタイルのコード たとえばログインのコード。 public void Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx“ }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("ログイン成功したときの処理をここに書く"); } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning(“ログイン失敗したときの処理をここに書く"); }
  • 17. 代償 = コールバックスタイルのコード たとえばログインのコード。 public void Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx“ }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("ログイン成功したときの処理をここに書く"); } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning(“ログイン失敗したときの処理をここに書く"); } いわゆるコールバック地獄に陥りやすい…
  • 18. コールバックスタイルを投げ捨てたい C# の非同期処理といえば async/await 。 async/await を使えばコールバックスタイルは投げ捨てられる。
  • 19. コールバックスタイルを投げ捨てたい C# の非同期処理といえば async/await 。 async/await を使えばコールバックスタイルは投げ捨てられる。 たとえば先ほどのログインのコードを async/await スタイルに。 async Task Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx" }; var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request); var message = response.Error is null ? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}" : $"ログイン失敗... {response.Error.ErrorMessage}"; Debug.Log(message); }
  • 20. コールバックスタイルを投げ捨てたい C# の非同期処理といえば async/await 。 async/await を使えばコールバックスタイルは投げ捨てられる。 たとえば先ほどのログインのコードを async/await スタイルに。 async Task Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx" }; var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request); var message = response.Error is null ? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}" : $"ログイン失敗... {response.Error.ErrorMessage}"; Debug.Log(message); } すっきり書けて素敵!
  • 21. なぜ Unity SDK はコールバックスタイル? > PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 Unity 5 系は C# 4.0 しか使えない。 async/await は C# 5.0 で導入された機能。 だから非同期処理をコールバックで処理する必要があった。
  • 22. なぜ Unity SDK はコールバックスタイル? > PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 Unity 5 系は C# 4.0 しか使えない。 async/await は C# 5.0 で導入された機能。 だから非同期処理をコールバックで処理する必要があった。 最近の Unity は C# 7.3 まで使える。 だからきっと C# SDK を使っても大丈夫。 ※WebGL 以外のプラットフォームならば
  • 23. PlayFab C# SDK の 導入方法と使用例の紹介
  • 24. PlayFab C# SDK の導入方法(Unity の場合) Docs か GitHub からダウンロード。 https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/c-sharp/ https://github.com/PlayFab/CSharpSDK ダウンロードした zip を展開して、 PlayFabSDK の source 一式を 適当な Scripts フォルダにまるごと配置。
  • 25. PlayFab C# SDK の導入方法(Server の場合) サーバープログラムやAzure Functions で使う場合は NuGet から PlayFabAllSDK をインストール。
  • 26. PlayFab C# SDK の使用例(Unity の場合) 使い方は Unity SDK と殆ど変わらない。 - async/await を付ける - SDK のメソッド名は xxxAsync になる - API のエラーを判定するときは response.Error をチェック async Task Start() { var request = new LoginWithCustomIDRequest { CustomId = "xxx" }; var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request); var message = response.Error is null ? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}" : $"ログイン失敗... {response.Error.ErrorMessage}"; Debug.Log(message); }
  • 27. PlayFab C# SDK の使用例(Unity の場合) UniTask と組み合わせると他の処理との並列処理もすっきり! async UniTaskVoid Start() { var request = new LoginWithCustomIDRequest { CustomId = "xxx" }; var (response, nanikaOmoiSyoriResult) = await ( PlayFabClientAPI.LoginWithCustomIDAsync(request).AsUniTask(), NanikaOmoiSyoriAsync()); // 以下略 } async UniTask<string> NanikaOmoiSyoriAsync() { // 何か重い処理 return "何か重い処理の結果"; }
  • 28. PlayFab C# SDK の注意点 WebGL では動きません…😢 理由は C# SDK が HttpClient に依存していてこれが動かないから。 なお Unity で HttpClient を使うと Android 実機で動かないという話も よく目にしましたが、それは1年ほど前に改善されています。 ※当時 Unity 2019.1.13 + iOS 実機 + Android 実機で検証済み
  • 30. まとめ Unity + PlayFab の開発で使用できる SDK は 2 種類あります。 - 古い Unity やWebGL でも動作する Unity SDK - API 呼び出しが async/await スタイルで使いやすい C# SDK 実は Unity SDK 一択ではありません。 お好みにあわせてご利用ください。 ※ただしターゲットが WebGL の場合は Unity SDK 一択です。