color型のプロパティを設定します
Adds a property to the block. If a color property with the given name already exists, the old value is replaced.
// Draws 3 meshes with the same material but with different colors. var mesh : Mesh; var material : Material; private var block : MaterialPropertyBlock; function Start() { block = new MaterialPropertyBlock(); } function Update() { // red mesh block.SetColor("_Color", Color.red); Graphics.DrawMesh(mesh, Vector3(0,0,0), Quaternion.identity, material, 0, null, 0, block); // green mesh block.SetColor("_Color", Color.green); Graphics.DrawMesh(mesh, Vector3(5,0,0), Quaternion.identity, material, 0, null, 0, block); // blue mesh block.SetColor("_Color", Color.blue); Graphics.DrawMesh(mesh, Vector3(-5,0,0), Quaternion.identity, material, 0, null, 0, block); }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Mesh mesh; public Material material; private MaterialPropertyBlock block; void Start() { block = new MaterialPropertyBlock(); } void Update() { block.SetColor("_Color", Color.red); Graphics.DrawMesh(mesh, new Vector3(0, 0, 0), Quaternion.identity, material, 0, null, 0, block); block.SetColor("_Color", Color.green); Graphics.DrawMesh(mesh, new Vector3(5, 0, 0), Quaternion.identity, material, 0, null, 0, block); block.SetColor("_Color", Color.blue); Graphics.DrawMesh(mesh, new Vector3(-5, 0, 0), Quaternion.identity, material, 0, null, 0, block); } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): public mesh as Mesh public material as Material private block as MaterialPropertyBlock def Start() as void: block = MaterialPropertyBlock() def Update() as void: block.SetColor('_Color', Color.red) Graphics.DrawMesh(mesh, Vector3(0, 0, 0), Quaternion.identity, material, 0, null, 0, block) block.SetColor('_Color', Color.green) Graphics.DrawMesh(mesh, Vector3(5, 0, 0), Quaternion.identity, material, 0, null, 0, block) block.SetColor('_Color', Color.blue) Graphics.DrawMesh(mesh, Vector3(-5, 0, 0), Quaternion.identity, material, 0, null, 0, block)
/nameID/ でこの関数を呼び出すほうが高速になります。もし、繰り返し同じ名前のプロパティを追加する場合は、 Shader.PropertyToIDを使用してプロパティ名のユニークIDを取得し、SetColorにIDを渡します。
// Draws 3 meshes with the same material but with different colors. var mesh : Mesh; var material : Material; private var block : MaterialPropertyBlock; private var colorID : int; function Start() { block = new MaterialPropertyBlock(); colorID = Shader.PropertyToID("_Color"); } function Update() { // red mesh block.SetColor(colorID, Color.red); Graphics.DrawMesh(mesh, Vector3(0,0,0), Quaternion.identity, material, 0, null, 0, block); // green mesh block.SetColor(colorID, Color.green); Graphics.DrawMesh(mesh, Vector3(5,0,0), Quaternion.identity, material, 0, null, 0, block); // blue mesh block.SetColor(colorID, Color.blue); Graphics.DrawMesh(mesh, Vector3(-5,0,0), Quaternion.identity, material, 0, null, 0, block); }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Mesh mesh; public Material material; private MaterialPropertyBlock block; private int colorID; void Start() { block = new MaterialPropertyBlock(); colorID = Shader.PropertyToID("_Color"); } void Update() { block.SetColor(colorID, Color.red); Graphics.DrawMesh(mesh, new Vector3(0, 0, 0), Quaternion.identity, material, 0, null, 0, block); block.SetColor(colorID, Color.green); Graphics.DrawMesh(mesh, new Vector3(5, 0, 0), Quaternion.identity, material, 0, null, 0, block); block.SetColor(colorID, Color.blue); Graphics.DrawMesh(mesh, new Vector3(-5, 0, 0), Quaternion.identity, material, 0, null, 0, block); } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): public mesh as Mesh public material as Material private block as MaterialPropertyBlock private colorID as int def Start() as void: block = MaterialPropertyBlock() colorID = Shader.PropertyToID('_Color') def Update() as void: block.SetColor(colorID, Color.red) Graphics.DrawMesh(mesh, Vector3(0, 0, 0), Quaternion.identity, material, 0, null, 0, block) block.SetColor(colorID, Color.green) Graphics.DrawMesh(mesh, Vector3(5, 0, 0), Quaternion.identity, material, 0, null, 0, block) block.SetColor(colorID, Color.blue) Graphics.DrawMesh(mesh, Vector3(-5, 0, 0), Quaternion.identity, material, 0, null, 0, block)