[Unity]:スクリプトからシェーダの変数にアクセスする

先ほどのエントリで、ノーマルマップのオフセットにアクセスする方法でつまづいたので追記。

using UnityEngine;
using System.Collections;

public class Water : MonoBehaviour {
	void Update() {
		Vector2 offset = renderer.sharedMaterial.mainTextureOffset;
		offset.x = Mathf.Sin(Time.time * 2) * 0.01f;
		offset.y = Mathf.Repeat(offset.y - 0.001f, 1.0f);
		renderer.sharedMaterial.mainTextureOffset = offset;
		renderer.sharedMaterial.SetTextureOffset("_BumpMap", offset);
	}
}

マテリアルInspector

マテリアルのInspectorの「Shader」右側にある「Edit…」を押下。
※ ↑組み込みシェーダの場合。
それ意外の場合はエディタでシェーダのソースが表示される。
組み込みシェーダと同様にInspectorで一覧を確認したい場合は、Inspector右上の歯車アイコンから「Select Shader」を選択。

ShaderInspector

「Properties:」の中に「_BumpMap Texture: Normalmap」の表記があり、ノーマルマップにアクセスするためには「_BumpMap」という変数名を使用すれば良いことが判る。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です