UDN
Search public documentation:

MOBAKitShopCH
English Translation
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 虚幻开发工具包精华文章 > MOBA入门包 >商店

MOBA 初学者工具包 - 商店


于2012 年 5 月针对 UDK 进行最后测试

概述


该商店系统是个图形用户界面控件,允许玩家为他们的英雄购买新的道具。

UDKMOBAShop.jpg

UDKMOBAGFx_HUD


这是Scaleform HUD类,初始化并设置商店接口。

函数

  • ConfigShop() - 当第一次初始化Scaleform HUD时调用该函数。它配置商店中涉及到的所有控件,并将其缓存到变量中,以便稍后轻松地进行访问。它也读取UDKMOBAGFxHUDProperties 原型并填充商店目录和道具。最后,它将鼠标事件和适当的代理相绑定。一旦已经设置了商店,那么该函数将自动地隐藏它。
  • UpdateShop() - 当鼠标位于商店类别单选按钮上时该函数显示适当的工具提示。
  • ChangeShopItemType() - 当点击一个道具类型单选按钮时调用该函数。这改变了当前显示的道具类别视频剪辑。
  • ChangeShopCategory() - 当点击一个道具类别单选按钮时调用该函数。这改变了当前显示的道具列表。
  • PressShopItem() - 当点击一个商店道具列表时调用该函数。它处理玩家想在哪里购买东西。

UDKMOBAGFxHUDProperties


这是可以原型化的对象,它存储了所有道具的存储方式及在GUI上的显示方式。

UDKMOBAGFxHUDProperties.jpg

变量

  • Shop - 一个结构体数组,进一步定义了商店道具。这些结构体定义了一系列的道具类型(基本的、升级的、等)。
    • LocalizedItemTypeLabel - 道具类型的本地化名称。
    • ItemTypeRBName - 在Flash GUI中道具类型单选按钮的名称。
    • ItemCategoryMCName - 在Flash GUI中道具类别视频剪辑的名称。
    • ItemCategories - 一个结构体数组,进一步定义了商店道具。这些结构体定义了道具类别列表(基本1、基本2、基本3等)。
      • ItemCategoryRBName - Flash GUI中的道具类别单选按钮符号的名称。
      • ItemCategoryLstName - Flash GUI中的道具类别列表的名称。
      • LocalizedItemCategoryTooltip - 道具类别的本地化名称。
      • ItemArchetypes - 可以从该道具类型和道具类别中购买的道具原型数组。

UDKMOBAPlayerController


玩家控制器包含了处理允许玩家从商店购买道具所需要的复制的函数。在这里处理复制,因为GUI本身永远不会被复制,也不会处理复制。

函数

  • PurchaseItem() - 该函数既可以在服务器执行也可以在客户端执行,启动购买逻辑。首先,有一个判断语句来确保玩家可以购买所要求的道具。如果游戏正在客户端运行,那么它将执行远程过程调用(UDKMOBAPlayerController::ServerPurchaseItem()),以便服务器执行购买逻辑,并且在客户端侧模拟购买过程以减少任何延迟。如果游戏正在服务器上运行,那么它将仅调用 UDKMOBAPawnReplicationInfo::PurchaseItem()
  • ServerPurchaseItem() - 当服务器告诉客户端这样做时将调用该函数。该函数调用 UDKMOBAPawnReplicationInfo::PurchaseItem()
  • CanPurchaseItem() - 该函数根据玩家是否可以购买所请求的道具返回true或false。

UDKMOBAPawnReplicationInfo


这个复制信息用于英雄pawns。实施这个分离的目的是允许玩家可以同时控制多个英雄。因此,道具存储在这个复制信息中。

函数

  • PurchaseItem() - 当玩家想购买道具时在服务器上执行该函数。此时,游戏已经验证确定玩家可以购买该道具,并且不会再进行进一步的检查。使用 UDKMOBAPlayerReplicationInfo::ModifyMoney() 函数修改玩家的现金,并生成道具。接下来,决定如何将道具给予玩家。如果玩家位于一个有效的商店区域体积内,并且其背包有空余空间,那么将直接将道具给予玩家。如果玩家不再有效地商店区域体积内或者其背包内没有空余空间,但在仓库有空余空间,那么则将该道具放于仓库。否则,道具将会被丢落到地上,稍后其他玩家可以拾取。根据道具放置位置的不同,检查并组合自动创建的道具。
  • CheckForItemAutoCreation() - 当从仓库购买或获得一个新的道具时将在服务器上执行该函数。它迭代武器库中的所有道具,并检查判断它们是否具有它们需要的所有道具,以便创建新的背包道具。如果它们具有,那么则销毁旧的道具并给予新的道具。

变量

  • MAX_ITEM_COUNT - 一个常量,定义了玩家可以携带的最大道具数量。
  • MAX_STASH_COUNT - 一个常量,定义了玩家可以隐藏的道具的最大数量。
  • Items - 该英雄所具有的道具。该项在服务器和客户端之间进行维护。
  • DroppedItemArchetype - 默认掉落的道具原型。这个actor模板由游戏策划定义的,用于设置掉落拾取物的外观。

UDKMOBAShopAreaVolume


该体积定义了一个地图区域,在该区域内玩家购买道具,所购买的道具将进入到英雄的背包中而不是进入到它们的仓库。

UDKMOBAShopAreaVolume.jpg

函数

  • GetTeamNum() - 返回 TeamNum

变量

  • TeamNum - 该商店区域体积所属的团队的索引。
  • UpperLeftCorner - 该体积在世界坐标系中的左上角坐标。这用于生成掉落的背包道具。
  • LowerRightCorner - 该体积在世界坐标系中的右下角角坐标。这用于生成掉落的背包道具。