現役厨房によるゲーム開発

現役の厨房がunityなどを使用してクソゲーを作ります

【Unity】オブジェクトのテクスチャをマウスオーバーで変更する【C#】

前回制作したジェンガのような物をいじっていたところ、ふとこんなことを...





どのジェンガの上にマウスカーソルがあるのか分かりにくいな

ということで今回はオブジェクトにマウスオーバーすると、そのオブジェクトのテクスチャを変更するコードC#で書いていこうと思います。



用意するもの

  • テクスチャ(Unityに対応している画像ファイル) 2枚
  • テクスチャを変更するオブジェクト
  • Assets内にあるC#スクリプト



C#コード

using UnityEngine;
using System.Collections;

//クラス名は変更してね
public class images : MonoBehaviour {

        //テクスチャを用意
	public Texture image;
	public Texture image2;

        //オブジェクトにマウスカーソルが重なっている際実行
	void OnMouseOver(){
          renderer.material.mainTexture = image2; //新しいテクスチャを反映する
	}
	
        //オブジェクトからマウスカーソルが離れた際実行
	void OnMouseExit(){
          renderer.material.mainTexture = image; //元のテクスチャを反映する
	}
}

これがコードになります。

public Texture image;

"image"部分はファイル名ではなく、変数の名前です。

このコードだけだと空っぽの変数をテクスチャとして反映させようとしてしまいます。

そこで、ファイルを保存したらUnityのProjectパネルから今保存したスクリプトをクリックします。

するとInspectorパネルにこんな感じ↓のテクスチャを選択する項目が出てきますのでそこからテクスチャを選んでください。

ここで選択したテクスチャが先程のコードの変数の中身になります。

 

完了したらスクリプトをオブジェクトに適用させます。実行すると...



こんな感じにマウスオーバーしたオブジェクトのテクスチャが変わります!!


今回のまとめ

  • C#でテクスチャ変更する場合は"renderer.material.mainTexture""public Texture"を使う
  • "Public texture"の中身はコードではなくUnityで指定できる