テクノモンキー(サブ)

テクノモンキーのサブブログです。 iOSやAndroid、Unityのアプリ開発に関する情報や気になったニュース、考え事などを気軽に発信します。

【Unity】GameObjectの透明度をコード変更する方法(SpriteRendererを使わない)2D

UnityでGameObjectの透明度をコードで変えようとしたらつまづいてしまったのでメモ。


やりたいこととしては、
「未入手のアイテムを半透明の状態にしておいて、アイテムをゲットしたら半透明状態を元に戻す」
ってことです。




GameObjectの透明度を変える方法を調べていたんですが、調べてみると3Dでやる場合の方法ばっかりが出てきてしまいます。。(僕の検索法の問題もある)




vend9520-lab.net



qiita.com






その後、ようやくUnityの2Dでオブジェクトの透明度を変更する方法を見つけたんですが、




Unity2Dメモ2 スクリプトからSpriteの透明度を変える

d.hatena.ne.jp



やり方的には、GetComponentでSpriteRendererを取得して、colorの値を変えるという方法。





ただ僕が透明度を変えたいゲームオブジェクトは「Hierarchy→UI→image」で追加したGameObjectなので、SpriteRendererがないオブジェクトです。

f:id:no-work-no-life-4081:20180509132922p:plain


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週間くらい経ち、ようやく慣れてきた気がしますが、まだまだ謎が多い。。