Unity笔记之-----简单的背包切换

来源:互联网 发布:java安装在d盘教程 编辑:程序博客网 时间:2024/06/14 08:07

这是一个简单的背包切换,并不涉及太多内容,总共的UI界面就一个,切换的实质是通过这是UI的激活状态,来显示切换效果

总共就两个脚本

第一个脚本是控制切换item的

public class ChangeItem : MonoBehaviour {    [SerializeField]    Toggle m_TogItem1;    [SerializeField]    Toggle m_TogItem2;    [SerializeField]    Toggle m_TogItem3;    [SerializeField]    GameObject m_Item1Img;    [SerializeField]    GameObject m_Item2Img;    [SerializeField]    GameObject m_Item3Img;    [SerializeField]    GameObject m_ImageItem1BG;    [SerializeField]    GameObject m_ImageItem2BG;    [SerializeField]    GameObject m_ImageItem3BG;    void Start () {        m_TogItem1.onValueChanged.AddListener(OnItem1);        m_TogItem2.onValueChanged.AddListener(OnItem2);        m_TogItem3.onValueChanged.AddListener(OnItem3);    }    private void OnItem1(bool arg0)    {        if (arg0)        {            m_Item1Img.SetActive(true);            m_ImageItem1BG.SetActive(true);            m_Item2Img.SetActive(false);            m_ImageItem2BG.SetActive(false);            m_Item3Img.SetActive(false);            m_ImageItem3BG.SetActive(false);        }    }    private void OnItem2(bool arg0)    {        if (arg0)        {            m_Item1Img.SetActive(false);            m_ImageItem1BG.SetActive(false);            m_Item2Img.SetActive(true);            m_ImageItem2BG.SetActive(true);            m_Item3Img.SetActive(false);            m_ImageItem3BG.SetActive(false);        }    }    private void OnItem3(bool arg0)    {        if (arg0)        {            m_Item1Img.SetActive(false);            m_ImageItem1BG.SetActive(false);            m_Item2Img.SetActive(false);            m_ImageItem2BG.SetActive(false);            m_Item3Img.SetActive(true);            m_ImageItem3BG.SetActive(true);        }    }    void Update () {              }}

第二个脚本是控制切换背包里面物体的位置的

using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;using System;public class SimplePackageChange : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{    Vector3 m_Offest;    Image m_Image;    Transform m_DragParent;    Transform m_OriginalTran;    private void Awake()    {        m_Image = GetComponent<Image>();        m_DragParent = GameObject.Find("pan_Item").transform;    }    public void OnBeginDrag(PointerEventData eventData)    {        m_OriginalTran = transform.parent;        m_Offest = Input.mousePosition - transform.position;        //m_DragParent = transform.root;    }    public void OnDrag(PointerEventData eventData)    {        transform.position = Input.mousePosition - m_Offest;        //当拖动的时候把射线检测关闭,到时候就可以检测图片底下的ui        m_Image.raycastTarget = false;        transform.parent = m_DragParent;    }    public void OnEndDrag(PointerEventData eventData)    {        m_Image.raycastTarget = true;        //拖拽完之后要把射线检测打开,不然拖动的时候检测不了这个物体        if (eventData.pointerEnter.tag == "ItemImages")        {            //如果检测到的是槽位            transform.parent = eventData.pointerEnter.transform;            transform.position = eventData.pointerEnter.transform.position;        }        else if (eventData.pointerEnter.tag == "DragItem")        {            //  如果检测到的是有装备            transform.parent = eventData.pointerEnter.transform.parent;            transform.position = eventData.pointerEnter.transform.position;            eventData.pointerEnter.transform.parent = m_OriginalTran;            eventData.pointerEnter.transform.position = m_OriginalTran.position;        }        else if (eventData.pointerEnter.name == "pan_Item")        {            //  如果检测到的是背包pannel的背景            transform.parent = m_OriginalTran;            transform.position = m_OriginalTran.position;        }        else        {            //  如果在UI边界之外            Destroy(gameObject);        }    }}