示例#1
0
        public static APMovieTexture GetAPMovieTextureFromAssetGuid(string guid)
        {
#if UNITY_5_6_OR_NEWER
            VideoClipImporter movieImporter = GetAssetImporterFromAssetGuid <VideoClipImporter>(guid);
#else
            MovieImporter movieImporter = GetAssetImporterFromAssetGuid <MovieImporter>(guid);
#endif
            Debug.Log(movieImporter);
            // if texture is render texture or others, tImporter will to set to null.
            //
            if (movieImporter == null)
            {
                return(null);
            }

            string path = AssetDatabase.GUIDToAssetPath(guid);
            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }

#if UNITY_5_6_OR_NEWER
            var texture = AssetDatabase.LoadAssetAtPath(path, typeof(VideoClip)) as VideoClip;
#else
            var texture = AssetDatabase.LoadAssetAtPath(path, typeof(MovieTexture)) as MovieTexture;
#endif
            Debug.Log(texture);
            if (texture == null)
            {
                return(null);
            }

            APMovieTexture apMovieTexture = new APMovieTexture();
            apMovieTexture.Icon = GetIconID(path);
#if UNITY_5_6_OR_NEWER
            apMovieTexture.Size = (long)movieImporter.outputFileSize;
            double approx = 0;
#else
            apMovieTexture.Size = TextureUtillity.GetStorageMemorySize(texture);
            double approx = (GetVideoBitrateForQuality(movieImporter.quality) + GetAudioBitrateForQuality(movieImporter.quality)) * movieImporter.duration / 8;
#endif
            apMovieTexture.Approx = approx;

            apMovieTexture.Name     = Utility.GetFileName(path);
            apMovieTexture.Path     = path;
            apMovieTexture.Hash     = Utility.GetFileMd5(path);
            apMovieTexture.Quality  = movieImporter.quality;
            apMovieTexture.FileSize = Utility.GetFileSize(path);
#if UNITY_5_6_OR_NEWER
            TimeSpan duration = TimeSpan.FromSeconds(texture.length);
#else
            TimeSpan duration = TimeSpan.FromSeconds(texture.duration);
#endif
            apMovieTexture.Duration = Utility.GetTimeDurationString(duration);
            apMovieTexture.Id       = guid;

            UnloadAsset(texture);
            return(apMovieTexture);
        }
示例#2
0
        public static APTexture GetAPTextureFromAssetGuid(string guid)
        {
            string path = AssetDatabase.GUIDToAssetPath(guid);

            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }

            var texture = AssetDatabase.LoadAssetAtPath(path, typeof(UnityEngine.Object));

            if (texture == null ||
                texture is MovieTexture)
            {
                return(null);
            }

            APTexture apTexture = new APTexture();

            apTexture.Icon = GetIconID(path);
            if (texture is RenderTexture)
            {
                var renderTexture = texture as RenderTexture;
                apTexture.StorageSize = TextureUtillity.GetStorageMemorySize(renderTexture);
#if UNITY_5 && !UNITY_5_6
                apTexture.RuntimeSize = Profiler.GetRuntimeMemorySize(renderTexture);
#else
                apTexture.RuntimeSize = Profiler.GetRuntimeMemorySizeLong(renderTexture);
#endif
                apTexture.Width       = renderTexture.width;
                apTexture.Height      = renderTexture.height;
                apTexture.TextureType = "Render";
                apTexture.Path        = path;
                apTexture.Hash        = Utility.GetFileMd5(path);
                apTexture.Name        = Utility.GetFileName(path);
                apTexture.FileSize    = Utility.GetFileSize(path);
                apTexture.Id          = guid;
                apTexture.Compress    = "None";
                UnloadAsset(texture);
                return(apTexture);
            }

            TextureImporter tImporter = GetAssetImporterFromAssetGuid <TextureImporter>(guid);
            if (tImporter == null)
            {
                return(null);
            }

            var tex = texture as Texture;

#if UNITY_5_5_OR_NEWER
            TextureImporterCompression importerCompression = tImporter.textureCompression;
#else
            TextureImporterFormat importerFormat = tImporter.textureFormat;
#endif

#if UNITY_5_5_OR_NEWER
            var platformSettings = tImporter.GetPlatformTextureSettings(Utility.BuildTargetToPlatform(EditorUserBuildSettings.activeBuildTarget));
            apTexture.CompressionQuality  = platformSettings.compressionQuality;
            apTexture.CrunchedCompression = platformSettings.crunchedCompression;
            apTexture.MaxSize             = platformSettings.maxTextureSize;
            apTexture.Compress            = GetCommonNameOfCompression(platformSettings.textureCompression.ToString());
#else
            int maxTextureSize  = tImporter.maxTextureSize;
            int compressQuality = tImporter.compressionQuality;
            tImporter.GetPlatformTextureSettings(Utility.BuildTargetToPlatform(EditorUserBuildSettings.activeBuildTarget), out maxTextureSize, out importerFormat, out compressQuality);
            apTexture.MaxSize             = maxTextureSize;
            apTexture.CompressionQuality  = compressQuality;
            apTexture.CrunchedCompression = false;
            apTexture.Compress            = GetCommonNameOfCompression(importerFormat.ToString());
#endif

            // Get texture settings for different platform
            //
            apTexture.StorageSize = TextureUtillity.GetStorageMemorySize(tex);
            apTexture.RuntimeSize = TextureUtillity.GetRuntimeMemorySize(tex);
            apTexture.Name        = Utility.GetFileName(path);
            apTexture.ReadWrite   = tImporter.isReadable;

#if UNITY_5_5_OR_NEWER
            if ((int)platformSettings.format > 0)
            {
                apTexture.TextureFormat = platformSettings.format.ToString();
            }
            else
            {
                apTexture.TextureFormat = "Auto";
            }
#else
            apTexture.TextureFormat = importerFormat.ToString();
#endif
            apTexture.TextureType = tImporter.textureType.ToString();
            apTexture.Path        = path;
            apTexture.Hash        = Utility.GetFileMd5(path);
            apTexture.MipMap      = tImporter.mipmapEnabled;
            apTexture.Width       = tex.width;
            apTexture.Height      = tex.height;
            apTexture.FileSize    = Utility.GetFileSize(path);
            int widthInPixel  = 0;
            int heightInPixel = 0;
            TextureUtillity.GetImageSize(texture as Texture2D, out widthInPixel, out heightInPixel);

            apTexture.WidthInPixel  = widthInPixel;
            apTexture.HeightInPixel = heightInPixel;

            if (tImporter.textureType == TextureImporterType.Sprite)
            {
                apTexture.PackingTag = tImporter.spritePackingTag;
            }

            apTexture.Id = guid;

            UnloadAsset(texture);

            return(apTexture);
        }