■テクスチャの準備
2枚のテクスチャ(png)を用意する。ここでは以下の2つとする。※Unityで扱える画像ならpng以外でも構わない。
tex_BtnDialOff.png
tex_BtnDialOn.png
これを予めAssets内のResourcesフォルダ配下に置く。Resourcesフォルダが存在していない場合は自分で作る。
今回はさらにTextureフォルダを作りその下にテクスチャを配置。
※このとき Resources配下以外の位置に置くとうまくいかないので注意。
以下のような配置になる。
Asset/Resources/Texture/tex_BtnDialOff.png
■コード実装
適当に定数定義する:
※この時のパスは暗黙で /Resources/ がついていることになっている。const string TEXNAME_BTNDIALOFF = "Texture/tex_BtnDialOff";
const string TEXNAME_BTNDIALON = "Texture/tex_BtnDialOn";
リソース生成用の型宣言:
※宣言だけなので中身はまだ無い。Texture2D TEX_BTNDIALOFF;
Texture2D TEX_BTNDIALON;
リソースをロードしてインスタンス化:
※この時戻り値がnullならロードに失敗しているのでチェックすると良い。TEX_BTNDIALOFF = Resources.Load(TEXNAME_BTNDIALOFF) as Texture2D;
TEX_BTNDIALON = Resources.Load(TEXNAME_BTNDIALON) as Texture2D;
ジェネリックに書くとこうなる
TEX_BTNDIALOFF = Resources.Load<Texture2D>(TEXNAME_BTNDIALOFF);
TEX_BTNDIALON = Resources.Load<Texture2D>(TEXNAME_BTNDIALON);
テクスチャの張替え:
GameObject go;
go = 張り替える対象のオブジェクトインスタンスを格納しておく
go.renderer.material.mainTexture = TEX_BTNDIALOFF; //tex_BtnDialOff.png を貼る
go.renderer.material.mainTexture = TEX_BTNDIALON; //tex_BtnDialOn.png を貼る
追記: Unity5では以下のようになった。
go.GetComponent<Renderer>().material.mainTexture = TEX_BTNDIALOFF; //tex_BtnDialOff.png を貼る
go.GetComponent<Renderer>().material.mainTexture = TEX_BTNDIALON; //tex_BtnDialOn.png を貼る
意外とこれはそのものズバリの情報が見つけにくかった。手順の概念はオーディオでもテクスチャでも紐付けていく感じは同じだが、 as Texture2D 等の特殊(?)表記を見つけるまでに手間どった。
0 件のコメント:
コメントを投稿