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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

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

Q&A

1回答

769閲覧

Unity 共通するオブジェクトの表示非表示をシーン毎に設定したい

Lulucaf

総合スコア8

Unity

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

0グッド

0クリップ

投稿2021/05/30 07:06

こちらを参考に作成しているのですが表示非表示の切り替えが上手くいくスクリプト(オブジェクト)と上手くいかないスクリプト(オブジェクト)があり、調べても原因が分からなかったので質問させていただきました。
動作しない方は非表示にするべきシーンでテキストが非表示にならず「Score0」という文字が表示されてしまいます。

該当部分(表示非表示の切り替えを司る部分)

どちらのスクリプトもif文の処理内容以外は共通で、以下の通りです。

C#

1if (Data.Instance.referer == "random normal" | Data.Instance.referer == "random hard" | Data.Instance.referer == "random rush") 2{ 3 処理 4} 5else 6{ 7 this.gameObject.SetActive(false); //非表示に 8}

該当のスクリプト(正常に動作している方)

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class HighScore : MonoBehaviour 7{ 8 public Text ScoreText; 9 // Start is called before the first frame update 10 void Start() 11 { 12 if (Data.Instance.referer == "random normal" | Data.Instance.referer == "random hard" | Data.Instance.referer == "random rush") 13 { 14 if (Data.Instance.referer == "random normal") 15 { 16 GetComponent<Text>().text = "HighScore" + HitCheck.HighScoreNormal.ToString("F0"); 17 } 18 else if (Data.Instance.referer == "random hard") 19 { 20 GetComponent<Text>().text = "HighScore" + HitCheck.HighScoreHard.ToString("F0"); 21 } 22 else if (Data.Instance.referer == "random rush") 23 { 24 GetComponent<Text>().text = "HighScore" + HitCheck.HighScoreRush.ToString("F0"); 25 } 26 } 27 else 28 { 29 this.gameObject.SetActive(false); 30 } 31 32 } 33 34 // Update is called once per frame 35 void Update() 36 { 37 38 } 39} 40

該当のスクリプト(動作しない方)

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Score1 : MonoBehaviour 7{ 8 public Text ScoreText; 9 // Start is called before the first frame update 10 void Start() 11 { 12 if (Data.Instance.referer == "random normal" | Data.Instance.referer == "random hard" | Data.Instance.referer == "random rush") 13 { 14 Timer.score = PlayerPrefs.GetFloat("SCORE"); 15 GetComponent<Text>().text = "Score" + Timer.score.ToString("F0"); 16 PlayerPrefs.SetInt("SCORE", 0); 17 PlayerPrefs.Save(); 18 } 19 else 20 { 21 this.gameObject.SetActive(false); 22 } 23 24 } 25 26 // Update is called once per frame 27 void Update() 28 { 29 30 } 31} 32

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

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

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

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

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

guest

回答1

0

C# の if文における or演算子は || ですが、それを | と記述しているのが原因ではないでしょうか?

正常に動作している方のスクリプトはifのカッコ内でそれぞれ個別に判別しているため一見正常に動作しているように見えているのだと思います。

投稿2021/05/30 09:46

monmoko

総合スコア202

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問