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

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

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

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

Unity

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

Q&A

解決済

1回答

1336閲覧

またがるシーンのボタン有効化をスクリプトで管理したい

jo1jo2jo3

総合スコア45

C#

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

Unity

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

0グッド

0クリップ

投稿2020/07/26 16:58

1つのスクリプトで2つのセレクト画面を動かしたいです。
ゲームセレクト画面 ゲーム数が多くなり2つにわけることにしました。
1~18面あるゲームを2つの画面にわけて、順番にボタンを有効したいです。

⓵1つ目 ゲーム画面1 セレクトボタン 12個  1~12
⓶2つ目 ゲーム画面2 セレクトボタン  6個  13~18
⓵と⓶のスクリプトは1つ 貼り付けコードです。

1がクリアーできたら2のボタンが有効になるコードです。しかし、
1と13が同じ1面と認識され 2と14が同じと認識され、 本来12がクリアーしたら13に
なるようにしたいのですがうまくいきません。
共通のスクリプトを使い1から順番にボタンを有効にしたいです。

現在 苦肉の策でゲーム画面1 は 13~18ボタンをつくりフレーム外においております。
ゲーム画面2 は 1~12ボタンをつくりフレーム外に置いております。
表面上は順番にゲームができますが プログラム的に直したいと思います。
またはゲーム画面2を違うスクリプトで動かしても良いです。 1を参照するコード等・・・

コード

using

1using UnityEngine.UI; 2using System.Collections; 3 4using UnityEngine.SceneManagement; 5 6public class StageSelectManager : MonoBehaviour { 7 8 public GameObject[] stageButtons; //ステージ選択ボタン配列 9 10 // Use this for initialization 11 void Start () { 12 //どのステージまでクリアしているのかをロード(セーブ前なら「0」) 13 int clearStageNo = PlayerPrefs.GetInt ("CLEAR", 0); 14 15 //ステージボタンを有効化 16 for (int i = 0; i <= stageButtons.GetUpperBound (0); i++) { 17 bool b; 18 19 if (clearStageNo < i) { 20 b = false; //前ステージをクリアしていなければ無効 21 } else { 22 b = true; //前ステージをクリアしていれば有効 23 } 24 25 //ボタンの有効/無効を設定 26 stageButtons [i].GetComponent<Button> ().interactable = b; 27 } 28 } 29 30 // Update is called once per frame 31 void Update () { 32 33 } 34 35 //ステージ選択ボタンを押した 36 public void PushStageSelectButton (int stageNo) { 37 //ゲームシーンへ 38 //SceneManager.LoadScene ("PuzzleScene" + stageNo); 変更前 39 FadeManager.Instance.LoadScene (("PuzzleScene"+ stageNo), 1.0f); //変更 40 //PlayerPrefs.DeleteAll();//初期化 41 } 42} 43 44 45 46 47 48 49コード

イメージ説明
イメージ説明
イメージ説明
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

同じコードを2つオブジェクトに付与する形を考えます。
(これで2つのインスタンスが出来ることになります)

整数型の変数を1つ追加して、そのインスタンスが何面からのボタンを示すか指定しましょう。
public int myButtonCount;(名前は適当)

1つ目のインスタンスではmyButtonCountは「0」、stageButtonsには12個のボタン。
2つ目のインスタンスではmyButtonCountは「12」、stageButtonsには6個のボタンを
インスペクターで設定しておきます。

で、ステージボタンの有効化判定でこの数を追加します。
bool b = (clearStageNo < (i + myButtonCount));
(これでif文は不要です)
その他の部分はそのままです。

質問者さんが想定する動きと合っているかわかりませんが参考までに。

投稿2020/07/27 02:48

sakura_hana

総合スコア11427

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

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

jo1jo2jo3

2020/07/27 03:49

回答ありがとうございます。やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問