准备
前提的知识:
——ugui
——unity框架
——jason配置表
——file文件存储和读取
需求分析:
——背包中显示玩家拥有的物品信息
——需要显示信息就需要读取数据—数据从哪里来?
配置表(JASON)+玩家信息(文件读取file , JASON)
——获取数据到面板上(UGUI , c#的逻辑)
基本知识点:
1.Application.persistentDataPath:运行产生一个目录
2.使用JsonUtility读写Json文件
3.ui除了用射线来监听鼠标进入之外,还有EventTrigger
一、拼面板
这里的主题是为了讲背包,所以对于这里不再赘述
不过要注意几个小技巧:
1.将所有ui界面做成预制体,使用时直接用代码调用(包括Canvas和EventSystem)
2.将Canvas制作成预制体之前,注意UI的分辨率的问题:canvas scaler
3.可以先做出一个永久在屏幕前的界面(也就是主界面):mainpanel
此时我们至少有两个panel:主面板+背包
并且每个panel都会有一个相应名字的脚本,并且还有一个唯一的main脚本
二、开始时显示主面板
main-可以挂在相机:
void start()
{
UIManager.GetInstance().ShowPanel<mainpannal>("mainpanal", E_UI_Layer.Bot);
}
三、实现背包的开启与关闭
开启:
mainpanel:
void Start()
{
GetControl<Button>("beibao").onClick.AddListener(() =>
{
UIManager.GetInstance().ShowPanel<bagpannal>("bagpannal");
});
}
关闭:
bagpanel:
void Start()
{
GetControl<Button>("buttonclose").onClick.AddListener(() =>
{
UIManager.GetInstance().HidePanel("bagpannal");
});
}
四、道具信息数据设计、读取
1.新建excel文件,配置基础道具信息
2.用在线json工具,将excel转json
3.稍微修改json配置(添加info数组)
后面复制上上述json,注意最后使用格式化校验
4.向unity传入道具json信息
打开unity建立【json】文件夹-右键show in Explorer
打开路径后新建【iteminfo】的txt文件,并把上面的json信息复制后,点击另存为,编码选择UTF-8
此时我们在unity里json文件夹下存在我们刚才另存的iteminfo的文件了!
5.读取道具信息
新建【gamedatamgr】的脚本,放游戏里各种数据
这里可以把gamedatamgr拆分为几个部分来慢慢阅读
数据的获取:
首先,看数据关系图
iteminfos(int,item)
items(class):放多个item
player(calss):玩家基础信息和默认的物品
[先从txt文件里获取信息,将信息存储iteminfos,并且提供保存信息的功能save]
之后来看具体代码的实现
//存放道具的信息
public class Item
{
public int id;
public string name;
public string icon;
public int type;
public int price;
public string tips;
}
存储多个道具
public class Items
{
public List<Item> info;
}
// 玩家拥有道具的基础信息
//这个特性可以使json被读取的时候 能被识别
[System.Serializable]
public class ItemInfo
{
public int id;
public int num;
}
//创建个字典 里面按照数字放不同的道具 每个道具又有不同的信息(item)
private Dictionary<int, Item> iteminfos = new Dictionary<int, Item>();
//玩家