微信扫一扫

028-83195727 , 15928970361
business@forhy.com

【Unity NGUI】学习笔记(一):英雄选择,皮肤更换

ngui,unity,英雄皮肤更换,Atlas,boxCollider2016-07-26


  一、准备工作

  所需图片资源,包括英雄预制件,人物头像,服装,武器图集和人物动画

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;
		}
	}

}