一、准备工作
所需图片资源,包括英雄预制件,人物头像,服装,武器图集和人物动画
1.创建图集,选择NGUI->Open->Atlas Maker,设置图集名称heroAtlas后,选中Textures下的所有图片,点击Create
2.将四个英雄的预制件拖入到Scene中并重新命名为hero0~hero3
3.创建NGUI panel,分别是英雄列表,英雄招式,英雄装备
操作完以上三个步骤后,结构如下:
二、如何操作
1.选中英雄列表,添加一个Sprite,使用图集中的图片mun_pnl_mon,然后依次将英雄头像摆放上去,再给头像添加box Collider和UIbutton。后面的英雄招式和装备操作基本上都是这样的。效果如下:
2.给头像添加点击事件,这里需要创建一个C#脚本,然后添加一个方法OnClick()来控制当前选择的英雄
//1.禁用所有英雄
for(int i=0;i<mHeros.Length;i++)
{
mHeros[i].SetActive (false);
}
//显示选择的英雄
mHeros[hIndex[1]-48].SetActive(true);
curHero = mHeros [hIndex [1] - 48];
注意:hIndex是一个string类型,它是英雄头像的名字依次为h0~h3,我使用了hIndex [1]获取它的Ascii值减去0的Ascii48 得到英雄索引值
3.创建一个Empty命名为script,将第二步添加的脚本绑定到它身上。
4.设置英雄头像绑定On Click事件
三、全部代码
using UnityEngine;
using System.Collections;
public class HeroSelect : MonoBehaviour {
public GameObject[] mHeros;
public Texture[] mCloths1;
public static GameObject curHero;
void Start()
{
curHero = mHeros[0];
}
public void OnClick(string hIndex)
{
//1.禁用所有英雄
for(int i=0;i<mHeros.Length;i++)
{
mHeros[i].SetActive (false);
}
//显示选择的英雄
mHeros[hIndex[1]-48].SetActive(true);
curHero = mHeros [hIndex [1] - 48];
}
public void HeroCloth(string cIndex)
{
int index = cIndex[1] - 48;
SkinnedMeshRenderer render = curHero.GetComponentInChildren<SkinnedMeshRenderer>();
switch(curHero.name)
{
case "hero0":
render.material.mainTexture=mCloths1[index];
break;
}
}
}