TMP_Text如果标签没效果可能是字体问题
TMP_Text如果标签没效果可能是字体问题
消耗品,装备,材料,武器
item(物品类)
id
type:物品类型,消耗品,装备,武器,材料
TextAsset itemText = Resources.Load<TextAsset>("Items");
要把Items.json文件放在Resources目录下,不然会报空指针。
基类:Item(物品类)
派生类:Consumable(消耗品类),Equipment(装备类),Weapon(武器类),Material(材料类)
public class Item
{
//物品(公有的的属性)
}
public class Consumable:Item
{
//消耗品的属性
}
public class Equipment:Item
{
//武器的属性
}
public class Material:Item
{
//材料的属性
}
第五课时item
public int ID{get;set; }:方便访问权限
属性类名一般大写
注意:enum的访问权限问题
实验了半天,如果用LitJson的话,下面一句话就能读出数组了,然后在遍历,其余的和老师一样就可以读出来了
//jsonData代表一个数组或一个对象
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("Assets/Resources/Items.Json"));//从Json文件中获得数组
foreach (JsonData temp in jsonData) //遍历数组
{
}
小bug:多次加载会重复添加,需要在加载前清理inventory。
购买时可能背包满了放不下
public void BuyItem(Item item)
{
if (player.ConsumeCoin(item.BuyPrice)==true)
{
if (Knapsack.Instance.StoreItem(item)==false)
{
player.EarnCoin(item.BuyPrice);
}
}
}
角色面板有物品时,可以直接交换位置
public void PutOn(ItemUI itemUI)
{
foreach (EquipmentSlot slot in slotsArray)
{
if (slot.IsRightItem(itemUI.Item))
{
if (slot.transform.childCount > 0)
{
ItemUI currentItemUI = slot.transform.GetChild(0).GetComponent<ItemUI>();
itemUI.Exchange(currentItemUI);
}
else
{
slot.StoreItem(itemUI.Item);
Destroy(itemUI.gameObject);
}
InventoryManager.Instance.HideToolTip();
break;
}
}
}
链接失效了,重新上传一下
文本在unity中是textasset类型
讲的真他妈乱。
Json文件需要放在Plugins文件当中,因为它要比其它C#文件先编译。而Plugins文件实现该功能。
加载多点几次,会出大问题的
还有一个问题没解决,当背包满了,角色穿上头盔时,右键点击箱子里面的头盔,将会销毁一个头盔。
应该根据id找相同格子,不应该根据类型找,后面老师这肯定报错。
这里提供了JSON的读取方法
screen Match mode->Match width or Haighy
slot和item脚本比较重要,特别是slot中的各种方法,看的有点