コード例 #1
0
    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();
    }