Пример #1
0
        // check if applied by prefab and instance has different texture
        private bool IsTextureMismatch(Renderer r)
        {
            MeshTexSetter s = r.GetComponent <MeshTexSetter>();

            if (s == null || s.textures.Count == 0)
            {
                return(false);
            }
            return(s.textures.Count == 1 && s.textures[0].path != EditorAssetUtil.GetAssetRelativePath(r.sharedMaterial.mainTexture));
        }
Пример #2
0
 private void DerefCdnTexture(Renderer r)
 {
     if (r.sharedMaterials.Length == 1 && r.sharedMaterials[0] != null)
     {
         var           tex    = r.sharedMaterial.mainTexture;
         MeshTexLoader loader = r.GetComponent <MeshTexLoader>();
         if (tex != null && AssetBundlePath.inst.IsCdnAsset(tex) &&
             (loader == null || IsTextureMismatch(r)))
         {
             loader      = r.FindComponent <MeshTexLoader>();
             loader.rend = r;
             MeshTexSetter setter = r.FindComponent <MeshTexSetter>();
             var           aref   = new AssetRef();
             aref.SetPath(tex);
             setter.textures.Clear();
             setter.textures.Add(aref);
             EditorUtil.SetDirty(r.gameObject);
             EditorUtil.SetDirty(loader);
             EditorUtil.SetDirty(setter);
         }
     }
 }