質問: seconds.ToString (); if (totalTime<=0f) { SceneManager.LoadScene ("GameOverScene"); } } } 相手の手の表示からカウンターを1増加までを1つの流れとしてこれを繰り返すのか、制限時間とカウンターはそのままで「相手の手」「正解」「不正解」のテキストをもと(最初)の状態に戻す方がよいのかも分かりません。 説明が長くなってしまい申し訳ありません。 どうかお力添えの程よろしくお願いします。 ここに質問の内容を詳しく書いてください。 (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 私がやるならこんな感じ、という例を挙げます。 ソースはざっくりした流れのみ記載します。 ### 全体のゲーム進行を管理するプログラム ``` public class GameManager : MonoBehaviour { private float maxTime = 60.0f; //制限時間(単位:秒) private float timer; //制限時間カウント用タイマー private int endNumber = 10; //何回勝ったら終了か private int nowNumber; //今何回勝っているか private bool isNowGame; //現在ゲーム中か //他、適宜UIを用意 void GameStart () { //ゲーム開始処理を入れる(適当な方法で呼び出す) nowNumber = 0; isNowGame = true; } void Update () { //タイマー機能を入れる //isNowGame==trueならタイマー進行。そうでないなら何もしない //制限時間を超えたらisNowGame=falseにしてGameEnd()を呼ぶ } void GameEnd () { //ゲーム終了処理を入れる } public void ScoreUp () { //ジャンケン勝利時に呼ばれる nowNumber++; //nowNumber==endNumberならisNowGame=falseにしてGameEnd()を呼ぶ } } ``` ### ジャンケンを管理するプログラム ``` public class JankenManager : MonoBehaviour { public GameManager gameManager; //インスペクターでセットしておく public GameObject[] enemyObjs; //相手の手のオブジェクト private int enemyHand; //選ばれた相手の手:0=グー、1=チョキ、2=パー public Text winloseText; //勝敗表示テキスト //とりあえずテキスト内容を変えるスタイルにしましたが、個別にGameObjectを持って切り替える形式でもOKです void PlayStart () { //ゲーム開始処理を入れる(初回は適当な方法で呼び出す):2戦目以降はボタン入力後に呼ばれる enemyHand = Random.Range (0, enemyObjs.Length); //敵の手:一度全部を非表示にしてから選んだ手を表示する foreach (GameObject obj in enemyObjs) { obj.SetActive (false); } enemyObjs[enemyHand].SetActive(true); } //ボタンが押された時に呼ぶ //グーのボタンでは0、チョキのボタンでは1、パーのボタンでは2を引数として渡す //なお、以下だとボタンを押した直後に次の勝負へ行く(テキスト表示は維持)なので希望する形に適宜変更してください public void PushButton (int playerHand) { if (playerHand == enemyHand) { winloseText.text = "あいこ"; //他、あいこの時の演出 } else ((playerHand == 2 && enemyHand == 0) || playerHand < enemyHand) { winloseText.text = "勝利"; //他、勝利時の演出 gameManager.ScoreUp(); //ポイント上昇 } else { winloseText.text = "敗北"; //他、敗北の時の演出 } PlayStart(); //次の勝負へ } } ```