いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

Unityで、パネルと(配置してある)ボタンのテキストのα値を同時に変える

パネルにボタンが配置してあるとします。ボタンはパネルの子になっています。何かの事情でこのパネルのα値を変えたいとします。以下のコードではうまくいきません(goはパネルのGameObject)。ボタンのテキストはそのままで、パネルの地だけが半透明になってしまいます。

Color color = go.GetComponent<Image>().color;
color.a = 0.2f;
go.GetComponent<Image>().color = color;

 

次のようにするとうまく行きます。

まず、パネルにCanvasGroupコンポーネントをAddComponentします。CanvasGroupは検索の虫眼鏡をクリックして、「can」くらいを入れれば見つかります。

そうした上で以下のコードを実行します。

go.GetComponent<CanvasGroup>().alpha = 0.2f;

 

ジワジワ変えたければコルーチンでやればよいでしょう。ゲームで画面を別の画面に切り替えるとき、いきなり「バン!」と変わっても機能上は変わらないのですが、いかにも味気ありません。0.5秒くらいでジワッと変えたいときにこの方法を使えます。