文章目录
- 物品管理器
- 背包管理器
- 角色管理器
物品管理器
-
物品数据 Item.json(json部分)(Resources/Data/Item)
[{ "id": 1, "name": "新手剑", "des": "这是一把宝剑", "price": 200, "icon": "", "attack": 10, "hp": 0 }, { "id": 2, "name": "新手药剂", "des":"这是新手药剂", "price": 100, "icon": "", "attack" : 0, "hp": 10 }]
-
数据类
public class Item {public int id;public string name;public string des;public int price;public string icon;public int attack;public int hp; }
-
-
物品管理类
using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson;public class ItemManager {private static ItemManager instance;public static ItemManager Instance{get{if(instance == null) {instance = new ItemManager();}return instance;}}//所有的物品信息private Item[] items;public ItemManager(){TextAsset json = Resources.Load<TextAsset>("Data/Item");//解析jsonitems = LitJson.JsonMapper.ToObject<Item[]>(json.text);}//通过物品id获取物品public Item GetItem(int id){foreach (Item item in items){if(item.id == id) {return item;}}return null;} }
背包管理器
-
InventoryManager
using System.Collections; using System.Collections.Generic;//背包格子public class InventoryItem{//物品idpublic int ItemId;//个数public int Count = 1;}public class InventoryManager{//单例模式private static InventoryManager instance;public static InventoryManager Instance{get{if(instance == null){instance = new InventoryManager();return instance;}return instance;}}//背包集合public List<InventoryItem> Inventory = new List<InventoryItem>();//添加物品public void AddItem(int itemId, int count = 1){//查看背包中是否已经存在该物品foreach (InventoryItem tmpItem in Inventory){if (tmpItem.ItemId == itemId){//存在,就数量自增tmpItem.Count += count;return;}}//背包中不存在该物品InventoryItem item = new InventoryItem();item.ItemId = itemId;item.Count = count;Inventory.Add(item);}//移除物品public void Removeltem(int itemId, int count = 1){//遍历背包for (int i = 0; i < Inventory.Count; i++){InventoryItem item = Inventory[i];//如果存在该物品if (item.ItemId == itemId && item.Count > 0){//删除item.Count -= count;if (item.Count <= 0){Inventory.Remove(item);} }}}//获取物品public InventoryItem GetItem(int itemId){foreach (InventoryItem tmpItem in Inventory){if (tmpItem.ItemId == itemId){return tmpItem;}}return null;}//清空背包public void RemoveAllItem() {Inventory.Clear();} }
角色管理器
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//角色基本信息
public class Bai_Character{//姓名public string Name ="张三";//等级public int Level = 1;//经验public int CurrentExp = 0;public int Hp = 0;//最大血量public int MaxHp{get{return Level * 10;} }//升到下一级需要的经验public int GetNextLevelExp(){return Level * 50;}//装备 -1代表无public int WeaponId = -1;public int ClothesId = -1;public int ShoesId = -1;//技能public List<int> SkillList = new List<int>();}public class CharacterManager
{private static CharacterManager instance;public static CharacterManager Instance{get{if(instance == null){instance = new CharacterManager();return instance;}return instance;}}//玩家public Bai_Character character = new Bai_Character();//金钱public int Money = 0;//当前角色是否可控public bool canControl = true;//增加/减少金钱public void ChangeMoney(int money){Money += money;if (Money < 0) Money = 0;}//增加经验public void AddExp(int exp){character.CurrentExp += exp;//判断经验是否升级if (character.CurrentExp >= character.GetNextLevelExp()){//升级character.Level++;character.CurrentExp = 0;}}//改变血量public void ChangeHp(int hp){character.Hp += hp;//限制character.Hp的范围[0, character.MaxHp]character.Hp = Mathf.Clamp(character.Hp, 0, character.MaxHp);}#region 任务技能//添加技能public bool AddSkill(int skillld){if(character.SkillList.Contains(skillld)){return false;}character.SkillList.Add(skillld);return true;}//是否拥有此技能public bool HasSkill(int skillld){return character.SkillList.Contains(skillld);}//移除技能public void RemoveSkill(int skillld){if (character.SkillList.Contains(skillld)){character.SkillList.Remove(skillld);}}//所有技能public int[] GetSkills(){return character.SkillList.ToArray();}#endregion#region 人物装备//装备武器public void AddWeapon(int id){//如果背包有这个武器,允许装备InventoryItem item = InventoryManager.Instance.GetItem(id);if (item!= null){InventoryManager.Instance.Removeltem(id,1);}//如果当前有武器,武器卸载下来放入背包if (character.WeaponId > -1){InventoryManager.Instance.AddItem(character.WeaponId, 1);}character.WeaponId = id;}//获取当前武器public int GetWeapon(){return character.WeaponId;}//移除当前武器public void RemoveWeapon(){//如果当前有武器,武器卸载下来放入背包if (character.Weaponld > -1)InventoryManager.Instance.AddItem(character.WeaponId,1);}
#endregion
}