换装原理实践

换装系列文章:
换装原理初探
换装原理中篇
换装原理实践

效果图

在这里插入图片描述

UI制作

  • Toggle组,区分性别。
  • 对于每种性别,Toggle组,区分部位。
  • 对于每个部位,Toggle组,区分型号。
  • 性别切换时,触发两个函数,UI上性别Toggle组切换,AvatarCustomization性别切换ChangeGender。
  • 部位切换时,触发一个函数,UI上部位Toggle组切换。
  • 型号切换时,触发一个函数,AvatarCustomization角色换装ChangeAvatar。

按钮类

对应于UI制作,按钮函数里需要具备调用AvatarCustomization中相应函数的功能。并且,为了显示更好的效果,在型号切换时,播放动画,因此函数实现如下。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AvatarCustomizationButton : MonoBehaviour
{
    
    
   public void OnValueChanged(bool ison)
   {
    
    
        if(ison)
        {
    
    
            if (gameObject.name == "boy" || gameObject.name == "girl")
            {
    
    
                AvatarCustomization.Instance.AvatarGender = gameObject.name == "boy" ? Gender.Male : Gender.Female;
                AvatarCustomization.Instance.ChangeGender();
                return;
            }

            string[] names = gameObject.name.Split('-');
            AvatarCustomization.Instance.ChangeAvatar(names[0], names[1]);

            switch (names[0])
            {
    
    
                case "pants":
                    PlayAnimation("item_pants");
                    break;
                case "shoes":
                    PlayAnimation("item_boots");
                    break;
                case "top":
                    PlayAnimation("item_shirt");
                    break;
                default:
                    break;
            }
        }
   }
    public void PlayAnimation(string animName)
    {
    
     
        Animation anim = GameObject.FindWithTag("Player").GetComponent<Animation>();
        if (!anim.IsPlaying(animName))
        {
    
    
            anim.Play(animName);
            anim.PlayQueued("idle1");
        }

    }
}

换装类

基本和换装原理中篇差不多,稍作改动即可,完整的Unity工程参见这里

猜你喜欢

转载自blog.csdn.net/Abecedarian_CLF/article/details/85055016
今日推荐