First - You don't have to build the character after updating the colors if you pass (true) to UpdateColors(). SetColor() sets the colors of a Shared Color. UpdateColors() looks through the recipe, and updates the shared colors in the recipe. If you pass (true), it marks the character as "dirty", and schedules the texture atlas to be recreated. Second - Need more information on when you are calling this code. One common mistake is to try to do these things in the character events. This is specifically disallowed, as the events happen during the build process itself. If you are trying to use an event to set the colors and rebuild the character, the rebuild will be ignored. If you are creating a character, and buildcharacter is enabled on it (it is on the prefab), then it gets a build scheduled right off, and a charactercreated event called. Some people try to change the character there, and that is an error, as the character can't be changed in the process of being built. You could in theory jump through some hoops to make it be rebuilt there, but that just causes the character to be built twice. There are various ways to handle this depending on what you want to do. If you already know all that, and you're not doing that, then need more information on what you are changing colors on. If you are using the existing races, they definitely have a shared color setup for the "Skin", if you are using your own races and recipes, you need to make sure you have created and assign the "Skin" shared color.