UGUI背包系统(中)
来源:互联网 发布:三星tizen系统 软件 编辑:程序博客网 时间:2024/05/16 06:13
这篇文章介绍如何更换图片还有提示显示,话不多说,直接上代码和效果图
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UGUI.Tool;
using System.Collections.Generic;
//背包管理
public class KnapsackManager : MonoBehaviour {
public static KnapsackManager _instance;
public bool isShow = true; //是否显示
public List<GameObject> listParent = new List<GameObject> (); //生成格子存到列表
public List<Sprite> itemSprite = new List<Sprite>();
public List<int> price = new List<int> ();
[SerializeField]
public Text myText;
private GridLayoutGroup grid; //生成的格子的父类
private GameObject itemParent; //格子
private GameObject item; //物品
void Awake(){
_instance = this;
}
// Use this for initialization
void Start () {
grid = transform.Find ("BG/Grid").GetComponent<GridLayoutGroup>();
itemParent = Resources.Load<GameObject> ("Prefabs/ItemParent");
item = Resources.Load<GameObject> ("Prefabs/Item");
myText = transform.Find ("Text").GetComponent<Text>();
SetKanspackGridLayout ();
}
// Update is called once per frame
void Update () {
//按下x件生产背包物品
if(Input.GetKey(KeyCode.X)){
SetItem (Random.Range(0,itemSprite.Count));
}
Vector2 position;
RectTransformUtility.ScreenPointToLocalPointInRectangle (this.GetComponent<RectTransform>(),Input.mousePosition,null,out position);
if (isShow) {
myText.gameObject.SetActive (true);
SetPosition (position);
} else {
myText.gameObject.SetActive (false);
}
}
//背包布局
void SetKanspackGridLayout(){
for (int i = 0; i < 20; i++) {
GameObject go = GameObject.Instantiate (itemParent, transform.position, Quaternion.identity) as GameObject;
go.transform.parent = grid.transform;
listParent.Add (go);
}
}
void SetItem(int id){
myText.text = "售价:" + price [id].ToString ();
foreach(GameObject go in listParent){
if(go.transform.childCount == 1){
GameObject myItem = UguiTool.OnAddTool (go,item);
myItem.GetComponent<Item> ().SetIcon (id);
break;
}
}
}
public void SetPosition(Vector2 position){
myText.rectTransform.anchoredPosition = position;
}
}
这个代码要挂在item上,如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Item : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void SetIcon(int id){
this.GetComponent<Image> ().sprite = KnapsackManager._instance.itemSprite [id];
}
public void OnPointerEnter(PointerEventData data){
KnapsackManager._instance.isShow = true;
}
public void OnPointerExit(PointerEventData data){
KnapsackManager._instance.isShow = false;
}
}
效果图:
- UGUI背包系统(中)
- UGUI背包系统(初级)
- UGUI背包系统(下)
- UGUI的背包系统(上)
- UGUI--背包系统
- 【UGUI】背包系统
- UGUI--背包系统之一-------InventoryManager
- 基于Unity3D(UGUI)的背包系统<二>
- 基于Unity3D(UGUI)的背包系统<三>
- 基于Unity3D(UGUI)的背包系统<四>完结篇
- 基于Unity3D(UGUI)的背包系统(装备系统,锻造系统,购买系统)
- UGUI--背包系统之二--------Inventory
- UGUI--背包系统之三--------Slot
- UGUI--背包系统之四--------Item
- UGUI--背包系统之五--------Tootip
- Unity3D——UGUI实现背包系统
- UGUI背包(对象池)
- Unity3D自学笔记——UGUI背包系统(一)ItemData
- MySQL改变列顺序
- 百度地图-自定义mark以及为其添加信息搜索窗口
- android 应用程序结构是哪些
- js操作cookies
- JavaScript之——正则表达式
- UGUI背包系统(中)
- 2016年11月13日周工作知识点总结
- Wireshark 如何截取特定网段的数据
- LA 4356 Fire-Control System -
- noip注意事项
- 机器学习资源
- 解析发来的短信里面信息的操作
- 游历校园
- linux进程创建(2)进程的继承