Search Issue Tracker
Won't Fix
Votes
0
Found in
5.3.3f1
Issue ID
776696
Regression
No
Unity fails to find files in the cache server that were just uploaded
Problem 1
Modifying importer settings that are also being set by Asset Processors produces false cache misses and inconsistent behaviour.
Scenario:
- Project contains an AssetPostprocessor which sets “maxTextureSize = 32” during OnPreprocessTexture (note though that it fails the same way with OnPostprocessTexture)
- User changes Texture Importer settings, including “maxTextureSize = 64”, and hits Apply or calls ADB.WriteImportSettingsIfDirty
Result:
- We ask the Cache Server for this asset (not there)
- Settings get applied
- Asset Processors are run and revert maxTextureSize to 32
- We upload the final asset to the Cache Server (a different one than we asked for, now with maxTextureSize = 32). Even if this final asset actually exists on the Cache Server, we still get a cache miss and upload it again, because initially we asked for something else.
- BUT - in case the requested version of the asset does exist on the Cache Server for some reason (e.g. if we play with asset settings before adding the Asset Processor), we download and use it, ignoring the Asset Processor (at least until the next manual Reimport or scripted Import using the DontDownloadFromCacheServer flag).
Repro steps:
- (Set up empty local cache server, import the test package)
- "TEST/Import Texture/No meta"
- "TEST/Set maxTextureSize to 512” (or modify some settings in the inspector, including maxTextureSize)*
*Note that sometimes the Preprocessor takes some time to kick in
Cache Server Console:
Get Asset Info .../30fb656337cca74c007e6d7de71e73b1
Get Asset Binary .../30fb656337cca74c007e6d7de71e73b1
Start transaction for ...-a4c1b3865f2c135045b573ff265e5a29 -- (sic!)
Put Asset Info ...-a4c1b3865f2c135045b573ff265e5a29 (size 5580)
Put Asset Binary ...-a4c1b3865f2c135045b573ff265e5a29 (size 14624)
End transaction for ...-a4c1b3865f2c135045b573ff265e5a29
---------
Problem 2
If an asset gets imported with its existing .meta data, asset processors are run against it but the dependency hash is only updated after a manual Reimport (or scripted Import using the DontDownloadFromCacheServer flag).
Scenario:
- Project contains an AssetPostprocessor which sets “maxTextureSize = 32” during OnPreprocessTexture (note though that it fails the same way with OnPostprocessTexture)
- User imports a Texture with the .meta file (all default settings)
Result:
- Asset Processors are run, as expected
- Asset is uploaded to Cache Server, as expected
- Manually calling Reimport (or calling Import using the DontDownloadFromCacheServer flag) reimports the asset with the same settings, but suddenly the dependency hash is now updated (and re-cached)
Repro steps:
- (Set up empty local cache server, import the test package)
- "TEST/Import Texture/Template meta"
- "TEST/ADB/Import (Skip CS)" (or manually Reimport)
Won't Fix:
- Preprocessor can change the metafile which is part of the hash.
- Preprocessor runs as part of the actual import operation.
- So we don't always have correct hash when we ask the cache server.
- This can't be fixed easily in the current architecture.
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- UI Overlay Image gets darker on each Camera when multiple Cameras are used
- Assertion failed on expression: 'scriptedImporterClass == SCRIPTING_NULL error when opening the standalone profiler window
- Disabled assets in Import Unity Package window aren't tracked but count as being selected by user
- [Windows] Crash on GetManagerFromContext when video is playing and creating High Definition 3D Projects after FMOD failed to switch back to normal output Error appeared
- GC Alloc produced when adding items to MultiColumnListView with Auto Assign Binding
Add comment