Unity游戏商店购物到背包代码笔记

来源:互联网 发布:淘宝联盟怎么使用教程 编辑:程序博客网 时间:2024/05/16 03:15

//1.商店代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEditor;

public class shangdianScript : MonoBehaviour{

    List< Dictionary<string, object>> data;
    public Image[] image;//商店装备的栏位
    bool OpenBag=false;//商店是否打开bool值
    public GameObject Bag;//背包
    public GameObject EquimentAttribute;//装备属性栏位预设体
    GameObject[] Equipment;//商店里的所有装备
    public Button button;//购买装备按钮
    public Button SellEquipmentButton;//出售装备按钮
    [HideInInspector]public GameObject BuyToEquipment;//选中的要购买的装备
    [HideInInspector]public GameObject SellToEquipment;//选中的要出售的装备
    // Use this for initialization
    void Start () {
        string sql = "select * from Hero";
        data = DataBaseTool.Instance.GetAllRowData (sql);
        Equipment =new GameObject[image.Length];
        button.onClick.AddListener (delegate {
            BuyEquipment();
        });
        SellEquipmentButton.onClick.AddListener (delegate {
            SellEquipment();
        });
    }

    public void IsOpenBag(){
        if (OpenBag == true) {
            OpenBag = false;
            this.transform.GetChild (1).GetChild(0).GetComponent<Text> ().text = "打开商店";
            this.transform.GetChild (0).gameObject.SetActive (false);
        } else {
            OpenBag = true;
            this.transform.GetChild (1).GetChild(0).GetComponent<Text> ().text = "关闭商店";
            this.transform.GetChild (0).gameObject.SetActive (true);
        }
        if(this.transform.GetChild(0).gameObject){
            for (int i = 0; i < data.Count; i++) { 
                if (image [i].transform.childCount == 0) {
                    GameObject game = new GameObject ();

                    game.AddComponent<EquipmentScript> ();
                    game.transform.position = image [i].transform.position;
                    game.transform.SetParent (image [i].transform);
                    Vector3 v3 = new Vector3 (game.transform.position.x, game.transform.position.y - 300, game.transform.position.z);
                    Instantiate (EquimentAttribute, v3, Quaternion.identity).transform.SetParent (game.transform);
                    EquimentAttribute.gameObject.SetActive (false);
                    game.GetComponent<Image> ().color = new Color (255, 255, 255, 255);
                    game.tag = "ShopEquipment";
                    Equipment [i] = game;

                    EquipmentScript equipmentscript;
                    equipmentscript = game.GetComponent<EquipmentScript> ();
                    equipmentscript.equipmentID = int.Parse (data [i] ["ID"].ToString ());
                    equipmentscript.equipmentName = data [i] ["Name"].ToString ();
                    equipmentscript.EquipmentHP = float.Parse (data [i] ["HP"].ToString ());
                    equipmentscript.EquipmentMP = float.Parse (data [i] ["MP"].ToString ());
                    equipmentscript.EquipmentAttackValue = int.Parse (data [i] ["AttackValue"].ToString ());
                    equipmentscript.EquipmentDsecription = data [i] ["Description"].ToString ();
                    equipmentscript.EquipmentImagePicture = Resources.Load<Sprite> ("Dota1/Dota_DOTA-ITEM/" + data [i] ["PictureName"].ToString ());
                    equipmentscript.EquipmentCold = int.Parse (data [i] ["Price"].ToString ());
                }
            }
        }
    }

    public void BuyEquipment(){
        if (this.transform.GetChild (0).gameObject.activeSelf) {
            try {
                this.transform.Find ("Bag").GetComponent<BagScript> ().GetEquipment (BuyToEquipment);
            } catch (System.Exception ex) {
                Debug.Log ("请选中装备后再购买...");
            }
        } else {
            Debug.Log ("请打开商店再购买...");
        }
    }
    public void SellEquipment(){
        
        try {
            if (SellToEquipment.tag=="PlayerEquipment") {
                GameObject.Find ("Bag").GetComponent<BagScript> ().my_cold += SellToEquipment.GetComponent<EquipmentScript> ().EquipmentCold;
                GameObject.Find ("Bag").GetComponent<BagScript> ().RefreshCold ();
                Destroy (SellToEquipment);
            }
        }catch (System.Exception ex) {
            Debug.Log ("请选择要出售的装备...");
        }

    }
}



//2.装备代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

[RequireComponent(typeof(Button))]
[RequireComponent(typeof(Image))]//检测是否存在这些组件 如果没有则加载Image Button
public class EquipmentScript :MonoBehaviour, IPointerEnterHandler,IPointerExitHandler {

    [HideInInspector]public int equipmentID;//装备ID
    [HideInInspector]public string equipmentName;//装备名
    [HideInInspector]public float EquipmentHP;//装备红值
    [HideInInspector]public float EquipmentMP;//装备蓝值
    [HideInInspector]public int EquipmentAttackValue;//装备攻击力值
    [HideInInspector]public string EquipmentDsecription;//装备描述
    [HideInInspector]public Sprite EquipmentImagePicture;//装备图片
    [HideInInspector]public int EquipmentCold;//装备价值金币

    void Start(){
        this.gameObject.GetComponent<Button> ().onClick.AddListener (delegate {
            GameObject.Find ("Canvas").GetComponent<shangdianScript> ().BuyToEquipment = this.gameObject;
        });
        this.gameObject.GetComponent<Button> ().onClick.AddListener (delegate {
            GameObject.Find("Canvas").GetComponent<shangdianScript>().SellToEquipment=this.gameObject;
        });
        DisplayEquipmentAttribute ();
    }

    public void DisplayEquipmentAttribute(){
        this.gameObject.GetComponent<Image> ().sprite = EquipmentImagePicture;
        transform.GetChild(0).Find("EquipmentDisplayPicture").GetComponent<Image> ().sprite = EquipmentImagePicture ;
        transform.GetChild(0).Find("EquipmentDisplayDescription").GetComponent<Text> ().text = EquipmentDsecription;
        transform.GetChild(0).Find("EquipmentDisplayAttribute").GetComponent<Text> ().text=equipmentName+"\n"+"HP:"+EquipmentHP+"\n"+"MP:"+EquipmentMP+"\n"+"攻击力:"+EquipmentAttackValue;
        transform.GetChild(0).Find("EquipmentDisplayPrice").GetComponent<Text> ().text ="售价:" + EquipmentCold;
    }

    public void OnPointerEnter(PointerEventData eventData){
        if (eventData.pointerEnter.gameObject.tag.Contains( "Equipment" )) {
            eventData.pointerEnter.gameObject.transform.GetChild (0).gameObject.SetActive(true);
        } 
    }
    public void OnPointerExit (PointerEventData eventData){
        if(eventData.pointerEnter.gameObject.tag.Contains("Equipment")){
            eventData.pointerEnter.gameObject.transform.GetChild (0).gameObject.SetActive (false);
        }
    }
}



//3.背包代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BagScript : MonoBehaviour {

    private List<GameObject> BagEquipment;//背包装备
    public Image[] EquipmentField;//背包栏位

    public int my_cold=10000;//背包金币

    // Use this for initialization
    void Start () {

        //my_cold = 10000;
        RefreshCold ();

    }
    public void GetEquipment(GameObject my_equipment){
        //BagEquipment.Add (my_equipment);
        if (my_cold - my_equipment.GetComponent<EquipmentScript> ().EquipmentCold >= 0) {
            for (int i = 0; i < EquipmentField.Length; i++) {
                if (EquipmentField [i].transform.childCount == 0) {
                    GameObject game = Instantiate (my_equipment, EquipmentField [i].transform.position, Quaternion.identity);
                    game.GetComponent<EquipmentScript> ().EquipmentCold = (int)(game.GetComponent<EquipmentScript> ().EquipmentCold * 0.1f);
                    game.tag = "PlayerEquipment";
                    game.transform.SetParent (EquipmentField [i].transform);
                    game.transform.GetChild (0).gameObject.SetActive (false);
                    EquipmentField [i].color = new Color (255, 255, 255, 255);
                    my_cold -= my_equipment.GetComponent<EquipmentScript> ().EquipmentCold;
                    RefreshCold ();
                    break;
                }
            }
        } else {
            Debug.Log ("金币不足");
        }
    }
    public void RefreshCold(){
        this.transform.Find ("ColdField").GetComponent<Text> ().text =  my_cold+"金币";
    }
}

原创粉丝点击