UMA DNA System

I’m wondering if anyone with experience with UMA can help me out? I’m just getting started integrating UMA with an existing project, and I’ve hit a bit of a snag in regard to UMA’s DNA system. All I want to do in this case, is just change the facial features of the standard UMA male and female that UMA comes with. In this scenario, I have a few different UMA characters set up as prefabs, and would like to change their appearances individually. However, the DNA sliders only appear at run time, and any changes made there do not persist.

I’ve watched the tutorials on youtube and the best I can tell, the only way to do this is to code a character creator? Is that correct?

I am wondering if there is a way to simply alter the existing UMA DNA without having to code a character creator so I can prototype some facial features/body types quickly, as I have no coding skills at all.

Thanks in advance.

Same Problem
Could some Legend direct us to the right solution?

I know this thread is old, but I do have the answer for it in case anyone wants to know. When you hit play, you can figure out the names of some of the DNA, but this should get you started with some and the general syntax. Bonus clothing changing function is here also.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UMA;
using UMA.CharacterSystem;
public class BuildUmaCharacterCustomizable : MonoBehaviour
{
    public DynamicCharacterAvatar avatar;

    [SerializeField]
    private float armLength = 0.5f;
    [SerializeField]
    private float armWidth = 0.5f;

    [SerializeField]
    private float breastCleavage = 0.5f;
    [SerializeField]
    private float breastSize = 0.5f;

    [SerializeField]
    private float cheekPosition = 0.5f;
    [SerializeField]
    private float cheekSize = 0.5f;

    [SerializeField]
    private float chinPosition = 0.5f;
    [SerializeField]
    private float chinPronounced = 0.5f;
    [SerializeField]
    private float chinSize = 0.5f;

    [SerializeField]
    private float earsPosition = 0.5f;
    [SerializeField]
    private float earsRotation = 0.5f;
    [SerializeField]
    private float earsSize = 0.5f;

    [SerializeField]
    private float eyeRotation = 0.5f;
    [SerializeField]
    private float eyeSize = 0.5f;
    [SerializeField]
    private float eyeSpacing = 0.5f;

    [SerializeField]
    private float feetSize = 0.5f;

    [SerializeField]
    private float forearmLength = 0.5f;
    [SerializeField]
    private float forearmWidth = 0.5f;

    [SerializeField]
    private float foreheadPosition = 0.5f;
    [SerializeField]
    private float foreheadSize = 0.5f;

    [SerializeField]
    private float gluteusSize = 0.5f;

    [SerializeField]
    private float handsSize = 0.5f;

    [SerializeField]
    private float headSize = 0.5f;
    [SerializeField]
    private float headWidth = 0.5f;

    private float jawPosition = 0.5f;
    [SerializeField]
    private float jawSize = 0.5f;

    [SerializeField]
    private float legSeparation = 0.5f;
    [SerializeField]
    private float legsSize = 0.5f;

    [SerializeField]
    private float lipsSize = 0.5f;

    [SerializeField]
    private float lowerMuscle = 0.5f;
    [SerializeField]
    private float lowerWeight = 0.5f;

    [SerializeField]
    private float mandibleSize = 0.5f;

    [SerializeField]
    private float mouthSize = 0.5f;

    [SerializeField]
    private float neckThickness = 0.5f;

    [SerializeField]
    private float noseCurve = 0.5f;
    [SerializeField]
    private float noseFlatten = 0.5f;
    [SerializeField]
    private float noseInclination = 0.5f;
    [SerializeField]
    private float nosePosition = 0.5f;
    [SerializeField]
    private float nosePronounced = 0.5f;
    [SerializeField]
    private float noseSize = 0.5f;
    [SerializeField]
    private float noseWidth = 0.5f;

    [SerializeField]
    private float belly = 0.5f;
    [SerializeField]
    private float height = 1.5f;
    [SerializeField]
    private float waist = 0.5f;
    [SerializeField]
    private float upperMuscle = 0.5f;
    [SerializeField]
    private float upperWeight = 0.5f;
    

    void Start()
    {
        UMAPredefinedDNA predefinedDNA = new UMAPredefinedDNA();

        predefinedDNA.AddDNA("armWidth", armWidth);
        predefinedDNA.AddDNA("armLength", armLength);

        predefinedDNA.AddDNA("breastSize", breastSize);
        predefinedDNA.AddDNA("breastCleavage", breastCleavage);

        predefinedDNA.AddDNA("cheekPosition", cheekPosition);
        predefinedDNA.AddDNA("cheeckSize", cheekSize);

        predefinedDNA.AddDNA("chinPosition", chinPosition);
        predefinedDNA.AddDNA("chinPronounced", chinPronounced);
        predefinedDNA.AddDNA("chinSize", chinSize);

        predefinedDNA.AddDNA("earsPosition", earsPosition);
        predefinedDNA.AddDNA("earsRotation", earsRotation);
        predefinedDNA.AddDNA("earsSize", earsSize);

        predefinedDNA.AddDNA("eyeRotation", eyeRotation);
        predefinedDNA.AddDNA("eyeSize", eyeSize);
        predefinedDNA.AddDNA("eyeSpacing", eyeSpacing);

        predefinedDNA.AddDNA("feetSize", feetSize);

        predefinedDNA.AddDNA("forearmWidth", forearmWidth);
        predefinedDNA.AddDNA("forearmLength", forearmLength);

        predefinedDNA.AddDNA("foreheadSize", foreheadSize);
        predefinedDNA.AddDNA("foreheadPosition", foreheadPosition);

        predefinedDNA.AddDNA("gluteusSize", gluteusSize);

        predefinedDNA.AddDNA("handsSize", handsSize);

        predefinedDNA.AddDNA("jawPosition", jawPosition);
        predefinedDNA.AddDNA("jawSize", jawSize);

        predefinedDNA.AddDNA("legSeparation", legSeparation);
        predefinedDNA.AddDNA("legsSize", legsSize);

        predefinedDNA.AddDNA("lipsSize", lipsSize);

        predefinedDNA.AddDNA("lowerWeight", lowerWeight);
        predefinedDNA.AddDNA("upperWeight", upperWeight);

        predefinedDNA.AddDNA("mandibleSize", mandibleSize);

        predefinedDNA.AddDNA("mouthSize", mouthSize);

        predefinedDNA.AddDNA("neckThickness", neckThickness);

        predefinedDNA.AddDNA("noseCurve", noseCurve);
        predefinedDNA.AddDNA("noseFlatten", noseFlatten);
        predefinedDNA.AddDNA("noseInclination", noseInclination);
        predefinedDNA.AddDNA("nosePosition", nosePosition);
        predefinedDNA.AddDNA("nosePronounced", nosePronounced);
        predefinedDNA.AddDNA("noseSize", noseSize);
        predefinedDNA.AddDNA("noseWidth", noseWidth);

        predefinedDNA.AddDNA("belly", belly);
        predefinedDNA.AddDNA("height", height);
        predefinedDNA.AddDNA("waist", waist);

        predefinedDNA.AddDNA("upperMuscle", upperMuscle);
        predefinedDNA.AddDNA("lowerMuscle", lowerMuscle);    

        avatar.predefinedDNA = predefinedDNA;

        Dictionary<string, DnaSetter> AllDNA = avatar.GetDNA();

        foreach(KeyValuePair<string, DnaSetter> entry in AllDNA)
        {
            Debug.Log(entry.Key);
        }

    }
    public void wearItem(string slotName, UMAWardrobeRecipe recipe)
    {
        avatar.SetSlot(slotName, recipe.name);
        avatar.BuildCharacter();
    }

    public void removeItem(string slotName)
    {
        avatar.ClearSlot(slotName);
        avatar.BuildCharacter();
    }
}