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
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
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Search field in UI Builder's Library has no character limit
- Changing the value in UI Builder by dragging increases it by a few thousand points when reaching the borders of the screen
- ARM64 architecture DLL incorrectly copied instead of x64 when building for Windows x64
- Crash on TypeTreeIterator::GetNode when opening a specific folder
- Crash on WriteSerializedAssetsV2 when (re)entering the Play Mode in a specific project when IEnumerator Start() is used
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.
tomerpeledNG
May 15, 2018 19:01
I also encountering this with Unit 2017.4.1f1 any workaround?
WinddyHe
Dec 04, 2017 13:11
This bug also appears in the version 5.4.5p5