47
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity C# 初心者】ゲーム内のアイテム管理 インベントリ

Last updated at Posted at 2015-08-04

#アイテム管理どうするの?
Unityに関わらずRPGやFPSなどのゲームを制作する時の悩み所、アイテム管理
ここで悩むのは自分のプログラム力が低いだけだと思いますが。
インベントリや装備、アイテムドロップなどですべてがアクセスするデータベースなどの作り方をここを参考にした奴を紹介していきます。

アイテムの基本構成
アイテムネーム
アイテムのID
アイテムの説明文
ゲーム内で表示されるアイテムアイコン
攻撃力
防御力
アタックスピード
特殊効果
属性のタイプ
アイテムのタイプ

細かく考えるときりがないのでこんな感じでしょうか。

##アイテムの要素を丸ごとリスト化

Item.cs
using UnityEngine;
using System.Collections;


[System.Serializable]//この属性を使ってインスペクター上で表示
public class Item 
{
    public string itemName;        //名前
    public int itemID;             //アイテムID
    public string itemDesc;        //アイテムの説明文
    public Texture2D itemIcon;     //アイコン
    public int itemPower;          //攻撃力
    public int itemDefense;        //防御力
    public int itemAttackSpeed;    //攻撃速度
    public int itemLifeSteal;      //ライフスティール(特殊効果)
    public ElementType elemenType; //属性
    public ItemType itemType;      //アイテムの種類

//属性はまた別にenumにて切り替えれるようにします
    public enum ElementType      
    {
        Non,
        Fire,
        Ice,
        Lightning,
    }
//アイテムタイプも同じくenum      
    public enum ItemType
    {
        Weapon,
        Consumable,
        Quest
    }
//ここでリスト化時に渡す引数をあてがいます   
public Item(string name, int id, string desc, int power,int def, int speed,int ls, ElementType etype, ItemType type)
    {
        itemName = name;
        itemID = id;
//アイコンはnameとイコールにするのでアイコンがあるパス+nameで取ってきます    
        itemIcon = Resources.Load<Texture2D>("Item Icons/" + name);
        itemDesc = desc;
        itemPower = power;
        itemDefense = def;
        itemAttackSpeed = speed;
        itemLifeSteal = ls;
        elemenType = etype;
        itemType = type;
    }

}

次にこのアイテムの基礎を渡すアイテムデータベースを作ります。

###アイテムの基本構成を受け取るアイテムデータベース

ItemDataBase.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ItemDataBase : MonoBehaviour
{
//リスト化をして下のvoid Start内でリストに値を追加、値は適当です  
public List<Item> items = new List<Item>();

   void Start()
    {
        items.Add(new Item("Hogehoge",0,"hogehogehogehoge",2,1,0,0,Item.ElementType.Non,Item.ItemType.Weapon));

    }
}

ヒエラルキーに空のオブジェクトを追加し、名前を
ItemDataBaseにします。
そのオブジェクトにItemDataBase.csをアタッチします。
qwerasd.PNG
ItemsのSizeはゲームがスタートしないと
追加されないので初期値は0です。
スタートボタンを押すとこんな感じになります
sdfgcxvb.PNG

こんな感じでアイテムを追加していき
別のスクリプトで
private ItemDataBase database;
参照して
dvfggggg.png
こんな感じで値をとってくる。

かなりざっくりしていて見にくいと思いますが、色々初心者なので
時間がある時にきれいにまとめていきたいと思います。

冒頭で紹介したインベントリの作る動画ではこれを基礎にインベントリでの
アイテムをオンマウスで情報のポップアップなど色々と勉強出来てお勧めです。

47
51
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?