Closed sensp closed 5 years ago
issue登録、ありがとうございました。 本件は対応完了されましたので、issueをクローズさせていただきます。
//スクリプトを設定する
NCMBScript script = new NCMBScript("powerup.js", NCMBScript.MethodType.GET);
//配列場合
string[] foods = new string[] { "aaa", "bbb" };
Dictionary<string, object> query = new Dictionary<string, object>() {
{ "name", foods }
};
//実行結果
script.ExecuteAsync(null, null, query, (byte[] result, NCMBException e) =>
{
if (e != null)
{
// 失敗
UnityEngine.Debug.Log("失敗:" + e);
}
else
{
// 成功
UnityEngine.Debug.Log("成功:" + System.Text.Encoding.ASCII.GetString(result));
}
});
スクリプト
// powerup.js
module.exports = function(req, res) {
if (req.query.name ) {
res.send(req.query);
}
res.send("Hello World");
}```
■再現環境 。Unity Ver=5.3.5 。Unity NCMB Ver=2.2.0 。Sample例
1.mBaasに下記のスクリプトを事前登録する 【powerup.js】 module.exports = function(req, res){ res.send(req.query); };
2.Unityから下記を実行する 【unity】 //スクリプトを設定する NCMBScript script = new NCMBScript ("powerup.js", NCMBScript.MethodType.GET); //配列場合 string[] foods = new string[] { "aaa", "bbb" }; Dictionary<string, object> query = new Dictionary<string, object>() { { "name", foods } }; //実行結果 script.ExecuteAsync (null, null, query, (byte[] result, NCMBException e) => { if (e != null) { // 失敗 UnityEngine.Debug.Log("失敗:" + e); } else { // 成功 UnityEngine.Debug.Log("成功:" + System.Text.Encoding.ASCII.GetString(result)); } });
3.実行結果 ・成功:{"name":"System.String[]"} -> お客様の問い合わせとおりに配列値(System.String[])が見みえない状態でした。
4.設定影響 ・Unity SDKで利用できるデータ型の中、配列、Listなとの値設定に不具合が出ます。 (参考:http://mb.cloud.nifty.com/doc/current/sdkguide/unity/datastore.html)
■原因(Unity NCMB Ver=2.2.0(現在の最新)) 1.Unityからscript.ExecuteAsyncを実行 ↓ 2.NCMBScript.cs ExecuteAsync():非同期処理でスクリプトの実行を行う クエリ文字列作成の中、"pair.Value.ToString ()"でこのまま文字列に変換しております。★不具合★ ↓ 3.NCMBScript.cs Connect():通信
■改善 ・配列、Listのオブジェクトが正しくクエリに設定されるように修正する。