UnityでGameObjectの透明度をコードで変えようとしたらつまづいてしまったのでメモ。
やりたいこととしては、
「未入手のアイテムを半透明の状態にしておいて、アイテムをゲットしたら半透明状態を元に戻す」
ってことです。
GameObjectの透明度を変える方法を調べていたんですが、調べてみると3Dでやる場合の方法ばっかりが出てきてしまいます。。(僕の検索法の問題もある)
その後、ようやくUnityの2Dでオブジェクトの透明度を変更する方法を見つけたんですが、
Unity2Dメモ2 スクリプトからSpriteの透明度を変える
やり方的には、GetComponentでSpriteRendererを取得して、colorの値を変えるという方法。
ただ僕が透明度を変えたいゲームオブジェクトは「Hierarchy→UI→image」で追加したGameObjectなので、SpriteRendererがないオブジェクトです。
SpriteRendererを使わないでやる方法がないかなーって思って色々試した結果、以下の方法でできました。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { public GameObject item_Star; //アイテム:スター void Start () { //アイテムをゲットしていないのでアルファ値を下げる item_Star.GetComponent<Image> ().color = new Color (1.0f, 1.0f, 1.0f, 0.25f); } void Update () { } // アイテムゲット処理 public void GetItem(){ //アイテムをゲットしたので、アルファ値を元の値にする item_Star.GetComponent<Image> ().color = new Color (1.0f, 1.0f, 1.0f, 1.0f); } }
GetComponentでImageを取得してImageのcolorを変更することで透明度を変えられました。
Unityを触り始めて1週間くらい経ち、ようやく慣れてきた気がしますが、まだまだ謎が多い。。