• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by themalakarraja · Nov 14, 2018 at 02:19 PM · c#unityeditorassetbundleunitypackageautomation

Recursive multiple unity package import and asset bundle build that works in unity 5.6, 2017 and 2018.1.6 does not work in unity 2018.2.X

Hello, I'm working on an editor automation script, that allows import multiple unity packages and then builds android asset bundles of all. I'm doing this by importing one unity package and then building asset bundle available in the unity package and then repeating this recursively for all. This script is made for upgrading our unity packages of asset bundles to the desired unity version. Automation script is below:

 using System.IO;
 using System.Linq;
 using UnityEditor;
 using UnityEngine;
 
 public class UnityPackageHelper
 {
    static int successCount = 0;
    static string[] files;
    static string android_ab_path = Application.dataPath + "/android";
 
 #if UNITY_EDITOR
    [MenuItem("Tools/Unity Packages/Import Folder")]
    public static void ImportPackagesFromFolder()
    {
        string pPath = "";
        successCount = 0;
        pPath = EditorUtility.OpenFolderPanel("Select Package Path", Path.GetDirectoryName(Application.dataPath), "");
 
        if (!string.IsNullOrEmpty(pPath))
        {
            files = Directory.GetFiles(pPath, "*.unitypackage");
 
            if (files != null && files.Length > 0)
            {
                AssetDatabase.importPackageCompleted += PackageImportSuccess;
                AssetDatabase.importPackageFailed += PackageImportFail;
                Directory.CreateDirectory(android_ab_path);
                PackageImport();
            }
        }
    }
 #endif
 
    static void PackageImport()
    {
        if (successCount == files.Length)
        {
            AssetDatabase.importPackageCompleted -= PackageImportSuccess;
            AssetDatabase.importPackageFailed -= PackageImportFail;
            Debug.Log("Import complete. " + successCount + " of " + files.Length + " packages successfully imported.");
        }
        else
        {
            string packagePath = files[successCount];
            AssetDatabase.ImportPackage(packagePath, false);
        }
    }
 
    static void PackageImportSuccess(string packageName)
    {
        successCount++;
        Debug.Log("Completed import of package '" + packageName + "'");
        BuildAssetBundle();
    }
 
    static void BuildAssetBundle()
    {
        string abname = AssetDatabase.GetAllAssetBundleNames().Except(
                AssetDatabase.GetUnusedAssetBundleNames()).ToArray()[0];
 
        BuildPipeline.BuildAssetBundles(android_ab_path, BuildAssetBundleOptions.None, BuildTarget.Android);
        AssetDatabase.DeleteAsset(GetAssetBundlePrefabPath(abname));
        PackageImport();
    }
 
    public static string GetAssetBundlePrefabPath(string assetBundleName)
    {
        foreach (var assetGuid in AssetDatabase.FindAssets(""))
        {
            string assetPath = AssetDatabase.GUIDToAssetPath(assetGuid);
            string bundleName = AssetImporter.GetAtPath(assetPath).assetBundleName;
            if (assetBundleName.Equals(bundleName))
            {
                return assetPath;
            }
        }
        return "";
    }
 
    static void PackageImportFail(string packageName, string errorMessage)
    {
        Debug.Log("Failed to import package '" + packageName + "' with error message '" + errorMessage + "'.");
    }
 }



The script is written in Unity version 5.6.3 and all unity packages exported from Unity 5.6.3. It is working properly in Unity 5.6.3, Unity 2017 and Unity 2018.1.6. But it not working properly in Unity version 2018.2.X.

The issue is the first unity package gets imported and build successfully but the next unity package gets imported but does not go to the build step.

In my script, I have put the build asset bundle code in AssetDatabase.importPackageCompleted callback. The first time the callback gets called and the build executes, but the second time it does not get called and my automation script stops.

Now I am not able to understand when I am using basic unity editor APIs and the same script works in unity 5.6, 2017 and 2018.1.6, why doesn't it work in unity 2018.2.X? Are the base APIs changed in unity 2018.2.X?

I have shared the script and sample unity packages for testing and debugging. Guys, please help I am stuck with this issue since past 1 week.

Thanks in advance.

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image hexagonius · Nov 14, 2018 at 07:29 PM 0
Share

And you're not getting a PackageImportFailed either?
Is the console showing anything at all?
If you set break points, does it not return at any point at all?

avatar image themalakarraja hexagonius · Dec 05, 2018 at 09:28 AM 0
Share

Hey Hexagonius, Thanks for your reply and apologized for the delay. I'm not getting either importPackageFailed or importPackageCompleted. Nothing is showing in the console and I put breakpoint PackageImportSuccess, but it doesn't work. You can try to create some primitive object exports from Unity 5 then import above script in 2018.2 and choose the folder by click $$anonymous$$enuItem.

Hope to see you soon. Thanks!

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

565 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

[CreateAssetMenu] For inherited ScriptableObjects 1 Answer

Unity 2D -Reflecting a linerenderer 2 Answers

Unity Editor script arrows to display a variable 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges