Beispiel #1
0
        public static bool CopyToStreamingAssets(string platform, ResourceEditorTargetCopyOptions copyOptions,
                                                 ConfigDataConfigurator configDataConfigurator, AssetBundleConfigurator assetBundleConfigurator)
        {
            var configData = configDataConfigurator.LoadConfigData(platform);

            if (configData == null)
            {
                return(false);
            }

            // options
            var rootDirectory = ResourceStreamingLocation.FullRootPath;

            if (copyOptions.ClearFolders)
            {
                var platformRootDirectory = Path.Combine(rootDirectory, platform);
                ResourceEditorHelper.ClearDirectory(platformRootDirectory);
            }
            if (copyOptions.ClearOtherPlatforms)
            {
                DeleteOtherPlatformDirectory(ResourceStreamingLocation.FullRootPath, platform);
            }

            // copy config
            var result = configDataConfigurator.CopyConfigToTarget(platform);

            // config asset bundles
            var locationDatas = configData.LocationDatas;

            result &= assetBundleConfigurator.CopyAssetBundlesToStreamingTarget(locationDatas, platform);

            return(result);
        }
        private void MoveAssetBundleToVirtualLocations(List <LocationData> locationDatas, string originDirectory, string targetPlatform, bool clearFolders)
        {
            var virtualStreamingPath = ResourceStreamingLocation.GetVirtualAssetBundleFullRootPath(targetPlatform);
            var virtualServerPath    = ResourceServerLocation.GetVirtualAssetBundleFullRootPath(targetPlatform);
            var virtualOdrPath       = ResourceODRLocation.VirtualFullRootPath;

            if (clearFolders)
            {
                ResourceEditorHelper.ClearDirectory(virtualStreamingPath);
                ResourceEditorHelper.ClearDirectory(virtualServerPath);
                if (targetPlatform == ResourceSettings.PLATFORM_DIRECTORY_IOS)
                {
                    ResourceEditorHelper.ClearDirectory(virtualOdrPath);
                }
            }

            foreach (var locationData in locationDatas)
            {
                var targetDirectory = string.Empty;

                switch (locationData.Location)
                {
                case LocationType.Streaming:
                    targetDirectory = virtualStreamingPath;
                    break;

                case LocationType.Server:
                    targetDirectory = virtualServerPath;
                    break;

                case LocationType.ODR:
                    targetDirectory = Path.Combine(virtualOdrPath, locationData.Id);
                    break;
                }

                if (string.IsNullOrEmpty(targetDirectory))
                {
                    continue;
                }

                if (!Directory.Exists(targetDirectory))
                {
                    Directory.CreateDirectory(targetDirectory);
                }

                foreach (var assetBundleData in locationData.AssetBundleDatas)
                {
                    MoveAssetBundle(assetBundleData.Id, originDirectory, targetDirectory);
                }
            }
        }
        private void MoveAssetBundle(string assetBundleTag, string originDirectory, string targetDirectory)
        {
            var originPath = Path.Combine(originDirectory, assetBundleTag);
            var targetPath = Path.Combine(targetDirectory, assetBundleTag);

            ResourceEditorHelper.MoveFile(originPath, targetPath);

            // manifest
            var manifestName = assetBundleTag + ".manifest";

            originPath = Path.Combine(originDirectory, manifestName);
            targetPath = Path.Combine(targetDirectory, manifestName);
            ResourceEditorHelper.MoveFile(originPath, targetPath);
        }
Beispiel #4
0
        private static void DeleteOtherPlatformDirectory(string rootDirectory, string targetPlatform)
        {
            var otherPlatforms = ResourceEditorHelper.CollectBrotherDirectoryNames(rootDirectory, targetPlatform);

            if (otherPlatforms == null)
            {
                return;
            }

            foreach (var otherPlatform in otherPlatforms)
            {
                var otherPlatformRootDirectory = ResourceSettings.CombinePath(rootDirectory, otherPlatform);
                ResourceEditorHelper.DeleteDirectory(otherPlatformRootDirectory);
            }
        }
Beispiel #5
0
        private void DrawTargetCopy(ResourceEditorPlatformData editorPlatformData)
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            ResourceEditorHelper.WideLabelField("Target Copy: ----", EditorStyles.boldLabel);

            EditorGUILayout.BeginVertical(GUI.skin.box);
            var copyOptions = editorPlatformData.TargetCopyOptions;

            copyOptions.ClearFolders        = EditorGUILayout.Toggle("Clear Folders:", copyOptions.ClearFolders);
            copyOptions.ClearOtherPlatforms = EditorGUILayout.Toggle("Clear Other Platforms:", copyOptions.ClearOtherPlatforms);
            if (GUILayout.Button("Copy to Streaming Assets"))
            {
                EditorApplication.delayCall += () => CopyToTarget(editorPlatformData);
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();
        }
Beispiel #6
0
        private void DrawAssetBundleLocations(ResourceEditorPlatformData editorPlatformData)
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            // location settings
            ResourceEditorHelper.WideLabelField("Locations Settings: ----", EditorStyles.boldLabel);
            _assetBundleScrollPosition = _assetBundleConfigurator.DrawAssetBundleDatas(editorPlatformData.EditorAssetBundleDatas, _assetBundleScrollPosition);


            // one-key set
            EditorGUILayout.BeginHorizontal(GUI.skin.box);
            _oneKeyLocation = (LocationType)EditorGUILayout.EnumPopup("One-key Location:", _oneKeyLocation);
            if (GUILayout.Button("One-key Switch"))
            {
                _assetBundleConfigurator.SwitchAllAssetBundleDataLocations(editorPlatformData.EditorAssetBundleDatas, _oneKeyLocation);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }
Beispiel #7
0
        private void DrawConfigPreview(ResourceEditorPlatformData editorPlatformData)
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            // preview
            ResourceEditorHelper.WideLabelField("Config Preview: ----", EditorStyles.boldLabel);
            _configShowPosition = _configDataConfigurator.DrawConfigData(editorPlatformData.ConfigData, editorPlatformData.ConfigFoldout, _configShowPosition);

            // update
            EditorGUILayout.BeginHorizontal(GUI.skin.box);
            var generateOptions = editorPlatformData.ConfigGenerateOptions;

            generateOptions.CollectSprite = EditorGUILayout.Toggle("Collect Sprite:", generateOptions.CollectSprite);
            if (GUILayout.Button("Update Config Data (in virtual)"))
            {
                EditorApplication.delayCall += () => UpdateConfigData(editorPlatformData);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }
        public bool BuildAssetBundles(List <LocationData> locationDatas, string targetPlatform, ResourceEditorAssetBundleBuildOptions buildOptions)
        {
            var outputPath = ResourceOutputLocation.GetAssetBundleFullRootPath(targetPlatform);

            var options = BuildAssetBundleOptions.None;

            switch (buildOptions.CompressOption)
            {
            case CompressOption.Uncompressed:
                options |= BuildAssetBundleOptions.UncompressedAssetBundle;
                break;

            case CompressOption.ChunkBasedLZ4:
                options |= BuildAssetBundleOptions.ChunkBasedCompression;
                break;
            }

            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }

            if (buildOptions.ClearFolders)
            {
                ResourceEditorHelper.ClearDirectory(outputPath);
            }

            var buildManifest = BuildPipeline.BuildAssetBundles(outputPath, options, buildOptions.BuildTarget);

            if (buildManifest == null)
            {
                return(false);
            }

            MoveAssetBundleToVirtualLocations(locationDatas, outputPath, targetPlatform, buildOptions.ClearFolders);
            return(true);
        }
Beispiel #9
0
        private void DrawAssetBundleBuilds(ResourceEditorPlatformData editorPlatformData)
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            ResourceEditorHelper.WideLabelField("Asset Bundle Build: ----", EditorStyles.boldLabel);

            // options
            EditorGUILayout.BeginVertical(GUI.skin.box);
            var buildOptions = editorPlatformData.AssetBundleBuildOptions;

            buildOptions.ClearFolders = EditorGUILayout.Toggle("Clear Folders:", buildOptions.ClearFolders);
            EditorGUILayout.BeginHorizontal();
            buildOptions.CompressOption = (CompressOption)EditorGUILayout.EnumPopup("Compress Options:", buildOptions.CompressOption);
            buildOptions.BuildTarget    = (BuildTarget)EditorGUILayout.EnumPopup("Build Target:", buildOptions.BuildTarget);
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.EndVertical();

            if (GUILayout.Button("Build Asset Bundles (in virtual)"))
            {
                EditorApplication.delayCall += () => BuildAssetBundles(editorPlatformData);
            }

            EditorGUILayout.EndVertical();
        }