private void ReplaceTextureInAllMaterialsInAllRows(Texture oldTex, Texture2D newTex) { foreach(string key in textureKeys) { for(int i=0;i<submeshRows.Count;i++) { Hashtable row = (Hashtable)submeshRows[i]; Material mat = (Material)row["origMat"]; if(mat.HasProperty(key) && mat.GetTexture(key) == oldTex) { mat.SetTexture(key, newTex); if(key == "_BumpMap" || key == "_NormalMap") { Texture2D nTex = newTex.FromUnityNormalMap(); row["origBumpMap"] = nTex; } else if(key == "_DetailBumpMap" || key == "_DetailNormalMap") { Texture2D nTex = newTex.FromUnityNormalMap(); row["origDetailBumpMap"] = nTex; } } bool unreadable = IsAnyTextureUnreadable(mat, textureKeys); row["texUnReadable"] = unreadable; mat = (Material)row["mat"]; if(mat.HasProperty(key) && mat.GetTexture(key) == oldTex) { mat.SetTexture(key, newTex); } mat = (Material)row["atlasMat"]; if(mat.HasProperty(key) && mat.GetTexture(key) == oldTex) { mat.SetTexture(key, newTex); } } } CheckReadability(); }