Knowledge Base

Coming soon!
Ask us a question so we can answer it here!

Preprocessor Definitions

Because this plugin is distributed (at least partially) as a DLL, multiple versions of the DLL files are needed to support the different platform-dependent and Unity version-dependent preprocessor definitions.

This plugin was written to maintain backward compatibility wherever possible. The Asset Store version will be built against the latest version of Unity. Later on we plan on doing automated building and testing of older Unity versions, but for now: After purchase, you can contact us to get a version for a specific Unity version or target platform, if the default one doesn’t work.

To get a clearer idea of what versions and special cases we have, here are all the preprocessor definitions we use:

  • UNITY_2017_1_OR_NEWER
  • UNITY_2017_4_OR_NEWER
  • UNITY_2018_1_OR_NEWER
  • UNITY_5_3_OR_NEWER
  • UNITY_5_4_OR_NEWER
  • UNITY_5_4_OR_NEWER
  • UNITY_5_5_OR_NEWER
  • UNITY_5_6_OR_NEWER
  • UNITY_ANDROID
  • UNITY_IPHONE

FAQ

Don’t see your question below? Drop us a line to ask!

What versions of Unity3d is supported? This has been used in most versions since 5.3 all the way up to 2018. Backward compatibility was intentional.
Note: the Asset Store version is built against the latest version of Unity. After purchase, you can contact us to get a version for a specific Unity version for now. See Preprocessor Definitions for more details.
What platforms are supported? Developed and tested on Standalone, iOS and Android platforms. Expected to work on other platforms. There are a few platform-dependent preprocessor defines in the dll. The Standalone After purchase, you can contact us to get a version for a specific platform for now. See Preprocessor Definitions for more details.
How does the plugin handle versioning/multiple platforms? It doesn’t, and doesn’t have to. That’s an application-level detail that would be explained in a tutorial project (on the Roadmap).
How does the plugin handle dependencies between bundles? When you build bundles, Unity tells us what bundles are needed when loading other bundles. This plugin automatically loads the needed bundles for you.
Can a single asset be updated in a bundle without requiring the entire bundle be updated? No, but, if a change is made that affects only a single bundle, only that bundle will be rebuilt by Unity. This is part of Unity’s design.
How should the bundles be hosted? Bundles are downloaded through plain HTTP or HTTPS using Unity’s WWW downloader. Any compatible server will work.
Does the plugin require any special integration with hosting services? Out of the box, this system can use any CDN that keeps the filenames that the bundles were made with, including Amazon S3 & Cloudfront. With only a little effort you can extend it to handle CDNs that require preverification, like Playfab.
What kind of error handling/robustness/security exists in the download system? Significant effort was put into error handling so that the user is always informed of errors, but not unnecessarily. We retry a given download on failure automatically, in case you are switching networks. But if a failure occurs, not only does that bundle get flagged with the error but any bundles that depend on it are told as well, so that the user can be informed.
How are the asset bundles created/managed within the editor/build system? This uses Unity’s method of managing the bundles. The Deduplication system adds some bundles in a very specific way, but the bundles you create in the Editor is what it uses when running.