コード例 #1
0
    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);
        }
    }