效果图
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");
}
}
}