Store And Equipment System In Unity3D
Introduction
物品元素可以说是所有RPG的必备系统,毕竟,如果没有物品系统就没有消耗,没有消耗哪能骗玩家充钱呢?最简单的物品系统应该是所谓的商店、背包加装备的结构,而这个Demo则主要基于UGUI实现一个简单的上述系统
UI
制作系统的第一步便是UI的绘制了。无论美术资源来自何方,画风如何,应该基本包括如下几个层面:
- 角色信息界面,用于显示主角的装备槽位以及正在穿戴中的装备
- 背包界面,用于显示主角拥有的物品集合
- 金钱标签,用于显示主角当前拥有的钱币
- 商店界面,用于显示当前售卖的物品集合
- (可选)快速物品栏,通常与技能栏合用,让玩家能够快速使用物品
在我的Demo中也基本实现了上述模块
Bag System
一个背包系统的组成很简单,即面板+很多的格子,再贴一个金钱的文本框和几个图标就能够完成,我的背包也是基于上述想法来实现的:
- 通过Unity3D的Scroll View作为背包系统的主面板
- 创建Grid对象,并设置其Image为相应的Spirit作为物品图标
- 实现物品拖动逻辑,主要是在C#脚本实现动画表现,Lua更新数据,即注册onDrag事件,当鼠标拖动一个Grid时,创建一个当前Grid的副本,并在onDraging中不断获取当前鼠标所在的屏幕坐标赋值给副本的Transform,最后进行鼠标弹起位置的判断是否放在有效的区域,若位置合法则移动物品,并将数据写入Lua类,同步到服务器
// copy current grid
public static InventoryUIItemWrapperBase CreateDragObject(InventoryUIItemWrapperBase from)
{
var copy = GameObject.Instantiate<InventoryUIItemWrapperBa