- Home /
C# -- Build character unit from script
So, my question is of efficiency, and whether it's smart. We're designing a game that will potentially have hundreds of "characters" to choose from... I guess like a MOBA... so they're all very similar and the only variance is animation/model/material/skills/stats/sounds. Lol, ok so the only similarity is the control and backend work. So, we'd like to just have one prefab set up with controlls and all that lower level stuff, and then have all the other components added on at runtime based on the character the player has chosen. This would be in contrast to having 100+ prefabs all slapped into a resources folder.
So, is this a good idea? It's A LOT to load via scripts and requires careful planning to get everything loaded correctly. The plus side is that adding new characters would be a breeze and our Assets directory would be quite a bit smaller. We realize that if we didn't load dynamically, any changes we'd make to the character structure would have to be manually changed on eeevverryyy one manually. We're pretty new at this though, so the pros/cons are hard to measure. Thoughts please? Thanks.
Unity Forums is a better place for a discussion/opinion question like this one.
Definitely don't duplicate your prefab 100 times if the backend is pretty much the same. Having said that, you'll have to do some thorough research on what exactly it is that is the same and different. Are the animations very different (e.g. require different gameobjects, different bones, etc) or similar enough to simply change the animation? Same goes for all other things you mention.
Perhaps trying it with 3 models that are as different as you imagine it will get and see if you can use one model for them will help. You might run into problems you won't be able to think of at this time.
Pro of doing it with one prefab: You can store all the data in a JSON-file or database and load the data dynamically from the server (allowing live updates to your game). As you mentioned, base changes are done easily.
Answer by Cherno · Sep 08, 2014 at 11:10 PM
If you want to use only 1 rig with different meshes, have a look at these two threads:
http://answers.unity3d.com/questions/44355/shared-skeleton-and-animation-state.html http://answers.unity3d.com/questions/668332/weightless-bones-dont-get-added-to-skinnedmeshrend.html