Hi,
I trying to change material at runtime but this don’t work
DebugLog give me the right name of material (mat[PlayerManager.GetHelmet()]) but material won’t change.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using DynamicShadowProjector;
public class AvatarPlayerManager : MonoBehaviour {
private List<GameObject> elsHelmetPlayer = new List<GameObject>();
private GameObject el01;
private GameObject el03;
private GameObject el04;
private GameObject el05;
private GameObject el06;
private GameObject el07;
public GameObject mainCam;
public GameObject shadowProjector;
public Material[] mat;
private GameObject playerGO;
MeshRenderer meshrenderer;
SkinnedMeshRenderer skinmeshrenderer;
//----------------------
//
// SET PLAYER AND TEXTURE
//
//----------------------
public void Awake () {
// Load choosing avatar
switch (PlayerManager.GetAvatar())
{
case 1:
playerGO = Instantiate(Resources.Load("Fragola")) as GameObject;
break;
case 2:
playerGO = Instantiate(Resources.Load("Mirabulle")) as GameObject;
break;
case 3:
playerGO = Instantiate(Resources.Load("SnowBob")) as GameObject;
break;
}
// Set health gauge
playerGO.GetComponent<Health>().InitHealthForHealthGauge();
// Setup camerafollow to avatar
playerGO.transform.parent = this.gameObject.transform;
// Set shadow projector to avatar
shadowProjector.GetComponent<DrawTargetObject>().target = playerGO.transform;
mainCam.GetComponent<CameraFollow>().target = playerGO.transform;
// Set camera follow to avatar
mainCam.GetComponent<CameraFollow>().InitCameraFollow();
el01 = GameObject.Find("Hat");
el03 = GameObject.Find("Pales");
el04 = GameObject.Find("Pale_01");
el05 = GameObject.Find("Pale_02");
el06 = GameObject.Find("Manette_01");
el07 = GameObject.Find("Manette_02");
elsHelmetPlayer.Add(el03);
elsHelmetPlayer.Add(el04);
elsHelmetPlayer.Add(el05);
elsHelmetPlayer.Add(el06);
elsHelmetPlayer.Add(el07);
InitHelmet();
}
// Use this for initialization
void InitHelmet () {
// Setup helmet choosed by user
foreach (GameObject go in elsHelmetPlayer) {
if(UtilsManager.GetDebug()){Debug.Log(mat[PlayerManager.GetHelmet()]);}
meshrenderer = go.GetComponent<MeshRenderer>() as MeshRenderer;
meshrenderer.material = mat[PlayerManager.GetHelmet()] as Material;
}
skinmeshrenderer = el01.GetComponent<SkinnedMeshRenderer>() as SkinnedMeshRenderer;
skinmeshrenderer.material = mat[PlayerManager.GetHelmet()] as Material;
if(UtilsManager.GetDebug()){Debug.Log(meshrenderer.material.name);}
if(UtilsManager.GetDebug()){Debug.Log(skinmeshrenderer.material.name);}
}
}