質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1411閲覧

Unity+PlayfabのCloudScriptで返答がNullとなる

YOshim

総合スコア1085

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/09/21 04:22

編集2021/09/21 06:03

Unity+Playfabにてアカウント情報の編集機能をCloudScriptで実行しようとしております。
下記のコードで返答がNullとなりどこに間違いがあるのかわからず当惑しております。
参考として下記URL先を用いております。
https://community.playfab.com/questions/41927/how-to-access-player-data-using-cloudscript.html

C#

1//クライアント側 2public void CallCloudScript(){ 3 PlayFabClientAPI.ExecuteCloudScript( 4 new ExecuteCloudScriptRequest{ 5 //FunctionName = "helloWorld", 6 FunctionName = "getPlayerDataJSONValue", 7 FunctionParameter = new { inputValue = "player"}, 8 GeneratePlayStreamEvent = true, 9 RevisionSelection = CloudScriptRevisionOption.Live, 10 SpecificRevision = null, 11 }, result => { 12 Debug.Log("CloudScript Connect."); 13 Debug.Log(result.FunctionResult); 14 }, error => { 15 Debug.Log(error.GenerateErrorReport()); 16 } 17 ); 18}
//Playfab CloudScript(サーバー)側 handlers.getPlayerDataJSONValue = function (args, context) { var getPlayerInfo = server.GetUserData ({ PlayFabId: currentPlayerId, Keys: ["TestMessage"], }); var playerInfoObject = JSON.parse(getPlayerInfo.Data.Info.Value); var playerMessage = playerInfoObject.Message; return { playerMSG: playerMessage, playerInfo: playerInfoObject}; };

Playfabのユーザーデータは下記のようになっております。

Key:TestMessage Value:{"Message":"Hello, This it playfab CloudScript Test Text.","Name":"Player"}

確認したこととして、UnityのConsoleにDebug.Log("CloudScript Connect.");に対応するログとしてCloudScript Connect.と表示されますが、Debug.Log(result.FunctionResult);に対応するログとしてNullと表示されます。
CloudScriptのサンプルとて予め用意されているhelloWorld関数を用いた場合は、"Hello playerID"のメッセージが表示されました。

直接的な原因でなくてもよいので、マズそうなところをご指摘頂ければ幸いです。

追記:
サーバー側のreturnの位置・内容を変更すると文字列が表示されるようになりました。

//Playfab CloudScript(サーバー)側 handlers.getPlayerDataJSONValue = function (args, context) { var getPlayerInfo = server.GetUserData ({ PlayFabId: currentPlayerId, Keys: ["TestMessage"], }); return getPlayerInfo;

return文の位置と結果から推測するに、下記にて問題が発生しているようです。

var playerInfoObject = JSON.parse(getPlayerInfo.Data.Info.Value);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

サーバー側のコードにミスがありました。

//誤 var playerInfoObject = JSON.parse(getPlayerInfo.Data.Info.Value); //正 var playerInfoObject = JSON.parse(getPlayerInfo.Data.TestMessage.Value);

Keysの文字列を変数とするべきところを参照元からコピーしたまま使用していました。

投稿2021/09/21 06:38

YOshim

総合スコア1085

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問