# 上传并售卖商品

本章将带你手把手的创建联机大厅资源、上传商品,有关更多系统性的信息,请查阅商品上传文档

# 创建地图和商品

创建资源时,资源类别选择联机大厅,勾选商业化内购功能。

image-20220901182339201

创建好后,该资源将出现在 联机大厅商品栏

image-20220901182537714

点击 添加商品

image-20220901182801120

可选:编辑商品分类信息。

image-20220912015916334

编辑基本信息。

image-20220912020216785

实现指令见下一部分,补充剩余商品信息,并保存商品。

image-20220912021147595

将商品 提交自测 ,联机大厅资源本身也 提交自测 ,便可看到此商品出现在橱窗。

当然这只是测试版客户端的橱窗,正式版并不会上架此商品,若商品要投入生产环境,需要提交审核,然后更新到橱窗。

image-20220912021147595

image-20220901190523718 image-20220901190523718 image-20220901190523718

如上所示,添加剩余两个商品。

image-20220901182537714

image-20220912023500454

# 什么是实现指令

在上传商品时,你需要了解 实现指令 的概念。实现指令是一个 代号 ,由平台和开发者 提前约定好 ,用于识别玩家购买的商品,并授予游戏内的实现权限。当玩家在游戏中购买了某个商品后,商店会向联机大厅房间中运行的逻辑系统(Python/蓝图)发送一个事件,告诉逻辑系统玩家购买了XX商品。实现指令的内容就是这个商品。该事件包含一个实现指令参数,开发者通过这个参数,判断玩家购买的具体商品,以便给玩家发货。

image-20230319000115766

举个例子,如果你出售一个皮肤包,可将 实现指令 参数设置为 sendSkin_001 。如果有一个叫做 火箭发射器 的商品,那么对应的实现指令可以是 rocket_launcher 。一件魔法武器,实现指令可设为 magic_sword

在下图中,neteaseStore(官方商店UI)告知房间1: 玩家3购买了1个金苹果 ,那么实现指令就是 golden_apple

image-20220901182537714

简而言之,实现指令是连接平台和游戏内容逻辑代码的重要纽带,它帮助逻辑代码识别出哪个商品需要被发货,以便给玩家发放商品实现权限,确保购买商品的顺畅交付。

# 实现指令的两种格式

实现指令格式支持str(字符串)或json。若您对编程接触不深,建议使用字符串即可(填写时注意输入精准、注意大小写、不要有多余字符/空格、若有符号注意全半角问题)。

image-20230319000115766

也可以使用json格式。

image-20230319000115766

使用json格式,即使需要发生部分变化,只要核心内容没有改变, 仍不会影响识别功能本身

image-20230319000115766

json体内可包含任意字段,只要起到标识作用即可,可以是code或name或任意形式,取决于开发者喜好。

image-20230319000115766

实际填写实现指令之前,为了保证不出现无法反序列化错误,建议一定要在格式化工具里校验、压缩json。

image-20230319000115766 image-20230319000115766

# 实现指令的使用

若你使用本教程提供的demo和工具进行学习,那么参照以下流程,在两个地方输入同样的实现指令,即可绑定商品和发货零件。如果你是经验丰富的开发者,可参阅联机大厅商品2.0文档完全自行实现。

首先,拟好一个实现指令,例如vip1,在开平输入vip1。

image-20230319000115766

创建一个Vip1零件(取名随意),继承ShipBase。在此零件中编写Python代码或绑定蓝图实现此VIP特权功能。

image-20220901182537714

在零件的属性面板中,输入实现指令。

image-20220901182537714

这样一来,开平上的这个商品和这个零件就绑定了。玩家购买这个商品,所有发货零件会收到通知,但其他零件不会反应,而这个零件会检测到是它负责的商品,会执行发货实现逻辑。

def COnPlayerBrought(self, playerId, expireTime=-1.0, newBuy=False, orderTime=None):  #  当玩家购买此商品
	preset = self.GetParent().ToEffectPreset()
	preset.Play()  #  (实现你的逻辑)

def COnPlayerExpired(self, playerId):  #  当玩家商品权限过期
	preset = self.GetParent().ToEffectPreset()
	preset.Stop()  #  (实现你的逻辑)

# 更好的包装与宣传

上传好了商品,实现了功能,同时要注重包装与宣传,才能获得更高的销量。下图展示了商品宣传图片出现的位置,帮助你对美术素材准备建立预期。

未标题-1

下图展示了一段真实的游戏内商品购买的流程场景,观察商品宣传图片介绍文本出现的位置,帮助你对美术素材准备建立预期。

item_ship

更多关于商品宣传的信息,参阅宣传素材的设计与制作

高级

15分钟

创建地图和商品

什么是实现指令

实现指令的两种格式

实现指令的使用

更好的包装与宣传