Objects\Entities pool optimization question

Implemented a pool of objects for dynamic display of objects of certain types (each has its own pool). Types can also have different skins. All objects and skins share the same material.

And now faced with such a compromise choice:

  1. Make a bunch of templates in which only the render asset differs (respectively, each skin will have its own pool).

  2. Change this render asset in the process when I add it to the scene (but how will this affect efficiency\performance?)

Interested in real-time performance and smaller build size simultaneously (or the way where losses are less).

Templates themselves don’t add any noticeable size to the build. Think of them as JSONs. Its the actual assets that affect the size, so both options will be of same or very similar in size. Performance wise there is no difference between using a template or adding a render component to an entity (the engine does it for you in case of templates).

In the case when I will do it with templates, then I will create each skin accordingly at the beginning. If the templates are left only at the level of object types, then the skin will have to be replaced in the process of spawning the object, is this a difficult operation, how difficult is it in relation to the instantiate() method? (asset replacement in the render component)

Difficulty is subjective. Perhaps you could make a small test with a couple of entities and see which method is more comfortable for you?