質問: "抽選の精度確認\n試行回数 : " + calcCount.ToString() + "回\n"; foreach (KeyValuePair pair in targetDict) { logText += pair.Key.ToString() + " 目標 : " + pair.Value.ToString() + "%, 実際 : " + ((float)trueCountDict[pair.Key] / (float)calcCount * 100f).ToString() + "%\n"; } Debug.Log (logText); } } ``` というのを作りまして、説明とおりに"ContextMenu"のRUNで実行してログを出すことはできました。 が、しかし・・・これを実際ガチャとして動かすにはどうすればいいのかがまったく分からず、検索してもunityでガチャを作るといった初歩が参考できるサイトも無くこまっております。 先がながいと思いマスが・・・目標としているクロッシーロードのガチャのようなシステムを作る為に何からはじめればいいのか・・・教えていただけないでしょうか?
回答: まずは作りたいシステムの流れを日本語で考えましょう。 クロッシーロードはやったことが無いので想像ですが...... 1. プレイヤーがガチャボタンを押す。 2. ポイントが足りているか確認。持っていなかったらアラート画面を出して終了。 3. ポイントを消費する。 4. 10種類のガチャアイテムの中から1つを選択する。 5. 選択したアイテムをユーザーに与える。 例えばこんな流れになるとしましょう。 次に、どのような仕組みでこれを実装するか考えます。 1. uGUIでボタンを作ろう。 2. 変数で条件分岐しよう。アラート画面はuGUIで作ろう。 3. 変数を操作しよう。※ゲーム終了時に消えないように変数をどう保存する? 4. 質問文内にあるランダム生成スクリプトを利用しよう。※景品リストはどう持つ? 5. ※どんな方法で「アイテムの所持状態」を管理する? これで考えるべきことが3つ(※の部分)あると分かりました。 この※部分の最適解はゲーム毎に異なります。 ポイントの保存だけでも「PlayerPrefsでいいのか」「サーバーに保存するのか」「市販Assetを使うのか」など色々な方法があります。 これを決めるのは質問主さんです。 「どう決めていいか分からない」という場合、とりあえずどんな方法があるのか調べる&考えてください。 後はトライ&エラーです。 例:「アイテムの所持状態の管理」とはどういうことか?→ 「アイテム1を持っているかどうかのbool変数(isHasItem1)」 「アイテム2を持っているかどうかのbool変数(isHasItem2)」...など、 たくさんの変数を作って、オンオフを切り替えればいい→ でもアイテムの数だけbool変数を作るのは面倒臭い→ ではリスト(配列)で持ったらどうか→ 「unity リスト」で検索したら「List」というのが出た→ これを使ってみよう→ 並び順を考慮しないといけないので面倒臭い、アイテム名で検索したい→ 検索したら「Dictionary」というのが出た→ これを使ってみよう→(以下繰り返し)