private void DisplayHead(BodyAttachment bodyAttachment, TexturedMesh headMesh, TexturedMesh haircutMesh, string hairColor) { var avatarObject = new GameObject("Avatar"); // create head object in the scene SkinnedMeshRenderer headRenderer = null; if (headMesh != null) { var meshObject = new GameObject("HeadObject"); headRenderer = meshObject.AddComponent <SkinnedMeshRenderer>(); headRenderer.sharedMesh = headMesh.mesh; var material = new Material(Shader.Find("AvatarUnlitShader")); material.mainTexture = headMesh.texture; headRenderer.material = material; meshObject.transform.SetParent(avatarObject.transform); } // create haircut object in the scene if (haircutMesh != null) { var meshObject = new GameObject("HaircutObject"); var meshRenderer = meshObject.AddComponent <SkinnedMeshRenderer>(); meshRenderer.sharedMesh = haircutMesh.mesh; var material = new Material(Shader.Find("AvatarUnlitHairShader")); material.mainTexture = haircutMesh.texture; meshRenderer.material = material; if (!ChangeMeshTint(meshRenderer, hairColor)) { Debug.LogError("Error changing hair color!"); } meshObject.transform.SetParent(avatarObject.transform); } // attach head if (bodyAttachment != null) { bodyAttachment.AttachHeadToBody(avatarObject); } // change body skin color match head color if (bodyAttachment != null && headRenderer != null) { MatchTwoMeshTint(bodyAttachment.body.GetComponent <SkinnedMeshRenderer>(), headRenderer); } }