Search Issue Tracker

Fixed in 5.3.7

Votes

0

Found in

5.3.6p2

Issue ID

822393

Regression

No

Sometimes errors when LoadAssetAsync and UnloadUnusedAsset is called before GameObject asset is instantiated

Asset Loading

-

When calling UnloadUnusedAssets in a script where a LoadAssetAsync has occured but asset not yet used, AssetBundleRequest.asset will sometimes instantiate with error:
The referenced script on this Behaviour is missing!
The referenced script on this Behaviour (Game Object 'TestPrefab') is missing!
GameObject (named 'TestPrefab') references runtime script in scene file. Fixing!

while( true )
{
AssetBundleRequest request = m_assetBundle.LoadAssetAsync("TestPrefab", typeof(GameObject));
yield return request;
yield return Resources.UnloadUnusedAssets();
GameObject g = Instantiate<GameObject>(request.asset as GameObject);
}

Expected result:
The loading process should not fail and error messages should not appear.

Notes:
Appears to happen less on OSX and IOS

Comments (3)

  1. 37c00b905d1f9546665849eb9014f746?d=mm

    g_Laser

    Sep 08, 2018 19:30

    I believe that's by design- request is a local variable, and UnloadUnusedAssets (according to doc) doesn't preserve assets referenced only by local variable on the stack. If you want it to be preserved, make sure to stick it in a member variable of an object.

  2. 8de74d5d2f6f84c4e86c44d1ab101382?d=mm

    tomerpeledNG

    May 15, 2018 19:01

    I also encountering this with Unit 2017.4.1f1 any workaround?

  3. 5fbba79839a40478841bd84e923b221e?d=mm

    WinddyHe

    Dec 04, 2017 13:11

    This bug also appears in the version 5.4.5p5

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.