Exemplo n.º 1
0
    // Use this for initialization
    void Start()
    {
        var baseDir = Application.platform.Equals(RuntimePlatform.WindowsEditor) ?
                      Application.streamingAssetsPath :
                      Application.persistentDataPath;

        var dir = Path.Combine(baseDir
                               , "VideoPaks");

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

        Debug.Log("Asset bundle path: " + dir);

        var folder = Directory.GetDirectories(dir);

        foreach (var f in folder)
        {
            var dirInfo = new DirectoryInfo(f);

            var path = Path.Combine(f, VideopakManager.GetPlatformString(Application.platform));
            path = Path.Combine(path, dirInfo.Name);

            AssetBundleFiles.Add(new FileInfo(path));
        }

        OnAssetBundlesFound(AssetBundleFiles);
    }
    static void BuildAll()
    {
        string rootDir = EditorUtility.SaveFolderPanel("Select output directory", "", "");

        if (string.IsNullOrEmpty(rootDir))
        {
            return;
        }

        foreach (string bundleName in AssetDatabase.GetAllAssetBundleNames())
        {
            AssetBundleBuild buildInfo = new AssetBundleBuild();
            buildInfo.assetBundleName = bundleName;
            buildInfo.assetNames      = AssetDatabase.GetAssetPathsFromAssetBundle(bundleName);
            AssetBundleBuild[] buildMap = new AssetBundleBuild[] { buildInfo };

            string pakDir = rootDir + "/" + bundleName + "/";

            string iosDir = pakDir + VideopakManager.GetPlatformString(RuntimePlatform.IPhonePlayer);
            Directory.CreateDirectory(iosDir);
            BuildPipeline.BuildAssetBundles(iosDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.iOS);

            string androidDir = pakDir + VideopakManager.GetPlatformString(RuntimePlatform.Android);
            Directory.CreateDirectory(androidDir);
            BuildPipeline.BuildAssetBundles(androidDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.Android);

            string osxDir = pakDir + VideopakManager.GetPlatformString(RuntimePlatform.OSXPlayer);
            Directory.CreateDirectory(osxDir);
            #if UNITY_2017_3_OR_NEWER
            BuildPipeline.BuildAssetBundles(osxDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX);
            #else
            BuildPipeline.BuildAssetBundles(osxDir, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSXUniversal);
            #endif
        }
    }
    void BuildAssetBundle(string bundleName)
    {
        string targetFile = EditorUtility.SaveFilePanel("Select output file", _lastOutputPath, bundleName + ".zpak", "zpak");

        if (string.IsNullOrEmpty(targetFile))
        {
            return;
        }

        _lastOutputPath = Path.GetDirectoryName(targetFile);
        _outputLog      = "";

        AssetBundleBuild buildInfo = new AssetBundleBuild();

        buildInfo.assetBundleName = bundleName;
        buildInfo.assetNames      = AssetDatabase.GetAssetPathsFromAssetBundle(bundleName);
        AssetBundleBuild[] buildMap = { buildInfo };

        PakManifest manifest = new PakManifest(_settings.pakName, _settings.author);

        manifest.version      = 1;
        manifest.unityVersion = Application.unityVersion;

        string tmpPath = Path.Combine(FileUtil.GetUniqueTempPathInProject(), bundleName);

        Directory.CreateDirectory(tmpPath);

        if (_settings.icon != null)
        {
            // TODO: verify that it's actually a png
            string iconPath = Path.Combine(Application.dataPath, "../", AssetDatabase.GetAssetPath(_settings.icon));
            File.Copy(iconPath, Path.Combine(tmpPath, "icon.png"));
        }

        string jsonPath = Path.Combine(tmpPath, "videopak.json");
        string json     = JsonUtility.ToJson(manifest, true);

        File.WriteAllText(jsonPath, json);

        for (int i = 0; i < platforms.Length; i++)
        {
            _outputLog += string.Format("building {0}..\n", platformNames[i]);

            string platformStr = VideopakManager.GetPlatformString(platforms[i]);
            string platformDir = Path.Combine(tmpPath, platformStr);
            Directory.CreateDirectory(platformDir);
            BuildPipeline.BuildAssetBundles(platformDir, buildMap, BuildAssetBundleOptions.None, targets[i]);
        }

        _outputLog += string.Format("compressing..\n");

        VideopakManager.CompressPak(tmpPath, targetFile);

        _outputLog += string.Format("build succeeded\n\n");
    }
Exemplo n.º 4
0
    void BuildAssetBundle(VideopakSettings.BundleConfig config, string targetFile)
    {
        if (string.IsNullOrEmpty(targetFile))
        {
            return;
        }

        _lastOutputPath = Path.GetDirectoryName(targetFile);

        AssetBundleBuild buildInfo = new AssetBundleBuild();

        buildInfo.assetBundleName = config.bundleName;
        buildInfo.assetNames      = AssetDatabase.GetAssetPathsFromAssetBundle(config.bundleName);
        AssetBundleBuild[] buildMap = { buildInfo };

        PakManifest manifest = new PakManifest(config.pakName, config.author);

        manifest.version      = 1;
        manifest.unityVersion = Application.unityVersion;

        string tmpPath = Path.Combine(FileUtil.GetUniqueTempPathInProject(), config.bundleName);

        Directory.CreateDirectory(tmpPath);

        if (config.icon != null)
        {
            string iconPath = Path.Combine(Application.dataPath, "../", AssetDatabase.GetAssetPath(config.icon));
            File.Copy(iconPath, Path.Combine(tmpPath, "icon.png"));
        }

        string jsonPath = Path.Combine(tmpPath, "videopak.json");
        string json     = JsonUtility.ToJson(manifest, true);

        File.WriteAllText(jsonPath, json);

        for (int i = 0; i < platforms.Length; i++)
        {
            AddLogText(string.Format("building {0}..\n", platformNames[i]));

            string platformStr = VideopakManager.GetPlatformString(platforms[i]);
            string platformDir = Path.Combine(tmpPath, platformStr);
            Directory.CreateDirectory(platformDir);
            BuildPipeline.BuildAssetBundles(platformDir, buildMap, BuildAssetBundleOptions.None, targets[i]);
        }

        AddLogText(string.Format("compressing..\n"));

        VideopakManager.CompressPak(tmpPath, targetFile);

        AddLogText(string.Format("build succeeded\n\n"));
    }