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

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

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

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

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

Q&A

解決済

1回答

3508閲覧

UnityでUIを表示させても一度はつくが、その後消えてしまう。

ligo

総合スコア7

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

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

0グッド

0クリップ

投稿2020/07/08 12:18

編集2020/07/09 06:26

1前提
Unityでパズルゲームを作っています。Unityのバージョンは2019.3.10.f1です。
2問題点
何個かのボタンを表示させて押すと消えたりついたりするようにしたいのですが。UIを表示させると、一度は見えるのですが、しばらくすると何もしていないのに消えてしまいます。
以下が画像です。

この画像はゲームスタート直後で一応表示されています。しかしすぐに
上の画像のようになってしまいます。

また、ヒエラルキー上には下の画像のように表示されています。"lights"というのは空のゲームオブジェクトで、このオブジェクトの子要素として"Light"というパズル用のボタンのPrefabを生成しています。

ゲームが実行されている時も、おそらく"Light"は破棄されていないと思います。またボタン"Light"子要素であるテキストは無効化されています。"Light"のinspectorを見たところ、Buttonの色は指定した黄色になっていました。

また、下の画像がゲームを一時中断したときの画像です。

Scenen画面で見たところ位置が画面外になっているため見えないのではないのでは、と思います。

void

1 { 2 if(lightStatus == null||lightStatus.Length<= 0|| 3 lightObjects == null || lightObjects.Length <= 0) 4 { 5 6 return; 7 } 8 9 Button button; 10 11 for(int i = 0; i < lightStatus.GetLength(0); i++) 12 { 13 for(int j = 0; j < lightStatus.GetLongLength(1); j++) 14 { 15 button = lightObjects[i, j].GetComponent<Button>(); 16 17 ColorBlock colorBlock = button.colors; 18 19 if (lightStatus[i, j]) 20 { 21 colorBlock.normalColor = OnButtonColor; 22 colorBlock.pressedColor = OnButtonColor; 23 colorBlock.selectedColor = OnButtonColor; 24 colorBlock.highlightedColor = OnButtonHighlightedColor; 25 } 26 else 27 { 28 colorBlock.normalColor = offButtonColor; 29 colorBlock.pressedColor = offButtonColor; 30 colorBlock.selectedColor = offButtonColor; 31 colorBlock.disabledColor = offButtonColor; 32 colorBlock.highlightedColor = offButtonHighlightedColor; 33 } 34 35 button.colors = colorBlock; 36 button.interactable = true; 37 38 } 39 } 40コード

上のコードが色を変更するためのスクリプトです。
透明度がゼロになっているというご指導をいただき、ここが原因ではないかと教えていただいたのですが残念ながら、私には原因が掴めませんでした。何か分かる方は、教えていただけると幸いです。

3試した方法
エラーなどは特に出ていませんでした。また非表示になっているわけでもありませんでした。いろいろなサイトを見させていただいて、ゲーム開始時からUIが表示されないというものは多くあったのですが一度表示されてその後に消えてしまうという原因はよくわかりませんでした。

4最後に
この問題に関して何かわかる方がいらっしゃれば、ぜひ確証などがなくても良いので教えてください。この問題はまだUnity初心者ということもあり非常に困っています。皆様の御力を貸していただけるとありがたいです。

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

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

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

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

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

bboydaisuke

2020/07/08 13:11 編集

まず、リストを画像で表示せず「コードとして」表示してください。 それから、コードなどの情報は要らないので「消えた」ときにそれらのオブジェクトが Hierarchy に表示されているか、をまず確認してください。 それらのオブジェクトが Hierarchy 上になければ、どこかで破棄していることになります。存在しているのであれば、Rect Transform や Image の Color などをチェックして、存在しているのに画面上に見えないのはどうしてかを考えていきます。 コードを見るのはそれからです。
ligo

2020/07/08 21:49

御回答ありがとうございます。質問を編集させていただきました。 こちらがまだよくわかっておらず、不要な情報と、必要な情報がよくわかりませんでした、すみません。 まだ、必要な情報ががざいましたら、ぜひおっしゃってください。
bboydaisuke

2020/07/08 22:12 編集

"Light" という名前のオブジェクトが消えてしまう、というのが問題ですか? > Buttonの色は指定した黄色になっていました。 これはどこを見てそう判断したんですか? 問題発生時であろう画像を見ると、Light オブジェクトを選んだ時に Inspector の最下部に表示されるプレビューを見ると透明で何も表示されていません。これは表示されている間は何か表示されているんじゃありませんか? それから、問題発生時であろう画像では Rect Transform の Position や Size などがみえませんが、オブジェクトがどこに存在しているかは確認できますか?簡単なやり方としては、Scene ビューで問題発生時に Hierarchy で Light オブジェクトを選択すると Gizmo が表示されてどこにあるかわかるはずです。見つからない場合は Hierarchy でそのオブジェクトをダブルクリックすると、画面外にそのオブジェクトがあった場合でもそのオブジェクトを中心にとらえるように Scene ビューのカメラが移動します。 問題発生時にも Light オブジェクトが所定の位置(画面内)にいて、かつ問題が発生していない間は Light のプレビューに何かが表示されているが、問題発生時には Light のプレビューが何もないのであれば、それが「表示されている画像が消える」問題の「原因」です。あとはそれが何によって起きているか、さらに「原因」を調べていくことになります。
bboydaisuke

2020/07/08 22:18

> Scenen画面で見たところ位置が画面外になっているため見えないのではないのでは、と思います。 問題発生時であろう画像を見る限り、Scene ビューでは画面内にあるが見えないようです。枠が表示されてますがその中身が表示されていませんし、その枠は表示範囲を示す Gizmo の内側に表示されているためです。
ligo

2020/07/08 22:46

御回答ありがとうございます。 おっしゃる通り、"Light"という名前のオブジェクトがヒエラルキー上ではあることになっているのですが、実際に見えないというのが問題です。 中身が表示されない原因としてはどのようなことが挙げられるのでしょうか?
bboydaisuke

2020/07/08 22:48

これは確認しましたか?→「問題発生時であろう画像を見ると、Light オブジェクトを選んだ時に Inspector の最下部に表示されるプレビューを見ると透明で何も表示されていません。これは表示されている間は何か表示されているんじゃありませんか?」
ligo

2020/07/08 22:53

ありがとうございます。 おっしゃる通り、ボタンが表示されている時はinspectorの最下部にあるプレビューを見ると黄色く表示されているのですが、表示されなくなった時には、プレビューにも何も表示されていませんでした。
bboydaisuke

2020/07/08 23:09 編集

問題は明らかになりましたが、あとはわからないので質問を書き変えるといいんじゃないかと思います。 問題は実行中に(表示されていた)Image が透明になってしまうことで、そう判断した根拠は該当オブジェクトの Inspector を確認したところ、プレビューが透明になっていたからですね。問題発生時にも Source Image には UISprite(built-inのデフォルトのボタンの Image)が指定されており、Source Image の指定が None になっているわけでもありません。 それらの事がはっきりわかる画像、できればプレビューが消えるところを捉えた動画を貼り付ければ大体の人には何が問題なのか理解できるでしょう。
bboydaisuke

2020/07/08 23:13 編集

あとは Unity のバグの可能性も考えて、別のバージョンでも試してみるとよいでしょう。今だったら 2019.4 の最新ビルドがいいんじゃないかと思います。
ligo

2020/07/08 23:14

誠にありがとうございました。 僕自身全然わかっていなかったので非常に助かりました。 おっしゃる通り、もう一度別の質問として、質問しようと思います。 色々と教えてくださり、ありがとうございました。
bboydaisuke

2020/07/08 23:15

他に(自分なら)試すこととしては、自分で 32x32 の適当な画像を作って、UISprite ではなくその画像でも問題が起きるかどうか、くらいです。
ligo

2020/07/08 23:18

ありがとうございます。 そのことについても、試してみようと思います。 また、その結果についても、新しく質問する内容にも盛り込もうと思います。
sakura_hana

2020/07/09 00:42

Buttonの色、RGBとしては黄色ですがA(透明度)が0なので見えていないだけではないですか? スクリプト側で色変更させていませんか?
ligo

2020/07/09 06:02

返信が遅れて申し訳ございません。ご回答ありがとうございます おっしゃる通り、透明度が0になっているようです。もう一度コードを確認したいと思います。 非常に助かります。ありがとうございます。
ligo

2020/07/09 06:22

おしゃる通り、スクリプト上で色変更をしております。 スクリプト状に該当箇所を載せさせていただきます。もしよろしければご指導お願いいたします。
bboydaisuke

2020/07/09 06:43 編集

スクリプトで Color を透明にするところに Debug.Log を仕込んで、どのタイミングでどういう流れで呼ばれたのか調べてみるとよいでしょう。
ligo

2020/07/09 06:46

ありがとうございました。 無事解決しました。どうやら、色を設定するときに透明度をゼロにしてしまっていたようです。 長い間ご協力いただき誠にありがとうございました。
guest

回答1

0

ベストアンサー

ペーストされているコード呼ばれたから透明になっていることと、それがどういう流れで呼ばれたのかを調べるために、「透明にしている」場所の直前に Debug.Log でログを出し、問題発生時にログが出力されていたらその出力内容を調べてみるとよいでしょう。

ログにはどういう流れでそこまでたどり着いたのかという情報が記録されています。

投稿2020/07/09 06:46

bboydaisuke

総合スコア5270

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

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

ligo

2020/07/09 06:49

ありがとうございました。 おかげで全くわからなかったところから、原因を突き止め、解決することができました。 誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問