180bpm
AssetBundle에 Shader가 포함된경우 Editor에서 분홍색으로 나오는 문제에 대한 자세한 설명 본문
Develop/Unity
AssetBundle에 Shader가 포함된경우 Editor에서 분홍색으로 나오는 문제에 대한 자세한 설명
powdersnow 2016. 3. 24. 17:54반응형
http://baramlife.tistory.com/9
오!
그리고 우리는 이렇게 쓰고 있다.
개선한 코드, 하위 오브젝트도 붙은 경우가 있어서.
// 불러온 게임 오브젝트들의 쉐이더를 재지정해준다. public static void ReAssignShader(GameObject obj) { Debuger.Log("find object : " + obj); Renderer[] renderers = obj.transform.GetComponentsInChildren<Renderer>(true); foreach (Renderer item in renderers) { if (item.materials != null) { foreach (Material mat in item.materials) { Shader sha = mat.shader; sha = Shader.Find(sha.name); // Debuger.Log(item.gameObject.name + " : " + mat.name, item.gameObject); } } } }
// 불러온 게임 오브젝트들의 쉐이더를 재지정해준다.public static void ReAssignShader(GameObject obj) { for (int i = 0; i < obj.transform.childCount; i++) { if (obj.transform.GetChild(i).GetComponent<Renderer>() != null) { obj.transform.GetChild(i).GetComponent<Renderer>().material.shader = Shader.Find(obj.transform.GetChild(i).GetComponent<Renderer>().material.shader.name); for (int j = 0; j < obj.transform.GetChild(i).transform.childCount; j++) { if (obj.transform.GetChild(i).transform.GetChild(j).GetComponent<Renderer>() != null) { obj.transform.GetChild(i).transform.GetChild(j).GetComponent<Renderer>().material.shader = Shader.Find(obj.transform.GetChild(i).transform.GetChild(j).GetComponent<Renderer>().material.shader.name); } } } } }
반응형
Comments