Thanks for the info!
Most people in this situation seem to be using prefabs, but the way our situation is set up (our levels are all one big prefab and nested prefabs aren't really a thing) makes that more difficult. Also, since I'm using assets that are stored in asset bundles, I have to do something in the script anyway to point the scripts at the bundled assets, so I might as well do what I originally wanted to do, without the use of prefabs.
I was eventually able to pull it off.
Something that would have been (and would still be, in case you guys make updates) very helpful is a script that does the same thing your guys' import script does (taking textures, atlas, and json and creating materials, skeleton data, and atlas asset) but instead of creating asset files, you just return the assembled skeleton data. No asset files created, everything in memory. Essentially, tahts what I ended up doing.
Some problems I encountered doing this, just in case someone else had some of the same issues (or in case you have a better way to solve them):
#1. Scriptable Objects and Asset Bundles apparently don't place nice.
It would have been a lot easier if I could have just added an HD and SD skeleton data into asset bundles with different variants, but it would seem that they don't collect and re-link dependencies properly. I looked around for a solution, but it seems this is a known problem, I couldn't find a solution. If I manually included all the linked asset, it didn't seem to be able to find them. I even forced 'Collect Dependencies' in my asset build script (even though thats apparently default) and it didn't work. My solution was to just build the two scriptable objects (Atlas Asset and Skeleton Data Asset) from scratch.
#2. Things with the same name, but different extension
Spine exports things to have the same name, but different extensions. When you're loading things from an asset bundle, you only use its name, not its extension. I don't know why. Anyway, this meant I couldn't differenciate between the different assets. My solution was to add them to smaller asset bundles grouped by file type, and access them from there.
#3. Issues getting the Asset Text Asset from asset bundles
I suspect it's because of the .asset in its name (since you don't use extensions, there might be an issue with the '.') but for whatever reason, it kept not being able to load the Asset text files. Since I was grouping my bundles by level and asset type, my "atlas text file" bundle was pretty small, so the solution was just to load all of them and then find one with a matching name. I need to investivate this more later, but for now the fix works.
#4. Material Naming
If you have one texture for your spine character (called Character), the import process will create a predictable material called Character_Material. If there are two textures (Character and Character2) it will less predictably name the materials Character_Character and Character_Character2 instead of Character_Material and Character_Material2, as I suspected they would be. I just ended up creating new materials since I could more easily predict the name of the textures, but just FYI.
#5. Issues with 'fromAnimation'
After everything was assembled, I was getting an error in the GetSkeletonData method about fromAnimation being null. I tracked down that in the IngestSpineProject method, called from that import process I assume, fromAnimation and toAnimation were intialized as empty string arrays. As soon as I added that into my code after setting the atlas asset and json, things started working properly.
Anyway, as complicated as the process seemed, I think it best suits my need.
If you guys ever decide to implement a method for creating those assets via script, please let me know. I'd love it.
PS your forum kicks people out way too fast. I lost this post twice cause by the time I submitted it was like 'oops gotta log in'. :giggle: Guess its a good way to kick verbose buttface like myself.
Cheers! :beer: