What am I suppose to use instead of Unity Resources if I have to load and unload sprites at runtime? Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Does Unity load the texture data of all the sprites in a sprite array property?How does Unity load asset bundle dependencies and how can they be accessed?How heavy is a scene load in Unity assuming all referenced objects are in memory?Unity3d Resources.LoadAll<Sprite> empty arrayPerformance Optimization for 2D game developed using Unity 3D game engineAre loading screens more important than they appear to be?How do I run code for a period of time and then return to normal behavior?Unity: SpritePacker Atlas with Dynamic AccessLoading encounters and collisions questions within 2DHow should I organize 2D sprites?

What exactly is a "Meth" in Altered Carbon?

What LEGO pieces have "real-world" functionality?

How to react to hostile behavior from a senior developer?

Generate an RGB colour grid

Why are there no cargo aircraft with "flying wing" design?

Output the ŋarâþ crîþ alphabet song without using (m)any letters

What are the pros and cons of Aerospike nosecones?

Overriding an object in memory with placement new

Why did the Falcon Heavy center core fall off the ASDS OCISLY barge?

Print a pdf file from a large pdf file

Why was the term "discrete" used in discrete logarithm?

Selecting the same column from Different rows Based on Different Criteria

How would the world control an invulnerable immortal mass murderer?

Fundamental Solution of the Pell Equation

Is pollution the main cause of Notre Dame Cathedral's deterioration?

Align equal signs while including text over equalities

Why didn't this character "real die" when they blew their stack out in Altered Carbon?

Why do we bend a book to keep it straight?

Resolving to minmaj7

Why did the IBM 650 use bi-quinary?

The logistics of corpse disposal

How to tell that you are a giant?

How can I make names more distinctive without making them longer?

Why do people hide their license plates in the EU?



What am I suppose to use instead of Unity Resources if I have to load and unload sprites at runtime?



Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Does Unity load the texture data of all the sprites in a sprite array property?How does Unity load asset bundle dependencies and how can they be accessed?How heavy is a scene load in Unity assuming all referenced objects are in memory?Unity3d Resources.LoadAll<Sprite> empty arrayPerformance Optimization for 2D game developed using Unity 3D game engineAre loading screens more important than they appear to be?How do I run code for a period of time and then return to normal behavior?Unity: SpritePacker Atlas with Dynamic AccessLoading encounters and collisions questions within 2DHow should I organize 2D sprites?



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








7












$begingroup$


I recently read this guide posted in the Unity website about Resources. It is clear from the get-go that it is discouraged to use Resources unless you are prototyping something.



My game is like a 2D RPG, and it has over five thousand monster sprites (yes, a lot). As far as I'm concerned, it makes perfect sense to put all the sprites in the Resources folder, and just load the ones that I need (using their name) when a battle starts and then unload them.



The Unity article makes one point that might support my approach:




Generally required throughout a project's lifetime




Well, I'm not so sure about it - in a single game session it's entirely possible that thousands of those sprites will not be used at all as the player simply doesn't encounter those monsters.



The article goes on to talk about why is it discouraged to use Resources:




This operation is unskippable and occurs at application startup time
while the initial non-interactive splash screen is displayed.
Initializing a Resources system containing 10,000 assets has been
observed to consume multiple seconds on low-end mobile devices, even
though most of the Objects contained in Resources folders are rarely
actually needed to load into an application's first scene.




And it is indeed true - my game does in fact take several seconds to load on some low-end devices, especially Android ones. It is also true that none of those sprites of mine need to be loaded at startup.



So I am willing to stop using Resources - but I am at a loss now: the article doesn't mention a reasonable alternative to this.



Here are the (unreasonable) approaches that I have thought of:




Create a component with a collection of all the sprites, that way they are all loaded without using Resources.




Yeah but I have five thousand sprites. This sounds extremely tedious.




Same as the previous suggestion, but use Texture Packer or something similar to pack lots of sprites into different sheets - this way I have to do less work.




My sprites are large and packing them won't be a huge help - I'd still end up with a thousand or so sheets.




My point is, I just can't have 5000+ sprites preloaded. I need to load them at runtime via Resources, but Unity clearly discourages it. Is there a solution to this?










share|improve this question











$endgroup$











  • $begingroup$
    Are all those 5000+ monsters really unique? If any of them are just palette swaps of each other then I would recommend to use the same sprite asset and do the recoloring at runtime using a sprite shader.
    $endgroup$
    – Philipp
    Apr 12 at 12:56


















7












$begingroup$


I recently read this guide posted in the Unity website about Resources. It is clear from the get-go that it is discouraged to use Resources unless you are prototyping something.



My game is like a 2D RPG, and it has over five thousand monster sprites (yes, a lot). As far as I'm concerned, it makes perfect sense to put all the sprites in the Resources folder, and just load the ones that I need (using their name) when a battle starts and then unload them.



The Unity article makes one point that might support my approach:




Generally required throughout a project's lifetime




Well, I'm not so sure about it - in a single game session it's entirely possible that thousands of those sprites will not be used at all as the player simply doesn't encounter those monsters.



The article goes on to talk about why is it discouraged to use Resources:




This operation is unskippable and occurs at application startup time
while the initial non-interactive splash screen is displayed.
Initializing a Resources system containing 10,000 assets has been
observed to consume multiple seconds on low-end mobile devices, even
though most of the Objects contained in Resources folders are rarely
actually needed to load into an application's first scene.




And it is indeed true - my game does in fact take several seconds to load on some low-end devices, especially Android ones. It is also true that none of those sprites of mine need to be loaded at startup.



So I am willing to stop using Resources - but I am at a loss now: the article doesn't mention a reasonable alternative to this.



Here are the (unreasonable) approaches that I have thought of:




Create a component with a collection of all the sprites, that way they are all loaded without using Resources.




Yeah but I have five thousand sprites. This sounds extremely tedious.




Same as the previous suggestion, but use Texture Packer or something similar to pack lots of sprites into different sheets - this way I have to do less work.




My sprites are large and packing them won't be a huge help - I'd still end up with a thousand or so sheets.




My point is, I just can't have 5000+ sprites preloaded. I need to load them at runtime via Resources, but Unity clearly discourages it. Is there a solution to this?










share|improve this question











$endgroup$











  • $begingroup$
    Are all those 5000+ monsters really unique? If any of them are just palette swaps of each other then I would recommend to use the same sprite asset and do the recoloring at runtime using a sprite shader.
    $endgroup$
    – Philipp
    Apr 12 at 12:56














7












7








7


2



$begingroup$


I recently read this guide posted in the Unity website about Resources. It is clear from the get-go that it is discouraged to use Resources unless you are prototyping something.



My game is like a 2D RPG, and it has over five thousand monster sprites (yes, a lot). As far as I'm concerned, it makes perfect sense to put all the sprites in the Resources folder, and just load the ones that I need (using their name) when a battle starts and then unload them.



The Unity article makes one point that might support my approach:




Generally required throughout a project's lifetime




Well, I'm not so sure about it - in a single game session it's entirely possible that thousands of those sprites will not be used at all as the player simply doesn't encounter those monsters.



The article goes on to talk about why is it discouraged to use Resources:




This operation is unskippable and occurs at application startup time
while the initial non-interactive splash screen is displayed.
Initializing a Resources system containing 10,000 assets has been
observed to consume multiple seconds on low-end mobile devices, even
though most of the Objects contained in Resources folders are rarely
actually needed to load into an application's first scene.




And it is indeed true - my game does in fact take several seconds to load on some low-end devices, especially Android ones. It is also true that none of those sprites of mine need to be loaded at startup.



So I am willing to stop using Resources - but I am at a loss now: the article doesn't mention a reasonable alternative to this.



Here are the (unreasonable) approaches that I have thought of:




Create a component with a collection of all the sprites, that way they are all loaded without using Resources.




Yeah but I have five thousand sprites. This sounds extremely tedious.




Same as the previous suggestion, but use Texture Packer or something similar to pack lots of sprites into different sheets - this way I have to do less work.




My sprites are large and packing them won't be a huge help - I'd still end up with a thousand or so sheets.




My point is, I just can't have 5000+ sprites preloaded. I need to load them at runtime via Resources, but Unity clearly discourages it. Is there a solution to this?










share|improve this question











$endgroup$




I recently read this guide posted in the Unity website about Resources. It is clear from the get-go that it is discouraged to use Resources unless you are prototyping something.



My game is like a 2D RPG, and it has over five thousand monster sprites (yes, a lot). As far as I'm concerned, it makes perfect sense to put all the sprites in the Resources folder, and just load the ones that I need (using their name) when a battle starts and then unload them.



The Unity article makes one point that might support my approach:




Generally required throughout a project's lifetime




Well, I'm not so sure about it - in a single game session it's entirely possible that thousands of those sprites will not be used at all as the player simply doesn't encounter those monsters.



The article goes on to talk about why is it discouraged to use Resources:




This operation is unskippable and occurs at application startup time
while the initial non-interactive splash screen is displayed.
Initializing a Resources system containing 10,000 assets has been
observed to consume multiple seconds on low-end mobile devices, even
though most of the Objects contained in Resources folders are rarely
actually needed to load into an application's first scene.




And it is indeed true - my game does in fact take several seconds to load on some low-end devices, especially Android ones. It is also true that none of those sprites of mine need to be loaded at startup.



So I am willing to stop using Resources - but I am at a loss now: the article doesn't mention a reasonable alternative to this.



Here are the (unreasonable) approaches that I have thought of:




Create a component with a collection of all the sprites, that way they are all loaded without using Resources.




Yeah but I have five thousand sprites. This sounds extremely tedious.




Same as the previous suggestion, but use Texture Packer or something similar to pack lots of sprites into different sheets - this way I have to do less work.




My sprites are large and packing them won't be a huge help - I'd still end up with a thousand or so sheets.




My point is, I just can't have 5000+ sprites preloaded. I need to load them at runtime via Resources, but Unity clearly discourages it. Is there a solution to this?







unity






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago







Oxide

















asked Apr 12 at 9:03









OxideOxide

29772254




29772254











  • $begingroup$
    Are all those 5000+ monsters really unique? If any of them are just palette swaps of each other then I would recommend to use the same sprite asset and do the recoloring at runtime using a sprite shader.
    $endgroup$
    – Philipp
    Apr 12 at 12:56

















  • $begingroup$
    Are all those 5000+ monsters really unique? If any of them are just palette swaps of each other then I would recommend to use the same sprite asset and do the recoloring at runtime using a sprite shader.
    $endgroup$
    – Philipp
    Apr 12 at 12:56
















$begingroup$
Are all those 5000+ monsters really unique? If any of them are just palette swaps of each other then I would recommend to use the same sprite asset and do the recoloring at runtime using a sprite shader.
$endgroup$
– Philipp
Apr 12 at 12:56





$begingroup$
Are all those 5000+ monsters really unique? If any of them are just palette swaps of each other then I would recommend to use the same sprite asset and do the recoloring at runtime using a sprite shader.
$endgroup$
– Philipp
Apr 12 at 12:56











2 Answers
2






active

oldest

votes


















4












$begingroup$

Well, there are currently two other ways(other than using Resources Folder) to maintain assets in unity.



  1. Asset Bundle, like @Phillipp mentioned. (Get Started with AssetBundle Here)


  2. Addressable: Its a new feature in Unity 2018+. You can simply grab the package through unity's package manager. One thing to note here is Addressables are now in beta. So, many people will not recommend it. However, I used it for one of my projects and it works fine.


When you install Addressables, your asset will have a new checkbox in the inspector to mark that as an addressable. You just mark all the assets you want to load on runtime. Then from the Addressable's window (Window-> Asset Management->Addressable Assets), you can group assets, label them, and put the downloadable address for each group. (So you can either make 5000 assets as one group, make 10 groups (500 assets each) and then put the host address where you want to download it from runtime.



Here are a few links to getting started with Addressable.



1. Unity's Addressable Asset system for speed and performance - Unite LA



2. Addressables-Sample



3. Unite Melbourne- Hands on Session on Addressable Assets






share|improve this answer









$endgroup$




















    4












    $begingroup$

    If you want to load assets at runtime, then the solution suggested by Unity Technologies is to put those assets into asset bundle files which you can then load at runtime with AssetBundle.LoadFromFile(filepath). When you don't need the sprite anymore, unload that asset bundle with loadedAssetBundle.Unload().



    Putting each sprite into its own asset bundle might be one posible solution. But I have never worked with a project with 5000 asset bundles before, so I am not sure if this solution is really that scalable. If you can, try to group your asset bundles into what you are going to need at the same time. For example, if you have a 1:n relationship between areas and monsters, try to put all the monsters for one area into one asset bundle. But now you do of course need some kind of directory system which tells you which monster is in which asset file (with each monster in its own file, you can just name the files after the technical identifiers of your monsters).



    I am looking forward to defeating all the 5000+ monsters in your game.






    share|improve this answer











    $endgroup$












    • $begingroup$
      I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
      $endgroup$
      – gjh33
      Apr 12 at 13:28











    • $begingroup$
      @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
      $endgroup$
      – Philipp
      Apr 12 at 13:33











    • $begingroup$
      The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
      $endgroup$
      – gjh33
      Apr 12 at 13:38










    • $begingroup$
      AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
      $endgroup$
      – Galandil
      Apr 13 at 17:54












    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "53"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgamedev.stackexchange.com%2fquestions%2f169977%2fwhat-am-i-suppose-to-use-instead-of-unity-resources-if-i-have-to-load-and-unload%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    4












    $begingroup$

    Well, there are currently two other ways(other than using Resources Folder) to maintain assets in unity.



    1. Asset Bundle, like @Phillipp mentioned. (Get Started with AssetBundle Here)


    2. Addressable: Its a new feature in Unity 2018+. You can simply grab the package through unity's package manager. One thing to note here is Addressables are now in beta. So, many people will not recommend it. However, I used it for one of my projects and it works fine.


    When you install Addressables, your asset will have a new checkbox in the inspector to mark that as an addressable. You just mark all the assets you want to load on runtime. Then from the Addressable's window (Window-> Asset Management->Addressable Assets), you can group assets, label them, and put the downloadable address for each group. (So you can either make 5000 assets as one group, make 10 groups (500 assets each) and then put the host address where you want to download it from runtime.



    Here are a few links to getting started with Addressable.



    1. Unity's Addressable Asset system for speed and performance - Unite LA



    2. Addressables-Sample



    3. Unite Melbourne- Hands on Session on Addressable Assets






    share|improve this answer









    $endgroup$

















      4












      $begingroup$

      Well, there are currently two other ways(other than using Resources Folder) to maintain assets in unity.



      1. Asset Bundle, like @Phillipp mentioned. (Get Started with AssetBundle Here)


      2. Addressable: Its a new feature in Unity 2018+. You can simply grab the package through unity's package manager. One thing to note here is Addressables are now in beta. So, many people will not recommend it. However, I used it for one of my projects and it works fine.


      When you install Addressables, your asset will have a new checkbox in the inspector to mark that as an addressable. You just mark all the assets you want to load on runtime. Then from the Addressable's window (Window-> Asset Management->Addressable Assets), you can group assets, label them, and put the downloadable address for each group. (So you can either make 5000 assets as one group, make 10 groups (500 assets each) and then put the host address where you want to download it from runtime.



      Here are a few links to getting started with Addressable.



      1. Unity's Addressable Asset system for speed and performance - Unite LA



      2. Addressables-Sample



      3. Unite Melbourne- Hands on Session on Addressable Assets






      share|improve this answer









      $endgroup$















        4












        4








        4





        $begingroup$

        Well, there are currently two other ways(other than using Resources Folder) to maintain assets in unity.



        1. Asset Bundle, like @Phillipp mentioned. (Get Started with AssetBundle Here)


        2. Addressable: Its a new feature in Unity 2018+. You can simply grab the package through unity's package manager. One thing to note here is Addressables are now in beta. So, many people will not recommend it. However, I used it for one of my projects and it works fine.


        When you install Addressables, your asset will have a new checkbox in the inspector to mark that as an addressable. You just mark all the assets you want to load on runtime. Then from the Addressable's window (Window-> Asset Management->Addressable Assets), you can group assets, label them, and put the downloadable address for each group. (So you can either make 5000 assets as one group, make 10 groups (500 assets each) and then put the host address where you want to download it from runtime.



        Here are a few links to getting started with Addressable.



        1. Unity's Addressable Asset system for speed and performance - Unite LA



        2. Addressables-Sample



        3. Unite Melbourne- Hands on Session on Addressable Assets






        share|improve this answer









        $endgroup$



        Well, there are currently two other ways(other than using Resources Folder) to maintain assets in unity.



        1. Asset Bundle, like @Phillipp mentioned. (Get Started with AssetBundle Here)


        2. Addressable: Its a new feature in Unity 2018+. You can simply grab the package through unity's package manager. One thing to note here is Addressables are now in beta. So, many people will not recommend it. However, I used it for one of my projects and it works fine.


        When you install Addressables, your asset will have a new checkbox in the inspector to mark that as an addressable. You just mark all the assets you want to load on runtime. Then from the Addressable's window (Window-> Asset Management->Addressable Assets), you can group assets, label them, and put the downloadable address for each group. (So you can either make 5000 assets as one group, make 10 groups (500 assets each) and then put the host address where you want to download it from runtime.



        Here are a few links to getting started with Addressable.



        1. Unity's Addressable Asset system for speed and performance - Unite LA



        2. Addressables-Sample



        3. Unite Melbourne- Hands on Session on Addressable Assets







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Apr 12 at 20:02









        Shuvro SarkarShuvro Sarkar

        47228




        47228























            4












            $begingroup$

            If you want to load assets at runtime, then the solution suggested by Unity Technologies is to put those assets into asset bundle files which you can then load at runtime with AssetBundle.LoadFromFile(filepath). When you don't need the sprite anymore, unload that asset bundle with loadedAssetBundle.Unload().



            Putting each sprite into its own asset bundle might be one posible solution. But I have never worked with a project with 5000 asset bundles before, so I am not sure if this solution is really that scalable. If you can, try to group your asset bundles into what you are going to need at the same time. For example, if you have a 1:n relationship between areas and monsters, try to put all the monsters for one area into one asset bundle. But now you do of course need some kind of directory system which tells you which monster is in which asset file (with each monster in its own file, you can just name the files after the technical identifiers of your monsters).



            I am looking forward to defeating all the 5000+ monsters in your game.






            share|improve this answer











            $endgroup$












            • $begingroup$
              I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
              $endgroup$
              – gjh33
              Apr 12 at 13:28











            • $begingroup$
              @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
              $endgroup$
              – Philipp
              Apr 12 at 13:33











            • $begingroup$
              The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
              $endgroup$
              – gjh33
              Apr 12 at 13:38










            • $begingroup$
              AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
              $endgroup$
              – Galandil
              Apr 13 at 17:54
















            4












            $begingroup$

            If you want to load assets at runtime, then the solution suggested by Unity Technologies is to put those assets into asset bundle files which you can then load at runtime with AssetBundle.LoadFromFile(filepath). When you don't need the sprite anymore, unload that asset bundle with loadedAssetBundle.Unload().



            Putting each sprite into its own asset bundle might be one posible solution. But I have never worked with a project with 5000 asset bundles before, so I am not sure if this solution is really that scalable. If you can, try to group your asset bundles into what you are going to need at the same time. For example, if you have a 1:n relationship between areas and monsters, try to put all the monsters for one area into one asset bundle. But now you do of course need some kind of directory system which tells you which monster is in which asset file (with each monster in its own file, you can just name the files after the technical identifiers of your monsters).



            I am looking forward to defeating all the 5000+ monsters in your game.






            share|improve this answer











            $endgroup$












            • $begingroup$
              I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
              $endgroup$
              – gjh33
              Apr 12 at 13:28











            • $begingroup$
              @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
              $endgroup$
              – Philipp
              Apr 12 at 13:33











            • $begingroup$
              The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
              $endgroup$
              – gjh33
              Apr 12 at 13:38










            • $begingroup$
              AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
              $endgroup$
              – Galandil
              Apr 13 at 17:54














            4












            4








            4





            $begingroup$

            If you want to load assets at runtime, then the solution suggested by Unity Technologies is to put those assets into asset bundle files which you can then load at runtime with AssetBundle.LoadFromFile(filepath). When you don't need the sprite anymore, unload that asset bundle with loadedAssetBundle.Unload().



            Putting each sprite into its own asset bundle might be one posible solution. But I have never worked with a project with 5000 asset bundles before, so I am not sure if this solution is really that scalable. If you can, try to group your asset bundles into what you are going to need at the same time. For example, if you have a 1:n relationship between areas and monsters, try to put all the monsters for one area into one asset bundle. But now you do of course need some kind of directory system which tells you which monster is in which asset file (with each monster in its own file, you can just name the files after the technical identifiers of your monsters).



            I am looking forward to defeating all the 5000+ monsters in your game.






            share|improve this answer











            $endgroup$



            If you want to load assets at runtime, then the solution suggested by Unity Technologies is to put those assets into asset bundle files which you can then load at runtime with AssetBundle.LoadFromFile(filepath). When you don't need the sprite anymore, unload that asset bundle with loadedAssetBundle.Unload().



            Putting each sprite into its own asset bundle might be one posible solution. But I have never worked with a project with 5000 asset bundles before, so I am not sure if this solution is really that scalable. If you can, try to group your asset bundles into what you are going to need at the same time. For example, if you have a 1:n relationship between areas and monsters, try to put all the monsters for one area into one asset bundle. But now you do of course need some kind of directory system which tells you which monster is in which asset file (with each monster in its own file, you can just name the files after the technical identifiers of your monsters).



            I am looking forward to defeating all the 5000+ monsters in your game.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Apr 12 at 12:45

























            answered Apr 12 at 10:19









            PhilippPhilipp

            82k20193244




            82k20193244











            • $begingroup$
              I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
              $endgroup$
              – gjh33
              Apr 12 at 13:28











            • $begingroup$
              @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
              $endgroup$
              – Philipp
              Apr 12 at 13:33











            • $begingroup$
              The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
              $endgroup$
              – gjh33
              Apr 12 at 13:38










            • $begingroup$
              AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
              $endgroup$
              – Galandil
              Apr 13 at 17:54

















            • $begingroup$
              I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
              $endgroup$
              – gjh33
              Apr 12 at 13:28











            • $begingroup$
              @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
              $endgroup$
              – Philipp
              Apr 12 at 13:33











            • $begingroup$
              The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
              $endgroup$
              – gjh33
              Apr 12 at 13:38










            • $begingroup$
              AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
              $endgroup$
              – Galandil
              Apr 13 at 17:54
















            $begingroup$
            I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
            $endgroup$
            – gjh33
            Apr 12 at 13:28





            $begingroup$
            I would recommend Adressables. AssetBundle is a really difficult to maintain system. It's another layer of organization you have to remember to constantly keep up to date. I've had to work with it for several titles and it's one of the most infuriating APIs. Every version of the doc tells you something different as the API has changed rapidly over time, and the real answer is some combination of all the docs. It's why they made Adressables.
            $endgroup$
            – gjh33
            Apr 12 at 13:28













            $begingroup$
            @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
            $endgroup$
            – Philipp
            Apr 12 at 13:33





            $begingroup$
            @gjh33 I haven't heard about that feature yet. Maybe you would like to write an own answer where you explain this in detail?
            $endgroup$
            – Philipp
            Apr 12 at 13:33













            $begingroup$
            The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
            $endgroup$
            – gjh33
            Apr 12 at 13:38




            $begingroup$
            The reason I don't is because I haven't worked with it. I have however worked with AssetBundles quite a bit, both loading from disk and loading over the web for a WebGL port. It might be a Unity 2019 feature, but I'll link it and let poster decide if he wants to use it. The other project team is using it, and have found it pretty useful. Here's a link to the doc: docs.unity3d.com/Packages/com.unity.addressables@0.4/manual/…
            $endgroup$
            – gjh33
            Apr 12 at 13:38












            $begingroup$
            AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
            $endgroup$
            – Galandil
            Apr 13 at 17:54





            $begingroup$
            AFAIK, Addressables are a workflow system, easier to use and maintain compared to Asset Bundles, but under the hood they're still Asset Bundles. A Unity dev suggested to a user in the forums to use Addressables if the project on which you're working is to be shipped in the second half of 2019, or later. They can be used from version 2018.2.
            $endgroup$
            – Galandil
            Apr 13 at 17:54


















            draft saved

            draft discarded
















































            Thanks for contributing an answer to Game Development Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            Use MathJax to format equations. MathJax reference.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgamedev.stackexchange.com%2fquestions%2f169977%2fwhat-am-i-suppose-to-use-instead-of-unity-resources-if-i-have-to-load-and-unload%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Bulk add to cart function issuecart vs. mini cart issue … rwd themeRedirect Add to cart button to cart pageAdd to cart issue - Magento 2.1The requested Payment Method is not available When creating an orderM2: reason add-to-cart might not function in production modeAdd to cart issue in some android devicesMagento 2 - custom price can not add to subtotal and grand total after add to cartAdd to cart codeIssue with my cart module on pdp and cart pages, just keeps spinningBulk price and quantity update using rest api

            БиармияSxpst500bh2ntaf! 3h2r