baobao
8/18/2014 - 1:10 AM

uvScrollアニメーションを持っている場合のMaterial注意点。

uvScrollアニメーションを持っている場合のMaterial注意点。

// マップの全ての共有マテリアルの参照を取得する
if (bg_materials == null)
	bg_materials = new List<Material>();
Renderer[] rens = go.GetComponentsInChildren<Renderer>();
foreach(Renderer ren in rens) {
	if (ren == null
	|| ren.sharedMaterial == null
	|| ren.particleSystem != null) {
		continue;
	}
	if (ren.animation != null) {
		// レンダラがuvScrollアニメーションを持っている場合はMaterialが
		// 複製されるので、sharedMaterialではなく、Materialを追加する
		AnimationClip clip = ren.animation.clip;
		if (clip != null && clip.name.Contains("uvScroll")) {
			bg_materials.Add(ren.material);
		}
		continue;
	}

	if (bg_materials.Exists((Material mat)=>{ return mat == ren.sharedMaterial; }) == false)
	{
		bg_materials.Add(ren.sharedMaterial);
	}
}