A downloadable tool

Buy Now$4.99 USD or more

For those of you utilizing character assets with multiple layers like Stardew Valley (skin, hair style, eye color, outfit, etc.), this asset is for you!  Quickly and easily swap out textures when your players change their hairstyle, clothing, etc. with a single line of code.

I highly recommend taking a look at the How to Use video, however, text documentation is also included with this asset.

Check out my other assets!




Purchase

Buy Now$4.99 USD or more

In order to download this tool you must purchase it at or above the minimum price of $4.99 USD. You will get access to the following files:

Paper Doll for Unity v1.05.unitypackage

Development log

Comments

Log in with itch.io to leave a comment.

I did try your script, and it does not work for me.

I followed your YouTube tutorial and your documentation, and the result is that the child layers are not as animated as they should be. What am I doing wrong? using Unity 2022.3

Child layer:Tree:Folders:

Your sprites need to be in the resources folder. So take that Character folder and move it into a folder called Resources. Don't change the path on paper doll script, you've got that set perfect.

Thanks, that was it! Stupid me :D Thank you!

I just did the same thing wrong... dohhh. Spend an hour debugging the script and settings. Should have just read the comments here ;-)


After renaming the folder, it works. Well worth the $5!

(5 edits)

Hi! I'm excited to implement this tool into the current project I'm working on. However, I'm having a bit of trouble.

I've input the correct file path to the folder with my sliced sprite sheets in it and I am receiving the following error:

I'm pretty much trying to achieve what you showcase in the Paper Doll example video. My animations/animation controller for my base sprite renderer are working correctly. I noticed that when I try to input a texture 'sprite' into that slot of the Paper Doll component that I can only put the unsliced version in the slot? See below that a folder-looking file is what's placed there because it won't allow me to place a single image.

Could this be an issue with the file type? My sprites and spritesheets are all PNGs. Here's a screenshot of my the sprite folder I'm directing to for the base:

Is it a problem that my spritesheets are split up? Should they be on one sheet for this to work?


I hope you're able to help me out! Thanks so much for any advice you can provide.


Update: 

I did add the Forward Slash to the file path and that did not fix it. I think it has to do with the fact the Replacement Texture slot is only accepting the full spritesheet rather than one of the sliced sprites...When I slice the spritesheets in Unity they turn into 'Sprites' rather than 'Texture2Ds' and maybe that explains why I can't seem to add the sliced images into the Replacement Texture location I think? Unless this is not even the issue and it has to do with my sprites being on multiple spritesheets rather than one.

Apologies for such a long comment - just want to give as much info as possible. Thanks!

So, I've gone through and updated my spritesheets for the base naked character and also a clothing article to test this out and get it working. I've followed the instructions and watched the info video multiple times and it still isn't working for me. I keep getting the following error despite triple-checking the file path. I hope you can help! Thanks in advance for your time.

I have another update. My filepath was wrong because I was specifying the Assets/Resources folders. However, now only the first 6 sprites of each spritesheet are playing. Getting the paperdoll functionality has somehow overridden my animation controller and now it's only playing a group of frames that comes first alphabetically in the spritesheet folders. I'm so close!!! I really hope I can get this working.

Hey, sorry you're having so much trouble with it. We can do a Zoom if you would find that helpful and I can walk you through it. E-mail me at bluemanafox@gmail.com if you're interested, otherwise I can try to help you here but without having my eyeballs on it I don't know how much help I'll be.

I got it working!! This is great. I didn't realize that my base renderer sprites needed to be numbered consecutively starting at 0. I'm quite new at dealing with spritesheets so I wasn't aware that this might be an issue. I thought I would post the final solution in case anyone else runs into the issues I had. Thanks!

Yes, and not just that but you also need to have the same number of sprites in all your spritesheets. So if for example, you have a tool renderer, and there is a frame where that tool does not need to be rendered because the character would be standing in front of it for example (if facing up). You still need to slice the sprite for that empty sprite regardless. If that makes sense :P Glad you got it figured out though!

Absolutely amazing! This script is a huge time saver for anyone working with a layered sprite system. It's short, simple, and straight to the point which makes using and referencing a breeze! I used this as the foundation for a custom character creator using Seliel's Mana Seed character which has 15 layers, up to ~8 options for each layer, and ~100 animations! Automation is necessary for times like this and this script makes that easy. Thank you, DirePixel. Your work is much appreciated.

Glad you like it! Always appreciate the atta boys :)


Hi, this looks veyr useful, but I do have a question about weapon animations.

Since part of weapon animation is behind player and part is in front, I would make two additional "layers" to paper doll, right? And I would split for example the sword animation file into sword_behind and sword_front files, while keeping the empty sprites so it lines up with basic skin layer and I can swap for bow or whaterver weapon?

Just wanna make sure I understand the capabilities (and limitations, if any). :)

(2 edits)

This is a tricky situation, you are both correct and incorrect. So, essentially look at it this way, the Paper Doll is using the frame numbers of the base animation (the character). Since there are no breaks in the base animation, this would require some creativity on your part to achieve in terms of extending the base spritesheet to allow for your scenario to play out. In the end, I feel it would be a dramatic waste of time and resources on your part to achieve. Instead, I would suggest a much simpler solution to approaching the problem, that being a scripted animation helper. Put in animation events at the points where the object must be rendered in front or changed to render behind again. Have a script on your TLA & TLB layers that accept these events and change the sorting layer or Y position of the renderer accordingly (if using custom sort order of (0, 1, 0) on your render pipeline - recommended).  But still, use Paper Doll for all the layers, including tool a & b as normal!

I haven't double-checked these scripts, I just wrote them for you in pastebin. So they might require some tweaking. Give these a try to resolve your issue. Hope this helps!

CharacterAnimationHelper.cs

ToolRendererHelper.cs

So with these, just attached CharacterAnimationHelper to your BaseRenderer. Point the animation events in your animation at the OnRenderToolABehind. OnRenderToolBBehind, OnRenderToolAFront, and RenderToolBFront. Then you'll attach ToolRendererHelper to both Tool A & Tool B layers. Lastly, with your Base Layer selected, point the Unity Events firing from the Character Animation Helper script to your Tool A & Tool B layer as appropriate. Again, you may have to adjust the scripts a little for syntax and logical errors, but they are very simple scripts so even a rookie could handle it. :)

Thanks for such a thorough answer! I was really only looking into what can I expect before buying and you pretty much sold your asset to me. :D

Yes, but I want to make sure you have a smooth experience if you choose to purchase. If you do purchase, let me know how those scripts work for you, I may update Paper Doll to include them. I know my opinion may be biased, but for an asset like Mana Seed, this paper doll will make your life a million times easier.  Mana Seed is almost unwieldly without it lol, which is why I made it. All the tools I've made I consider essential to stress free Mana Seed game development (Mana Seed Shaders for Unity, Paper Doll, Mana Seed Tools). Together, these tools are a power house. I wish you the best of luck and thank you for your consideration. :)

Hi! While it seems to be the exact thing I'm looking for, I can't get it to work. I set up everything like you did in the instructions and the video but it still says "[Renderer] found no sprites in the spritesheet or spritesheet was not found." I'm trying to figure this out for days but I seem to miss something here. :(

Hi Khavrielle! This occurs when the Paper Doll fails to load a spritesheet texture on start. The cause is going to be either a missing ReplacementTexture in the inspector, or the TexturePath to the ReplacementTexture is incorrect in the inspector. Be sure the TexturePath is a location in the Resources folder. Also, make sure the texture has already been sliced into sprites in the Unity sprite editor.

(1 edit)

Hey! Thanks for the quick reply! I checked everything you said and everything seems to be set up correctly, but Unity still complains about not being able to find the Spritesheets/Sprites itself. I'll check it again this evening, maybe I'm just tired or so, haha. Eventually I'll be able to figure this out! // Edit: Unity just doesn't like me, it seems. A restart has solved the problems and now it works fine! Thank you very much for the help and especially the asset! Its fantastic ♥

Lol, hey, been there done that!  Usually when I can't figure it out and everything seems sound I say, "I blame it on Unity", and restart.

I was having the same problem. I guess maybe in the script DirePixel concatenates path + texture name and if there's no slash at the end of the path it'll read it completely differently? Idk. All I know is "BaseAnims/part1/4har/" is different from "BaseAnims/part1/4har". Great script once it's working!

(+1)

Correct. /4har without the ending slash means a file beginning with 4har. The final slash in /4har/ tells the script it is a folder, not a file. It then looks for the name of the attached texture2d in that folder. Forgetting that final / is a no go