Giter Club home page Giter Club logo

assetbundles-browser's Introduction

Unity Asset Bundle Browser tool

Note: This tool is not a supported utility.

This tool enables the user to view the content of built AssetBundles (on the "Inspect" tab). This can be useful, but viewing extremely large AssetBundles can lead to slow performance and memory issues.

The "Configure" tab offers basic functionality for assigning Assets and Scenes to bundles, similar to using the AssetBundle control at the bottom of the Inspector.

The "Build" tab offers basic functionality to assist in setting up a call to BuildPipeline.BuildAssetBundles().

Alternatives

It is recommended to use the Addressables package to define and build AssetBundles, rather than the Asset Bundle Browser.

UnityDataTools is an alternative way to view the content of built AssetBundles.

Installation

To install the Asset Bundle Browser:

  • Open the Unity Package Manager in your Project (menu: Windows > Package Manager).
  • Click the + (Add) button at the top, left corner of the window.
  • Choose Add package from git URL…
  • Enter https://github.com/Unity-Technologies/AssetBundles-Browser.git as the URL
  • Click Add. The Package Manager downloads and installs the package’s “master” branch.

Once installed it will create a new menu item in Window->AssetBundle Browser.

Full Documentation

See the included project manual page.

assetbundles-browser's People

Contributors

alexlian avatar alffanclub avatar andymunity avatar artofcode avatar brettkercher avatar coeur avatar hiroki-o avatar hozesio avatar jakubsmaga avatar liortal53 avatar martingram avatar morganmoon avatar obsessivenerd avatar paulb-unity avatar qxsoftware avatar skowronskiandrew avatar stephen-palmer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

assetbundles-browser's Issues

Multiscene lightmapping creates a recursive dependency on the AssetBundle system

Multiscene lightmapping creates a recursive dependency on the AssetBundle system.

  1. What happened
    Multiscene lightmapping creates a recursive dependency on the AssetBundle system.

  2. How we can reproduce it using the example you attached
    Open the scene SceneLighting, add the scene Scene1, add the scene Scene2.
    Open the lighting tab and press "Generate Lighting" button
    Save scenes and project
    Open the Asset Bundles browser and check the bundles dependencies. There is a recursive dependency between all the bundles!!!

Have a look to the bug 965309, there is a repro project.

Bundle Data Source setting automatically resets to "Default(Built-in)" on starting play mode

I'm using AssetBundles-Browser with AssetBundleGraphTool, and therefore, I'm choosing "AssetBundles(GraphTool)" for Bundle Data Source setting. But it automatically changes to "Default(Built-in)", when I start play mode on Unity Editor.

Environment: Unity 5.6.2p1 on Mac OS X (Sierra).

As I looking into the source code, the ABDataSource value is retained in the AssetBundleModel.Model as static variable, so it will automatically resets to null on starting play mode.

https://github.com/Unity-Technologies/AssetBundles-Browser/blob/master/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleModel/ABModel.cs#L19

false reporting asset duplication

material a use texture b, cube c use material a, give material a and cube c each a unique bundle name, then save project, then assetbundle browser will report texture b will cause duplication in memory.

Error while building when using Unity 2017.1b8

Hello,

First of all, great tool thank you ! I'm having some issues when using Unity 2017.1b8 with version 0.2 of AssetBundles Browser. The editor loads perfectly and all is good until I click on Build having set my Output Path to AssetBundles and with Copy to SteamingAssets checked in.

assetbundlesbrowser

Any idea why such issues would arise ?

Sorting AssetBundles by size

Sorting AssetBundles by size will make it easy see which AssetBundles contain a lot of data and if and where they should focus on optimising. Additionally if assets are mistakenly added to a Bundle, then this would allow it to be seen and corrected.

Error when open project with VS2013

ArgumentException: Value does not fall within the expected range.
SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit.LanguageOf (SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit unit)
SyntaxTree.VisualStudio.Unity.Bridge.CompilationUnit.CompilationUnits ()
SyntaxTree.VisualStudio.Unity.Bridge.ProjectSystem.UnitySolutionBuilder..ctor ()
SyntaxTree.VisualStudio.Unity.Bridge.ProjectSystem.UnitySolutionBuilder.CreateSolutionFromAssetDatabase ()
SyntaxTree.VisualStudio.Unity.Bridge.ProjectFilesGenerator.GenerateProject ()
SyntaxTree.VisualStudio.Unity.Bridge.ProjectFilePostprocessor.OnPreGeneratingCSProjectFiles ()
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.AssetPostprocessingInternal.OnPreGeneratingCSProjectFiles () (at C:/buildslave/unity/build/Editor/Mono/AssetPostprocessor.cs:61)
UnityEditor.VisualStudioIntegration.SolutionSynchronizer.Sync () (at C:/buildslave/unity/build/Editor/Mono/VisualStudioIntegration/SolutionSynchronizer.cs:189)
UnityEditor.VisualStudioIntegration.SolutionSynchronizer.SyncIfNeeded (IEnumerable`1 affectedFiles) (at C:/buildslave/unity/build/Editor/Mono/VisualStudioIntegration/SolutionSynchronizer.cs:178)
UnityEditor.SyncVS.PostprocessSyncProject (System.String[] importedAssets, System.String[] addedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromAssetPaths) (at C:/buildslave/unity/build/Editor/Mono/SyncProject.cs:177)
UnityEditor.AssetPostprocessingInternal.PostprocessAllAssets (System.String[] importedAssets, System.String[] addedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromPathAssets) (at C:/buildslave/unity/build/Editor/Mono/AssetPostprocessor.cs:31)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

Build one Asset Bundle

I have 10 Asset Bundles and change one resource in the one Asset Bundle which has no dependencies. Is any way to rebuild only one asset bundle, but not all 10? Do you plan to add this feature?

Raw image dependency calculations missed

bug from the forum...
the test was:

Bundle A contains: PNG set as Sprite.
Bundle B contains: A prefab with a RawImage, using the image in Bundle A.

The image in Bundle A gets duplicated also in Bundle B. The Asset Bundle Explorer doesn't say it, although if you look at the size of the AssetBundle you can notice that the image has been duplicate din both Bundles.

Compressed / resized / downloaded asset size would more useful than raw disk size

Currently the browser is displaying the size of the asset on disk which is not representative of the final size the user will get.

For example, on a texture this is the non-resized PSD which can be 10-20MB instead of the actual 100kB compressed and resized texture after import settings are applied.

It would be more helpful to show the resized and compressed file sizes that will actually be downloaded in the asset bundle. Showing the final asset bundle size (or a close approximation) would make optimization much easier.

Configure View: "null texture passed to GUI.DrawTexture" Warnings

Seems to only happen with certain Textures. No image icons are showing and the console is spammed with warnings:

"null texture passed to GUI.DrawTexture"

Caused by:

AssetListTree -> CellGUI -> GUI.DrawTexture(iconRect, item.icon, ScaleMode.ScaleToFit);

simple null check does the job:

if (item.icon != null) GUI.DrawTexture(iconRect, item.icon, ScaleMode.ScaleToFit);

Error inspecting second asset bundle

I seam to have a 100% repro, pretty fatal error.

After I build bundles, I go to the Inspect tab. Selecting the first bundle correctly shows its contents. However, when I click on a second bundle, I get this fatal error repeated multiple times:

"The AssetBundle xxx can't be loaded because another AssetBundle with the same files is already loaded"

I am using Unity 5.6.0b8, AssetBundles-Browser hash d0f494d, and the hack for GetRowsFromIDs I mentioned in Issue #1.

I have attached a screen shot, video, and sample project (video is inside sample project.

inspecterror

BundledSheets.zip

references runtime script in scene file. Fixing!

create a very simple script, attach to a empty gameobject. storage as prefab. build this prefab as bundle. use AssetBundle Browser to Inspect this bundle. the log console report "GameObject (named 'GameObject') references runtime script in scene file. Fixing!" . a treeview in inspect view appeared and disappeared after log. i think this is a bug. this is a very simple script and do nothing. unity3d 2017.2.0f3

The project *projectname*.Editor cannot be added to the solution

Imported the AssetBundles-Browser-Master folder into my project and got the error message in Visual Studio 2017:

image

The project 'projectnamehere.Editor' cannot be added to the solution because a project with the same project filename already exists in the solution.

This error comes up, if you press OK it comes up a second time. After that, VS2017 takes you to your code and everything appears fine, except autocompleting Unity stuff no longer works in any Editor scripts.

If I delete the folder and restart VS2017 everything is fine again

Release Cadence

Hi,

Just wondering what the release cadence was for this package. Last Release was in March.

How do I set mainAsset?

I don't see any reference to the mainAsset property. How else could I get a reference to my prefab in the assetbundle?

Unable to rename asset bundles on Mac OSX

New bundles aren't created in naming mode (it auto-assigns it "newbundle..."), and right-click Rename also doesn't seem to allow the user to rename a bundle.
OS, Editor Version: Mac OSX 10.12.6, 2017.2.0b5
Prerequisite(s): a test project with the Asset Bundle browser source code in it, some test assets
Steps to Reproduce:

  1. Right-click somewhere in the Asset Bundle Browser.
  2. Select Add new bundle.
  3. Right click your new bundle and select Rename.

Moving two asset bundles to the same level with the same name replaces one of them, causes strange behavior

Weird stuff happens after you do it too.
OS, Editor Version: Any OS and Editor (greater than 5.6) can reproduce this.
Prerequisite(s): a test project with the Asset Bundle browser source code in it, some test assets
Steps to Reproduce:

  1. In the Asset Bundle Browser create the following structure:
    screen shot 2017-11-21 at 12 50 24 pm
    Make sure there are at least one or two assets in both the newbundle folder and newbundle bundle.
  2. Drag the newbundle bundle from out of the newbundle1 folder. This will trigger some errors (AssetBundleBrowser: Bundle 'new bundle' has a name conflict..., NullReferenceException: Object Reference not set...), but ignore that and keep dragging it out until the newbundle folder disappears.
    -- Notice that the bundle has replaced the bundle folder as well as its contents.
    Steps to Reproduce Weird Stuff:
  3. Right-click somewhere in the window and click Reload all Data.
  4. Right-click in the window and click Add new bundle.
  5. Create a new prefab and drag it into the bundle browser.

4.x support?

Is it possible to port this tool to Unity4.x for the legacy projects?

Error on installing AssetBundles browser through Package Manager on Unity 2018

error CS2001: Source file Packages/com.unity.assetbundlebrowser/Tests/Editor/ABModelTests.cs' could not be found error CS2001: Source file Packages/com.unity.assetbundlebrowser/Tests/Editor/AssetBundleRecordTests.cs' could not be found
error CS2001: Source file Packages/com.unity.assetbundlebrowser/Tests/Editor/Util/ABModelUtil.cs' could not be found error CS2001: Source file Packages/com.unity.assetbundlebrowser/Tests/Editor/Util/TestUtil.cs' could not be found

Assembly has reference to non-existent assembly 'Unity.AssetBundleBrowser.Editor' (Packages/com.unity.assetbundlebrowser/Tests/Editor/Unity.AssetBundleBrowser.Editor.Tests.asmdef)

I've tried deleting the package (in Library/Unity...) from the local cache folder. Also tried removing and reinstalling from Package Manager UI.

If I however create a new empty project everything works as expected.

Running MacOS High Sierra 10.13.4, on Unity 2018.2.0b3

Compiler errors

Hi,
I get this & other compiler errors,

Assets/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleIssuesWindow.cs(26,21): error CS0122: `UnityEditor.IMGUI.Controls.TreeView' is inaccessible due to its protection level

I am using Unity 5.5.1f1 on Windows 10 & my platform is Android.

Refresh button keeps selected bundle highlighted

Kind of a minor (but scary) UI issue. If you hit the refresh button while a bundle is selected, the bundle will stay highlighted making it appear like all of the assets in that bundle have mysteriously gone missing.
OS, Editor Version: Mac OSX 10.12.6, 2017.2.0b5
Prerequisite(s): a test project with the Asset Bundle browser source code in it, some test assets
Steps to Reproduce:

  1. Open your test project in the Editor.
  2. Open the Asset Bundle Browser window (Window >> Asset Bundle Browser).
  3. Right click somewhere in the Asset Bundle Browser and select Add new bundle.
  4. Drag your test assets from the Project window to the new bundle.
  5. While your new bundle is selected (you should see your test assets in it in the window to the right), click the refresh button.

NullReferenceException

NullReferenceException: Object reference not set to an instance of an object
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.

There seems to be a file access permission problem with Library/AssetBundleBrowserBuild.dat

sprite atlas dependency miscalculation

From the forum https://forum.unity.com/threads/asset-bundle-browser-initial-release.465766/#post-3348577

Hi, I find that the asset bundle browser pulled wrong assets in AssetList sometimes.
For example, I set a SpriteAtlas to a bundle "spritesatlas/shop", then it show warning that there are duplicated dependency, but I am sure that that SpriteAtlas don't contain those sprites. And the log report also don't contains those sprites. Those duplicated Sprites are in another bundle.

Screen Shot 2018-01-05 at 5.35.17 PM.png

Bundle Name: shop
Compressed Size:116.6 kb
Uncompressed usage by category:
Textures 1.3 mb 98.6%
Meshes 0.0 kb 0.0%
Animations 0.0 kb 0.0%
Sounds 0.0 kb 0.0%
Shaders 0.0 kb 0.0%
Other Assets 10.1 kb 0.8%
Levels 0.0 kb 0.0%
Scripts 0.0 kb 0.0%
Included DLLs 0.0 kb 0.0%
File headers 7.6 kb 0.6%
Complete size 1.3 mb 100.0%

Used Assets and files from the Resources folder, sorted by uncompressed size:
1.0 mb 78.9% Built-in Texture2D: sactx-1024x1024-fmt36-2b899810486a6337147d95e51b768f32
256.1 kb 19.7% Built-in Texture2D: sactx-256x1024-fmt36-2b899810486a6337147d95e51b768f32
1.7 kb 0.1% Assets/PH/Sprites/UI/Shop/icon_shopItem_gems.png
1.5 kb 0.1% Assets/PH/Sprites/UI/Shop/icon_shopItem_coins.png
1.5 kb 0.1% Assets/PH/SpriteAtlas/Shop.spriteatlas
0.7 kb 0.1% Assets/PH/Sprites/UI/Shop/icon_shopframe_gift.png
0.7 kb 0.1% Assets/PH/Sprites/UI/Shop/icon_shopframe_c.png
0.7 kb 0.1% Assets/PH/Sprites/UI/Shop/icon_shopframe_b.png
0.7 kb 0.1% Assets/PH/Sprites/UI/Shop/icon_shopframe_a.png
0.5 kb 0.0% Assets/PH/Sprites/UI/Shop/icon_shop_gemsCoins.png
0.5 kb 0.0% Assets/PH/Sprites/UI/Shop/icon_popup_banner.png
0.5 kb 0.0% Assets/PH/Sprites/UI/Shop/icon_shop_new.png
0.4 kb 0.0% Assets/PH/Sprites/UI/Shop/icon_shop_gems_bg.png
0.4 kb 0.0% Assets/PH/Sprites/UI/Shop/icon_shop_coins_bg.png
0.3 kb 0.0% AssetBundle Object

Alert error after build assetbundle

Console alert an error after build assetbundle. I can find the new created assetbundle file in target folder, but whats the error means? It looks like GUI problem, and I cant find "C:/buildslave/unity/" path in my computer.
I work on Windows10(bit64) Unity2017.3.0f3(bit64).

InvalidOperationException: Operation is not valid due to the current state of the object System.Collections.Stack.Pop () (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections/Stack.cs:329) UnityEngine.GUILayoutUtility.EndLayoutGroup () (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUILayoutUtility.cs:323) UnityEngine.GUILayout.EndScrollView (Boolean handleScrollWheel) (at C:/buildslave/unity/build/Runtime/IMGUI/Managed/GUILayout.cs:455) UnityEditor.EditorGUILayout.EndScrollView () (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:8075) UnityEngine.AssetBundles.AssetBundleBuildTab.OnGUI (Rect pos) (at Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs:260) UnityEngine.AssetBundles.AssetBundleBrowserMain.OnGUI () (at Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleBrowserMain.cs:113) System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115) UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:295) UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:288) UnityEditor.HostView.InvokeOnGUI (Rect onGUIPosition) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:255)
1

Namespace Conflict

I want to use AssetBundles-Browser tool in my Unity project. When I import this folder into project asset folder and open any script in Visual Studio, it alert an error that MyProjectName.Editor namespace has already exist ( I have some script file in Asset/Editor folder). How should I approach this problem?

Dependencies seem to be "Editor-based" and therefore misleading

TL;DR: It seems that the dependency-tree used by AssetBundles-Browser is based on "editor-mode" resulting in plenty of misleading dependencies being reported by the tool because those dependencies would never exist in an actual build because they are "editor-only".

I'm kind of new to using AssetBundles so I may be missing something but I tried to use this tool to cleanup our AssetBundles and noticed something that seems to make the tool unusable for its standard use case:

We had some ScriptableObjects defining meta-data for scenes and had editor-only properties (using conditional compilation based on UNITY_EDITOR) referencing the SceneAssets for convenience (we then store those references by name as strings to be used during runtime). As the references are editor-only, the actual scenes should never be included in a build. However, it very much seemed as if AssetBundles-Browser included those references, basically resulting in everything from those scenes being auto-included in bundles that actually only had the ScriptableObjects included. For now I have commented those properties out as a workaround.

However, when trying to do a build, Unity complained about LightingData.asset being included in several AssetBundles as an editor-only file. The only reason it was included was because AssetBundles-Browser shows these files as being auto-included and giving me warnings because it would include them in multiple bundles (even though those actually would never really be included in an AssetBundle-build because they are editor-only files).

Finally, the tool also has some scenes "auto-included" in other bundles, resulting in scenes and assets being mixed in my "all-shared"-bundle that I use for assets that the tool tells me are included in many other bundles.

I haven't quite figured out why that specific scene was included; it might be that Unity still had the reference from the ScriptableObject even after I had commented the actual code out.

Documentation about build information is lacking meaningfull details

The documentation says:

"Advanced Settings
Compression - Choose between no compression, standard LZMA, or chunk-based LZ4 compression.
Exclude Type Information - Do not include type information within the asset bundle
Force Rebuild - Rebuild bundles needing to be built. This is different than “Clear Folders” as this option will not delete bundles that no longer exist.
Ignore Type Tree Changes - Ignore the type tree changes when doing the incremental build check.
Append Hash - Append the hash to the asset bundle name.
Strict Mode - Do not allow the build to succeed if any errors are reporting during it.
Dry Run Build - Do a dry run build.
"

But I have no idea what's the difference if for example hashes are appended or not?
"Ignore Type Tree Changes" the explaination isn't helping me to understand and decide if I should set it or not. What's the Type Tree anyway?

[Suggestion] different default folder name

The default folder name of the asset bundle export is currently based on the BuildTarget enum which resides in the Editor namespace.
If we were to upload these folders directly, we could not create a valid assetbundle url at runtime because BuildTarget is unavailable.

My suggestion would be using the RuntimePlatform enum as folder name.
The user can always set their own folder name in the build tab, but it would be nice if the RuntimePlatform would be the default folder name instead of BuildTarget.

ShaderVariants?

I pack a shaderVariantCollection object and all relevent shaders into one assetbundle.
Is it possible to check which variants ware actually generated using assetBundleBrowser?

`Is auto included in bundle(s) due to parent(s)` does not refresh when creating new assets

I have such file structure under Assets:

Content/
- Data/
- - Environment/
- - Settings/

There are some assets under both Environment and Settings (ScriptableObject instances in this case).

When i drag Data directory into AssetBundle window it properly create new bundle and includes all assets in that directory (also the directory itself).

Now when i add new asset under Settings directory it should be visible in the bundle created from Data directory, but it's not. Hitting refresh button inside AssetBundle window also does nothing in this case.

Restarting Unity - however - force the refresh properly and after restart all newly created assets are visible in the bundle created from Data directory.

So much null

When opening the window I get a slew of null exceptions:

capture_07032017_155321

Build Tab Settings Keeps Resetting

The AssetBundles Browser Window, Build Tab settings are not saved.

The Build Target and the Output Path and all the advanced settings resets after closing the window and opening it again. Is this a bug or is saving not yet implemented?

Corrupt AssetBundle Browser Database?

I dragged in a folder with only scripts into the assetbundle browser from the project tab. After that, the assetbundle browser is empty and spams the following message:

Where is the assetbundle listview model saved? Can I delete it and start over? I can't seem to find it in the project folder.

NullReferenceException: Object reference not set to an instance of an object UnityEngine.AssetBundles.AssetBundleModel.BundleDataInfo.RefreshDupeAssetWarning () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleModel/ABModelBundleInfo.cs:473) UnityEngine.AssetBundles.AssetBundleModel.BundleInfo.RefreshMessages () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleModel/ABModelBundleInfo.cs:184) UnityEngine.AssetBundles.AssetBundleModel.BundleDataInfo.Update () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleModel/ABModelBundleInfo.cs:435) UnityEngine.AssetBundles.AssetBundleModel.BundleFolderInfo.Update () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleModel/ABModelBundleInfo.cs:789) UnityEngine.AssetBundles.AssetBundleModel.Model.Update () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleModel/ABModel.cs:55) UnityEngine.AssetBundles.AssetBundleManageTab.Update () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleManageTab.cs:78) UnityEngine.AssetBundles.AssetBundleBrowserMain.Update () (at Assets/Standard Assets/AssetBundleBrowser/UnityEngine.AssetBundles/Editor/AssetBundleBrowser/AssetBundleBrowserMain.cs:101) System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222) Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232) System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115) UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:285) UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:278) UnityEditor.HostView.SendUpdate () (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:354) UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at C:/buildslave/unity/build/Editor/Mono/EditorApplication.cs:127)

EDIT:
Looks like that information is stored in the .meta files. I removed the affected meta files and the assetbundle browser was able to load correctly.

Different Serialization Layout

A script behaviour (script unknown or not yet loaded) has a different serialization layout when loading. (Read 32 bytes but expected 164 bytes)
Did you #ifdef UNITY_EDITOR a section of your serialized properties in any of your scripts?

Can't give more information as I do not really know what this error exactly means and how I could help to track it down.

AssetBundleBrowser: Bundle name 'assets$resources$cube.prefab' contains a period.

AssetBundleBrowser: Bundle name 'assets$resources$cube.prefab' contains a period. Internally Unity keeps 'bundleName' and 'variantName' separate, but externally treat them as 'bundleName.variantName'. If a bundleName contains a period, the build will (probably) succeed, but this tool cannot tell which portion is bundle and which portion is variant.
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

My workflow needs to create the asset bundle with the period that will show the full path so I can directly understand the root content of the asset bundle. I hope this fix bug can be fixed so that I can use this tool to see the details of the asset bundle

Unable to overwrite AssetBundles

[Exception] IOException: Could not create file "<bundle>.manifest" or "Assets/StreamingAssets<bundle>.manifest". File already exists.
(wrapper remoting-invoke-with-check) System.IO.FileInfo:CopyTo(string,bool)
File.InternalCopy() /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/File.cs:122

FileInfo.CopyTo() /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/io/fileinfo.cs:316

AssetBundleBuildTab.DirectoryCopy() Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs:381
379: {
380: string temppath = Path.Combine(destDirName, file.Name);
-->381: file.CopyTo(temppath, false);
382: }

AssetBundleBuildTab.ExecuteBuild() Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs:362
361: if(m_CopyToStreaming.state)
-->362: DirectoryCopy(m_UserData.m_OutputPath, m_streamingPath);
363: }

EditorApplication.Internal_CallDelayFunctions() C:/buildslave/unity/build/Editor/Mono/EditorApplication.cs:118

It might be on purpose that the browser can't overwrite existing bundles - in this case comment and close the issue. However, I would really have expected it does, as a bundle with the same name, when rebuild for the same target platform is more or less an update of the same bundle.

Improvements to Inspector

Background

One of the main use cases for a tool like AssetBundles-Browser on my project is to help designers understand what is included in the AssetBundles they create. We put large portions of our game's UI into asset bundles as prefabs. This allows us to have a very customizable game through DLC without having to go through app store submissions.

Generally, UGUI is easy enough to use that we have designers (non-engineers) build screens. What is difficult for them, is to understand what assets get included in the final bundle through automatic dependency tracking and through sprite sheeting. Often, a designer will use a small image in their UI, not realizing that the image is on a large shared sprite sheet. This results in what should be a small asset bundle being surprisingly small.

This is an honest mistake on their part and one they should fix. However, without AssetBundles-Browser, the process for the designer to track down their mistake is very difficult. They either go through their prefab component by component checking sprite tag settings, or parse the cryptic asset bundle build output in the editor log.

AssetBundles-Browser is the perfect tool to allow my designers to understand the content of the bundles they author.

Problem

Right now, the most useful section of the bundle inspector for my purpose is the Preload Table. However, it does a bad job of organizing the content. In the following screenshot, there is a single prefab inside the bundle. The prefab has two image components that reference images on two different sprite sheet. However, the UI doesn't make this very obvious:

spritesheetsuggestion

Suggestions

First: Differentiate included Objects vs object contents. For example, the Prefab is a unity Object that is included. So are the two sprite sheets. The Unity object has contents (the various components that makeup that object hierarchy). The spritesheets each have contents, the images included in them.

Second: Is there anything you can do to estimate the size of asset in the bundle? For example, one of the spritesheets is 64x64 (tiny) and another is 2048x2048 (much larger). It would be great to see KB / MB here.

altering global gui style

right now there are some spots where the browser alters global style which can cause other windows to draw incorrectly.

Platform transition

When I start to build bundles for different platform (For example: I am most of the time on Android, and often should build bundles for iOS) editor initiates platform changing and optimization for every single asset in the entire project. This takes a lot of time in big projects. I know I can use cache server, but it add overhead for the editor and it still seems waste of resources to convert (download from cache) all the assets. Is there any chance to trigger "platform changing" procedure only for CHANGED assets that are actually INCLUDED in any asset bundle?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.