切換
舊版
前往
大廳
主題

RM MV學習筆記(40) gainItem與背包

路漫行 | 2018-05-23 10:37:52 | 巴幣 0 | 人氣 453

內建玩家的背包,在Game party裡面

玩家身上的道具:
$gameParty._items

玩家身上的武器:
$gameParty._weapons

玩家身上的防具:
$gameParty._armors


看起來是一個倉庫,其實是三個陣列,另外有一個numItems()的函式專門用來算數量,還有一個叫做this.itemContainer()的也是倉庫...

$gameParty.itemContainer(item)的內容跟$gameParty._items 一模一樣

而且是不管我item.id給幾號都回傳整個倉庫給我...
除了0不行以外


$gameParty.numItems($dataItems[176])
回傳編號176號道具的數量


另外倉庫裡面只有存id 跟數量兩個資料而已,並不是完整的data
到了$gameParty.items()時候會變成實體








------------------------------------

我又去看了一下Window_ItemList

發現他背包抓得是$gameParty.allItems()
這是用來畫UI的,所以我想這個才是遊戲裡面真正的背包

allItems就包含了下面三者
Game_Party.prototype.items = function() {
    var list = [];
    for (var id in this._items) {
        list.push($dataItems[id]);
    }
    return list;
};

Game_Party.prototype.weapons = function() {
    var list = [];
    for (var id in this._weapons) {
        list.push($dataWeapons[id]);
    }
    return list;
};

Game_Party.prototype.armors = function() {
    var list = [];
    for (var id in this._armors) {
        list.push($dataArmors[id]);
    }
    return list;
};



在進行道具分類時候,會用到這個
DataManager.isItem = function(item) {
    return item && $dataItems.contains(item);
};

DataManager.isWeapon = function(item) {
    return item && $dataWeapons.contains(item);
};

DataManager.isArmor = function(item) {
    return item && $dataArmors.contains(item);
};

送禮物贊助創作者 !
0
留言

創作回應

更多創作