继续把背包做完吧!此版本只适合练手,不适合用在开发上面,但是比较简单,想看上半部分,可去小编博客查看。
上次做到可以随机生成,现在要做把鼠标放到生成的预设物上可跳出一个面板显示该物品的详细信息。这就需要继承接口了!!
,大概就是这个效果,写一个脚本挂在预设物上面。
//....................................................................................BackPackShow.............................................................
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class BackPackShow : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler { //需要继承的两个接口,在引用之前需要添加命名空间
//消息和使用面板
public GameObject messagePanel;
public GameObject usePanel;
//文本,定义成静态可在别的脚本调用
public static Text number;
//点击按钮
public Button button;
{
//初始化
messagePanel = GameObject.Find("BG").gameObject.transform.FindChild("messagePanel").gameObject;usePanel = GameObject.Find("BG").gameObject.transform.FindChild("usePanel").gameObject;
button = transform.GetComponent<Button>();
button.onClick.AddListener(OnClick);
}
void Update ()
{
}
//点击事件
public void OnClick()
{
usePanel.SetActive(true); //点击就会跳出使用面板
number = transform.GetChild(1).GetComponent<Text>(); //定义的文本就代表了生成预设物的第一个子物体,为了别的脚本的调用的
for (int i = 0; i < SavaData.saveDataList.baseBackPackList.Count; i++)
{
if (transform.GetChild(0).GetComponent<Text>().text == SavaData.saveDataList.baseBackPackList[i].name){
usePanel.transform.GetChild(0).GetComponent<Text>().text = SavaData.saveDataList.baseBackPackList[i].name;
usePanel.transform.GetChild(1).GetComponent<Text>().text = SavaData.saveDataList.baseBackPackList[i].Des;
}
}
}
//鼠标放在生成预设物的上面就会执行下面的方法
void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
{
for (int i = 0; i < SavaData.saveDataList.baseBackPackList.Count; i++)
{
if (transform.GetChild(0).GetComponent<Text>().text == SavaData.saveDataList.baseBackPackList[i].name)
{
messagePanel.SetActive(true);
messagePanel.transform.position = new Vector3(transform.position.x + 180,transform.position.y, transform.position.z);
messagePanel.transform.GetChild(0).GetComponent<Text>().text = SavaData.saveDataList.baseBackPackList[i].name;
messagePanel.transform.GetChild(1).GetComponent<Text>().text = SavaData.saveDataList.baseBackPackList[i].Des;
}
}
}
//鼠标离开生成预设物的上面就会执行下面的方法
void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
{
messagePanel.SetActive(false);
}
}
到此就可以实现鼠标放上去可显示具体物品信息,点击该物品可跳出使用面板了。
最后就是使用和售卖了:
//............................................................................................UsePanel..........................................................................
public class Use : MonoBehaviour {
//使用面板
public GameObject sellPanel;
//关闭方法
public void Close(){
gameObject.SetActive(false);
}
//使用按钮方法
public void UseButton()
{
BackPackShow.number.text = (int.Parse(BackPackShow.number.text) - 1).ToString(); //预设物的number文本每点击一次就-1
if (int.Parse(BackPackShow.number.text)<0) //当它小于零就执行关闭和删除父物体
{
Close();
Destroy(BackPackShow.number.transform.parent.gameObject);
}
}
//售卖按钮方法
public void SellButton()
{
sellPanel.SetActive(true); //这里只是为了跳转去售卖页面
gameObject.SetActive(false);
}
}
//........................................................................................sellPanel...........................................................................................
public class Sell : MonoBehaviour {
//指数量的文本
public Text number;
//数量
public int count;
//指预设物上面的代表数量的文本
public int numberCount;
void Awake()
{
numberCount = int.Parse(BackPackShow.number.text);
}
void Update ()
{
numberCount = int.Parse(BackPackShow.number.text);number.text = count.ToString();
}
//减号按钮上的方法
public void jianClick()
{
if (count>0) //当数量>0才可以减
{count--;
}
}
//加号按钮上的方法
public void jiaClick()
{
if (count<numberCount) //当数量<预设物的数量才可以减
{
count++;
}
}
//售卖按钮上的方法
public void sellClick()
{
BackPackShow.number.text = (int.Parse(BackPackShow.number.text) - count).ToString();
if (int.Parse(BackPackShow.number.text)<=0)
{
Destroy(BackPackShow.number.transform.parent.gameObject);
Close();
}
}
public void Close()
{
gameObject.SetActive(false);
}
}
一口气写完了,不然怕又要拖到猴年马月了,所以要赶紧写完,我发现别的博主都可以把代码写的很规范,不知道是怎么弄的,毕竟还是新手,我会多研究研究,尽量写的整齐规范一些,好看的更清楚,这次我发现了可以给字加颜色(愚蠢的我写了4篇才发现),那就给注释加个颜色吧!,希望喜欢的人能给我点个赞鼓励一下。