Search Unity

Question Why do my bundles have Missing(Object) in the preload table?

Discussion in 'Asset Bundles' started by lejean, Oct 19, 2020.

  1. lejean

    lejean

    Joined:
    Jul 4, 2013
    Posts:
    392
    I'm implementing addressables and installed the asset bundle browser to inspect the bundles.

    I just put a material in a single bundle and the preload table contains loads of Missing (object).
    What does this mean?

    missing.png

    Also if I put that same material together with the textures in a bundle, the preload table contains duplicate textures and also missing objects.
    duplicate.png

    Is this intended?
    Do I ignore this?
    Does addressable take care off this automatically?
     
  2. CameronND

    CameronND

    Joined:
    Oct 2, 2018
    Posts:
    89
    I am seeing the same thing. Does anyone have an explanation?
     
  3. lejean

    lejean

    Joined:
    Jul 4, 2013
    Posts:
    392
    Still interested in this answer, now that I'm revisiting this I got bundles that have thousands of Missing (Object)

    2021-08-13 18_44_30-Window.png
     
  4. lejean

    lejean

    Joined:
    Jul 4, 2013
    Posts:
    392
    Come on, anyone from unity that can weigh in on this??
     
  5. Tha_Fuerst

    Tha_Fuerst

    Joined:
    Oct 19, 2018
    Posts:
    8
    Bump.

    Also experiencing this issue. AssetBundle inspector is nearly unusable because the editor stalls everytime I want to scroll in that huge list full of Missing Objects.
     
  6. luistorres_emvenci

    luistorres_emvenci

    Joined:
    Aug 23, 2021
    Posts:
    16
  7. Nullrigin

    Nullrigin

    Joined:
    Nov 3, 2020
    Posts:
    6
    Anyone found out anything?
     
  8. AndrewSkow

    AndrewSkow

    Unity Technologies

    Joined:
    Nov 17, 2020
    Posts:
    91
    This may be entirely an issue with the Asset Bundle browser, which was a tool that was created prior to Addressables and which unfortunately cannot handle AssetBundles with a lot of objects (because it tries to populate the UI with too many entries).

    Normally it should not be necessary to inspect things at the preload table level. This is some internal book keeping required by Unity. It tracks all the objects that will be loaded in conjunction with loading each root object (e.g. the material, prefab etc etc). Those objects can actually be "built-in" shaders and other objects, or objects inside other AssetBundles.

    I suspect that the UI is trying to resolve the references back to objects in a way that doesn't work for all object types, perhaps built-in objects show up as Missing? So unless you are observing that something is actually broken i suspect this is more of a UI limitation than actual missing data.

    If you feel like digging in to understand a bit more about how things work then it is possible to look at the raw info of the references by expanding the AssetBundle with UnityDataTools (or WebExtract / Binary2Text), that would show exactly what those "Missing objects" entries point to.

    As an example small Preload table:

    Code (CSharp):
    1.   m_PreloadTable  (vector)
    2.         size 2 (int)
    3.         data  (PPtr<Object>)
    4.             m_FileID 1 (int)
    5.             m_PathID 8028051458226250111 (SInt64)
    6.         data  (PPtr<Object>)
    7.             m_FileID 0 (int)
    8.             m_PathID 7395359030061443441 (SInt64)
    9.  
    The first object has m_FileID > 0, so that means it is inside another file. There is a listing of the external files at the of the file. If the filename has a name like "CAB-..." then it is inside another AssetBundle.

    The second object in the example above is inside the same AssetBundle file, e.g. the ID 7395359030061443441 will be found assigned to an object directly in that same UnityDataTools/binary2text dump.
     
    senghoff and lejean like this.