Inventory Master - uGUI 使用UGUI作为基础的、一款免费的UI系统插件,适用于 unity5,插件提供了背包、快捷键栏、仓库、商店和工艺制造等一系列的游戏UI解决方案,并且还是免费的,在商城中直接就能下载使用 https://www.assetstore.unity3d.com/cn/#!/content/26310
先不管这款UI插件在国内的人气如何,博主觉得其还是挺有学习价值的,不管你是用UGUI的也好,用NGUI的也好,学API学到一定的程度后,终究会发现解决 问题的关键是你的思路。
下文是博主对这款插件的研究过程,在官方文档的基础上又加以自身的理解,希望对大家的学习有所帮助!
——————————————————————————————————————————————————————————
1. 插件使用到的Tag:
请确保您在项目中有以下标签:
如创建 equipment system ,需要预设一个名为 Canvas 的Tag。
在菜单上“主系统Master System”,然后点击“即时通讯管理 IM-Manager”。有一个标签叫做项目数据库 ItemDatabase。
2. 如何创建/管理项目
打开项目数据库
ItemDatabase,将看到以下窗口并有2个标题:
第一个标题是用于创建一个项目,二是管理所有现有项目。如果你想
要添加一个项目,您必须单击“添加项目Add Item”。
“ItemType”已经有一大堆类型预设,你必须选择确定你的类型
项目。“最大堆栈 Max Stack ”是指为特定物品的堆积的上限。“稀有 Rarity”是重要的物品,并设置物品
一个特定的机率掉落。如果你设置为1的稀有程度,这个物品将掉落的机会很低,低于30%
。该项目—
人的活动是重要的。当物品被标为”消耗品 consume item”,你可以在游戏中
对这物品的属性进行操作。
如果您想管理项目,请单击“管理项目 Manage Items”:
所有项目的列表以上显示。当你点击一个项目如果你发现有相同的可能性,你
可以从项目数据库中删除项。
3. Blueprint data base
蓝图数据库
在菜单上“主系统 Master System”,然后点击“即时通讯管理 IM-Manager”。有一个标签叫 blueprintdata-base。
如何创建 create/manage receipt/blueprint
打开blueprintdatabase将出现下面的窗口:
如果你想创建一个物品,你必须选择一个“最终项目 Final Item ”,然后设置所需的材料条件,你
可以设置材料的数量。
如果你想管理蓝图,你必须点击“管理蓝图 Manage Blueprints”,
您可以删除不需要的蓝图。
4. 背包
如果你想创建一个背包,比去菜单“主系统 Master System”,点击“Create/Inventory and Storage
库存和储存“。您所创建的每一个与主系统的库存都将有一个
背包脚本 Inventory Script 。
库存脚本
Inventory Script
你必须在“Player
Inventory“上 打钩,
这是您的主要
角色的库存系统。如果你想改变
库存,打开
折页”Inventory Settings”
你有4种不同的选择。
前两者是
单元格的个数,在总体高度和
宽度上的数量。“slot size”指
每个单元格的大小。“Icon Size”是
每个物品的图标大小。
如果你想改变单元格填充
的边界或
单元格之间的间距 ,打开折
页“填充 Padding”,“Left, Right,,
Bottom, Top”意味着填充
背包的边界大小
。“Spacing X 和
Spacing Y”指单元格之间的间距。
如果你想激活物品的叠加和分裂的功能,打开折页”Stacking/Splitting ”
并打上钩,然后你看见新出现的选项,并设置叠加数字显示的坐标位置。
如果你想将一个条目添加到库存,在脚本下面有选择项,选择合适的物品和数量,并
点击“添加项目 Add Item”。物品将被放置到背包中一个空的单元格内。
5. 库存设计脚本
每个清单都有这个脚本。如果你
想要改变你的库存设计,你必须在 inspector面板中寻找到这个脚本。
如果您打开“库存设计 Inventory Design”的
折页,你可以为库存去创造一个
标题,这将是
显示在库存顶部(默认)
。当你打开折页
“字体 Font”你可以按你喜欢的去设计标题文字
。此外,你可以改变
字体样式的字体设置,
大小,颜色等。
如果你想改变
库存的背景,
打开
“库存设计 Inventory Design”
折页,你可以改变
库存的“源图像 Source Image ”。
此外,你可以改变图片的颜色
和材质
,图像类型和填充中心。
如果你想有一个关闭按钮
在右上角,你必须激活
“closebutton”选项,调整按钮的坐标
位置。此外,你可以
如果改变按钮的背景
,你只需要打开
“设计 Design”折页。
如果你想改变设计
每个单元格,你可以打开 “Slot
Design”设计。你可以改变
源图像。此外你
可以改变图片的颜色,
材质,图像类型,你可以切换填充中心。如果你改变颜色,它可能会有一点延迟,因为这个
预制正在同步改变,这可能需要少量的系统资源。
6. 装备
如果你想创建一个角色装备系统,你必须去 “Master Sys
tem/Create/EquipmentSystem”。设备系统具有库存脚本、装备系统
脚本和库存设计脚本。
装备系统脚本 Equipment System Script
创建一个特定数量的装备系统
(slot amount 单元格数量),
在那里你可以指定插槽
类型。此外
slot 1,在默认设置,是
在左上角的第一个单元格,而slot 2则在
右上角的第一个单元格。
快捷栏
如果你想创建一个符合你需要的快捷栏,可以去“Master System/Create/Hotbar”创建。这
快捷栏有
快捷栏脚本、
库存脚本,和库存设计脚本。
快捷栏的脚本 Hotbar Script
脚本创建了一个特定数量的
关键码的快捷栏
。Slot
1 是从左起的第一个插槽。当你改变这里的Slot数量时,快捷栏的格子数量也会改变。
工艺系统 Craft System
如果你想创建一个craft system 你必须去 “Master System/Create/CraftSystem。这个
工艺系统有库存脚本、工艺系统脚本和库存设计脚本。
工艺系统脚本 Craft System Script
工艺系统脚本让你改变
一些设计方案。第一折页
“final slot”给你机会定位单元格到一个特定的地方。第二折页“Arrows 箭头”,让您选择坐标位置和旋转方向。
下一个大的折页”Design“让你
改变“final slot”和 设计“
Arrows”。你可以在折页中的选项去
改变纹理、颜色、材质、图像类型以及与填充中心的切换。
工具提示
如果你想创建一个提示,你必须去“Master System/Create/Tooltip”。工具提示是
没有其他的脚本的。
提示脚本 Tooltip Script
你能做的第一件事是
改变工具提示面板的大小
。此外,你可以改变
该工具提示的背景纹理。那里
你有机会改变纹理,颜色,材质和图像类型。
你有三个不同的开关。
当你勾出一个开关,你将激活相应功能。在我们的例子中,所有的功能都被激活。
如果你激活了“项目图标 Item Icon ”你
可以在提示的位置附上图标。此外,你可以改变
图标的大小。
如果你激活了“项目名称 Item Name ”
你可以定位你的名字
更改字体设置。你有以下的设置:字体,字体,字体
尺寸,线间距,丰富的文字,颜色和材质。
如果您已激活该”物品描述 Item Description“,
你可以改变描述出现的位置和改变
文本字段的大小。此外你
可以更改所有字体设置。
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— API ——————————————————————————————————————
1. Item.class 物品类
变量:
string itemName 物品名称
int itemID
每个物品都有他自己独特的ID
stringitemDesc
物品的描述。
Sprite itemIcon 物品的图标
GameObject itemModel 物品的模型
int itemValue 物品数量,
在默认情况下itemValue是1。
Itemtype itemtype 物品的类型
int maxStack 最大叠加数量
int rarity 物品稀有程度
函数:
getCopy() 这个方法返回一个物品的复制品。
2. ItemDataBase.class 物品数据库类
变量:
List itemList 提取itemdatabase中所以物品列表
例如:
——————————————————————————————
3. Inventory.class 库存类
每一个存储、制定工艺craftsystem、 角色装备charactersystem 使用库存类脚本。
变量:
bool mainInventory 判断是否为玩家的主要背包
List ItemsInInventory 目前在库存中的物品。
每次拖动、拖放和使用 一个物品时,都会进行更新。
int height 在纵向的库存格子数量。
int width 在横向的库存格子数量。
bool stackable 物品是否可以堆叠。当这个布尔值为真时,物品的数量才会出现,否则
不会。
int slotSize 每个单元格的大小。
int iconSize 物品图标的大小。
int paddingBetweenX 填充在X轴之间的单元格缝隙
int paddingBetweenY 填充在Y轴之间的单元格缝隙
int paddingLeft 填充
左侧单元格的边界
int paddingRight 填充右侧单元格的边界
int paddingBottom 填充底部单元格的边界
int paddingTop 填充顶部单元格的边界
int positionNumberX 可堆叠的物品的显示数量位置(X轴)
int positionNumberY 可堆叠的物品的显示数量位置(Y轴)
函数:
Inventory.closeInventory()
关闭背包
adjustInventorySize()
此方法调整库存的默认大小。
使用到的变量:
width
height
slotsize
paddingbetweenX
paddingbetweenY
paddingLeft
paddingRight
paddingTop
paddingBottom
————————————————————————
updateSlotAmount()
使用到变量:
width
height
例如:
——————————————————————
updateSlotSize()
使用到变量:
slotSize
例如:
——————————————————————————————————
updatePadding()
使用变量:
paddingBetweenX
paddingBetweenY
paddingRight
paddingLeft
paddingTop
paddingBottom
例如:
————————————————————————————————————
updateIconSize()
使用变量:
iconSize
例如:
——————————————————————————————————————
addItemToInventory(int ITEMID), GameObjectaddItemToInventory(int itemID, int itemVALUE)
这个函数增加了一个物品。这个函数需要一个物品ID和可能需要一个 itemvalue 物品数量 。如果你不
使用该函数具有特定的物品数量 itemvalue,那么其默认值为1。
addItemToInventory(int itemID, int
itemValue)也将返回与该物品的对象。
例如:
————————————————————————————————————————————————————
GameObject getItemGameObject (Item item)
返回一个物品的游戏对象。
bool checkIfItemAllreadyExist(int itemID, int itemValue)
这个函数返回一个布尔值,也将该物品添加到库存的堆栈中,当库存中已经存在一个相同的物品可以堆叠放置,那么它返回真。如果库存中没有现成的堆栈,那么它返回假。
stackableSettings()
使用变量:
positionNumberX
positionNumberY
stackable
例如:
————————————————————————————————————————————————————
deleteAllItems ()
deleteItem (Item item)
sortItems(Item item)
这个函数取得所有的物品,并将它们放置在一个序列中。
deleteItemFromInventoryWithGameObject (Item item)
从库存中删除物品的游戏对象。
——————————————————————————————————————————————————————————————
事件:
Inventory
Inventory.ItemEquipt
这个事件是当你装备一个物品时。
Inventory.ItemConsumed
这个事件是当你使用一个物品时。
Inventory.UnEquipItem 这个事件是当你卸下一个物品时。
Inventory.InventoryOpened
这个事件是当你打开一个库存时。
Inventory.AllInventoriesClosed
这个事件当所有库存都关闭时。
例如:
第一步:
首先你要做的事情,当你使用的事件,你必须先 注册 方法,当
事件被触发时,这个方法才会被调用。
第二步:
下一步是定义当事件被触发时函数所做的。
——————————————————————————————————————————————————————————————————————
4. EquipmentSystem.class 装备系统类
变量:
int slotsInTotal
装备系统E
quipmentSystem插槽的数量。
Itemtype[] itemTypeOfSlots 一
个数组,存储每个插槽的物品类型。
例如:
在这个例子中,我们设置的第一个插槽的装备类型是 胸部Chest。
————————————————————————————————————————————————————————————————————————
5. Hotbar.class 快捷栏类
变量:
int slotsInTotal
在快捷栏的插槽的数量。
Itemtype[] keyCodesForSlots
一个数组,存储为每个槽的键码。
例如:
——————————————————————————————————————————————————————————————————————————————————————————————————————————————
实际项目使用经验总结:
1. 请确保有 MainInventory 标签(其它的Tag系统会自动生成,唯独这个创建背包的Tag有时不会自动生成!)
2. 如果创建的项目如背包系统,出现没法在UI上显示的问题,请确保其 Scale 设置是否正确(1,1,1) 。
3. CloseInventory 自带的关闭按钮脚本不能触发按钮点击事件,最好不要使用这个脚本,移除掉!
4. 这款插件应该是作者个人开发的,一个人的力量总是很单薄,难以避免一些BUG,所以你在学习过程中应该带着批判精神。