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

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

ただいまの
回答率

90.47%

  • Unity

    5653questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    1301questions

unity 別シーンからゲームシーンに戻った時

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 317

yukidama

score 3

落ちてくるオブジェクトをキャッチするゲームを作っています。
10点になったらクリア表示とボタンが表示され落ちてくるオブジェクトも止まります。
ハイスコアもあり、こちらは得点に応じてシーンの移行をしています。
ボタンを押すと、シーン2になりそこからまたゲームシーンへ戻れます。
得点は保持してあります。
そのためか、シーン2からゲームシーンに戻った時、クリア表示とボタンが残ったままになっていて困っています。
どのようにすればいいでしょうか?
よろしくお願いいたします。

未熟で整ってないスクリプトですが載せておきます。

スクリプト修正しました。highscore10点で関数を呼びSetActiveをfalseにしていますがエラーは出ませんがボタンは出たままです。
appleも点数を保持しています

GameObject AppleText;
int apple = 0;

bool S;

public Text HighScoreText;
public Text AppleScoreText;

int highScore;

private string key = "HIGHSCORE";
private string key2 = "APPLE";

public void GetApple(){
if (S == true) {
apple += 1;
highScore += 1;
}
}

public void GetSmileApple(){
if (S == true) {
apple += 5;
highScore += 5;
}
}
public void GetMainasu(){
if (S == true) {
apple -= 2;
highScore -= 2;

}
}

void Start () {

AppleText = GameObject.Find ("Apple");

S = true;

highScore = PlayerPrefs.GetInt (key, 0);
HighScoreText.text = highScore.ToString () + "highScore";

apple= PlayerPrefs.GetInt (key2, 0);
AppleScoreText.text = apple.ToString () + "apple";

}

void Update () {

//        AppleText.GetComponent<Text> ().text = 
//            apple.ToString () + "apple";

if (apple >= 10 ) {
GameObject.Find ("Canvas").GetComponent<UIController> ().Clear ();
GameObject.Find ("AppleGenerator").GetComponent<AppleGenerator> ().GetPlaynow ();
S = false;

GameObject.Find ("Buttonmap2").GetComponent<ButtonActive> ().GetButton ();

}

if (apple < 0) {
apple = 0;
}

PlayerPrefs.SetInt (key, highScore);

HighScoreText.text = highScore.ToString () + "highScore";

PlayerPrefs.SetInt (key2, apple);

AppleScoreText.text = apple.ToString () + "apple";

if (highScore >= 20) {
PlayerPrefs.DeleteAll ();
}

}

public void GetHighScore(){

if (highScore >= 10) {

GameObject.Find ("Buttonmap2").GetComponent<ButtonActive> ().GetButton2 ();
SceneManager.LoadScene ("map1");

}
if (highScore >= 20) {

SceneManager.LoadScene ("map2");

}
}

}

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takezoux2

    2018/08/15 17:35

    コードはちゃんとインデントを整えて、コードブロックにしましょう。読みにくいと回答してくれる人が減ります。

    キャンセル

  • takezoux2

    2018/08/15 17:44

    また、全てのコードも載せましょう。他の場所でのバグの可能性もあります。このコードから、クリア表示とボタンの表示制御をどこで行っているか、全くわからないので、問題がどこで発生しているかわかりません。

    キャンセル

  • yukidama

    2018/08/15 20:22

    ご指摘いただき有難うございます。正しいインデントの揃え方も分かっておらずご迷惑をおかけしております。質問自体をもっと分かりやすく出来るように心掛けたいと思います。有難うございます。

    キャンセル

回答 2

checkベストアンサー

+1

if (highScore >= 20) {
//ここに消したいボタンを格
GameObject.Find ("Buttonmap2").setActive(false);
SceneManager.LoadScene ("Map2");
}

こんな感じでシーンに移動する前にオブジェクトを非アクティブにすれば良さそうです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/15 07:40

    回答ありがとうございます!
    やってみたのですがエラーが出ました。

    Object reference not set to an instance of an object
    GameDirector.Update () (at Assets/GameDirector.cs:79)

    スクリプトを修正しました。
    関数を呼んでSetActiveをfalseにしてみたのですが、エラーは出ませんが表示された状態でした。
    うまく生かせずすみません。
    ありがとうございます!

    キャンセル

  • 2018/08/15 07:52

    エラーですが、Button2はスクリプトだけなので出たのかもしれません。Objectのボタン?にしてみましたがエラーはなく表示はされています。

    キャンセル

  • 2018/08/15 17:48

    シーン上にButtonmap2というオブジェクトはありますかね?
    GameObject.Find ("Buttonmap2")でボタンのオブジェクトを取得しているはずなのですが、それが取得できていないというエラーっぽいです

    キャンセル

  • 2018/08/15 20:34

    Button2のオブジェクトはあります。オブジェクトやスクリプトがごちゃごちゃで自分ではどうにも出来なくなり、ここで考えてみてゲームを考え直そうと思います。未熟すぎました。考えていただき有難うございます。次への参考にさせていただきます。有難うございます。

    キャンセル

+1

質問から原因は特定しきれないですが回答しておきます。早急に質問の修正をしたほうがいいです。

 可能性1

appleの数が保存されているので、シーンに戻ってきた時にUpdate内でのapple>=10のチェックが実行され、再度クリア表示とボタンが実行されている

 可能性2

GetHighScoreメソッドのappleの個数判定がelse ifになっていない

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/15 20:28

    可能性1と2はその通りです。考えてみた結果、自分の技術が足らなくて進めていくことが難しくなりました。一旦やめて一からやり直します。考えていただき誠に有難うございます。ご指摘もいただき勉強になりました。有難うございます。

    キャンセル

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Unity

    5653questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity2D

    1301questions