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

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

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Unity

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

Q&A

解決済

1回答

869閲覧

Unity×NCMBで、ガチャ機能を実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Unity

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

0グッド

0クリップ

投稿2023/02/16 08:49

編集2023/02/16 23:58

実現したいこと

・NCMBのScript機能を使って、ソシャゲのガチャ機能を作りたいです

前提

・gachaIdとuserIdは正しい文字列で取得できています。
・ニフクラのGachaクラスには既にデータを格納してあります。
・APIキーCLIキーには、正しい文字列を入力しています。

発生している問題・エラーメッセージ

C#のgachaLogicScriptとqueryには正しい情報が格納されているのですが、ExcuteAsync()がelseを通ってしまい、自分ではもう何もわからず手詰まりな状態です。

E500001: UnityEngine.Debug:Log(Object) <>c__DisplayClass10_0:<executeGachaLogicScriptCoroutine>b__0(Byte[], NCMBException) (at Assets/Script/Test/GachaClick.cs:74) NCMB.Internal.<SendRequest>d__37:MoveNext() (at Assets/NCMB/Script/NCMBConnection.cs:461) UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

該当のソースコード

C#

1IEnumerator executeGachaLogicScriptCoroutine(string gachaId, NCMBUser currUser) 2 { 3 scriptResponse.pointDiff = 0; 4 scriptResponse.moneyDiff = 0; 5 6 NCMBScript gachaLogicScript = new NCMBScript("gacha.js", NCMBScript.MethodType.GET); 7 Dictionary<string, object> query = new Dictionary<string, object>() 8 { 9 {"gachaId", gachaId }, 10 {"userId", currUser.ObjectId } 11 }; 12 13 bool isCalculating = true; 14 gachaLogicScript.ExecuteAsync(null, null, query, (byte[] result, NCMBException e) => 15 { 16 if (e == null) 17 { 18 Debug.Log("aaaa"); 19 string resultStr = Encoding.ASCII.GetString(result); 20 scriptResponse = JsonUtility.FromJson<ScriptResponse>(resultStr); 21 } 22 else { Debug.Log(e.ErrorCode + ":" + e.ErrorMessage); } //74行目 23 isCalculating = false; 24 }); 25 yield return new WaitWhile(() => { return isCalculating; }); 26 }

gacha.js

1module.exports = function(req, res) 2{ 3 var NCMB = require('ncmb'); 4 const APL_KEY = "KEY"; 5 const CLI_KEY = "KEY"; 6 var ncmb = new NCMB(APL_KEY, CLI_KEY); 7 8 var gachaId = req.query.gachaId; 9 if(gachaId == null){ 10 res.status(400) 11 .json({"message":"BadRequest (No gachaId)"}) 12 } 13 14 var gachaClass = ncmb.DataStore("Gacha"); 15 gachaClass.equalTo("objectId", gachaId) 16 .fetchAll() 17 .then(function(results){ 18 if(results.length == 0){ 19 res.status(404) 20 .json({"message":"Not Found(confirm objectId)"}); 21 } 22 23 //ガチャ機能本体 24 var rewardNum = selectReward(results[0].probability); 25 if(rewardNum == -1){ 26 res.status(500) 27 .json({"message":"Probabilities of rewards must be defind as Array(length=2)"}); 28 } 29 30 //ガチャの結果 31 var moneyDiff = -results[0].cost; 32 var pointDiff = results[0].rewards[rewardNum]; 33 34 35 var userId = req.query.userId; 36 if(userId == null){ 37 // ユーザIDが渡されていない 38 res.status(400) 39 .json({"message":"BadRequest (No userId)"}) 40 } 41 42 }); 43}; 44 45function selectReward(Probabilities) 46{ 47 if(!(Array.isArray(Probabilities))) return -1; 48 if(Probabilities.length != 2) return -1; 49 50 const p0 = Number(Probabilities[0]); 51 const p1 = Number(Probabilities[1]); 52 53 var randNum = Math.random(); 54 if(randNum <= p0) return 0; 55 else if(randNum <= p0 + p1) return 1; 56 else return 2; 57}

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

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

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

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

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

guest

回答1

0

ベストアンサー

ニクフラのデータベース上でエラー確認しながらあれこれやってたら出来ました〜
ただの構文エラーでした

投稿2023/02/16 14:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問