这几天学习了背包系统 在这里和大家分享一下
我这里使用了之前做的超级玛丽来实现的 因为我懒得再做一个可以移动等触发碰撞的项目了
然后素材都是在网上下载的几个装备图片
1.准备工作
首先我们用UGUI创建出装备面板
我们用Gird Layout Group组件 肯恩给大家之前也了解过这个组件
我们可以理解为是专门用来排版的组件
在挂载这个组件的父物体下的所有子物体 每当创建或者实例化出来都会根据我们设置的大小和距离来自动排版
然后就实现一下我们按下一个键可以打开和关闭背包面板
public bool isEquip = false;//装备面板
public GameObject EquipPanel;
private void Update()
{
if (isEquip)
{
EquipPanel.SetActive(true);
}
else
{
EquipPanel.SetActive(false );
}
if(Input.GetKeyDown(KeyCode.P))
{
isEquip = !isEquip;
}
}
然后在unity中给EquipPanel赋值即可
这样 在game模式下按下p即可开启 再次按下即可关闭
我这里用的是取反 isEquip = !isEquip; 当然也可以使用累加点击次数 来用奇偶来判断
这样我们的准备工作就结束了 下面开始我们的数据存储
2.数据存储
我们可能知道每个脚本在每次游戏开始的时候 都会初始化
当然我们想在每次打开游戏之后 上次打的背包都清空了 那样真的太惨了
所以我们不能简单的继承MonoBehaviour类了 要使用ScriptableObject类来实现
首先我们写创建装备的代码 其中所有参数我都注释了
[CreateAssetMenu(fileName = "New Item", menuName = "Bag/New Item")]
public class Item : ScriptableObject
{
public string itemName;//装备名称
public Sprite itemSprite;//装备标志
public