打造个性化装备详情面板
在游戏开发过程中,为玩家提供详细且吸引人的装备信息展示是提升游戏体验的关键一环。本教程将引导开发者使用星火编辑器中的触发编辑器和界面编辑器,一步步实现一个功能完善且外观精美的自定义装备详情面板。
这里我们提供了一个简单的demo来供大家参考
链链接: https://pan.baidu.com/s/1-Zjn05iPhxKah_WsmuLqQA?pwd=SCE1 提取码: SCE1
在开始前我们先展示一下完成后的详情面板:
其中装备、使用、卸下按钮会根据其是否是装备、能否使用以及所在物品栏的位置来动态显现。以单手剑为例,当其在背包格子中会显示装备按钮,而当其在装备栏中则会显示卸下按钮。
同理,如果是类似于治疗药水之类的可使用的物品,则会显示使用按钮
接下来进入实操环节。首先我们需要在界面编辑器中对我们的背包面板ui进行配置,其中物品图标GUI需要使用『多功能格子』
然后到客户端使用『鼠标-点击物品栏中物品』事件创建我们的触发器,我们的逻辑应该是:
点击物品->隐藏预制详情面板->显示自定义面板
首先我们先写一个函数来显示我们的物品详情,这里我们需要添加两个参数:物品、详情面板。(其中物品是我们点击物品事件中点击到的物品,而详情面板则是我们main_page中写好的物品详情面板)
1.物品图标
这里用到的是我们的多功能格子,我们首先通过面向对象的办法为多功能格子绑定的物品进行赋值(此处的物品是我们点击物品栏物品中传进来的参数)
完成赋值后,我们的物品图标就可以正常显示了 p.s:如果想要让该格子显示物品数量则需要手动在界编中进行设置。同时需要隐藏格子的tips、以及关掉可以使用物品的按钮
2.物品名称、品质、介绍
这三种label控件均是通过面向对象的办法来对文字进行赋值
当然如果想要实现富文本则可以通过下面这种格式来实现:
<十六进制颜色代码:正文:>
例如:<#CC00BB:紫罗兰色:>
3.属性修改词条
这里的关键点是:如何拿到装备的被动增益
因为我们带词条的装备是:有效果的物品,因此我们首先要拿到它的数编表。再根据数编表拿到它装备效果时候的被动增益数组
对应数编的位置是这里(实际操作中不要设置空节点例如图中的2):
而拿到这个数组后我们需要对它进行遍历,拿到对应的被动增益BUFF_id:例如上图的:物品BUFF模板。而拿到这个BUFF模板后我们需要再次通过它的数编表用面向对象的办法拿到『属性修改』这个数组。通过遍历数组即可获取到我们的属性修改值。也就是下图中的:属性
大概流程如图所示:
由于每个武器的词条可能数目不同,我们可以用panel控件来展示它(这样我们就可以设置滚动来查看词条),再通过动态添加动态文本来实现词条的显示。 例如我们想要展示四个词条,而超过四个词条则需要我们手动进行拖动,这时我们可以设置一个数组来存储动态文本,当词条数量小于等于4的时候,我们动态增加词条控件的高度。
同时,我们每次点击物品都会触发这个显示详情的函数,那么我们需要在函数开始执行的时候重置我们的详情面板以及词条的高度。同时将上一次创建的词条文本GUI销毁掉并且初始化词条文本GUI数组。
最后我们只需要将我们拿到的词条显示出来即可,这里需要分两种情况:
1.词条进行了固化操作,这时候我们需要通过客户端物品的面向对象,获取它指定随机属性和词条的固定结果(其中Buff_id为我们上面数组中遍历到值,即:物品BUFF模板)
2.词条没进行固化,这里又有两种情况,分别是词条为基础值以及词条是百分比值。我们可以通过属性的子属性类型进行判断,然后对不同的值进行对应操作,比如对百分比值拼接一个"%"
4.装备、卸下、使用功能
这三个功能本质上是判断背包物品是装备还是可使用的物品(例如治疗药水)。在了解到他们的本质后我们就可以轻松实现对应的功能:通过面向对象的办法拿到物品的分类标签。通过分类标签来判断是可使用物品还是装备。 在这里我们需要设置一个全局变量用来监听物品的状态。
比如:可以设置一个数值类型的全局变量,初始状态为0,当数值为-1的时候定义它为装备,当数值为1的时候为可使用的物品(当然如果想让材料物品既不能使用也不能装备、卸下可以再加一个判断,这里我们默认只有可使用的物品以及装备)
定义完毕物品类型后我们便可以通过判断物品类型来控制不同背包中按钮的显示,比如可使用的物品在一号背包(六格包)、三号背包(材料包)只会显示『使用』按钮,而装备类型的物品则只会在一号背包显示『装备』(六格包)、二号背包『卸下』(装备栏)按钮。
装备、卸下显示逻辑:
使用显示逻辑:
装备、卸下功能逻辑
装备、卸下功能本质上是将物品移动到指定的物品栏中,因此,我们可以通过发送自定义事件(这里需要传对应物品参数进去)到服务端,再由服务端实现移动物品操作。这里的难点是如何获取到物品呢?
其实在开头我们使用多功能格子来显示物品就是为了方便我们后续发送物品,我们可以通过面向对象的办法拿到多功能格子绑定的物品,进而发送这个物品参数到我们的服务端。这里以装备物品为例 我们在装备按钮的点击事件中,通过多功能格子获取绑定的物品进而实现物品的转发
转发完 毕后就是装备物品的逻辑(也就是移动到装备栏中)
同理,卸下装备也是如此。
使用物品
正常来说我们使用物品都是无目标技能,因此这里以无目标技能为例展示使用消耗类型的物品。如同装备、卸下物品,使用物品的时候我们也需要传一个物品参数到服务端,然后通过出发语句:『令单位使用物品(无目标)』即可。逻辑如下:
到此为止我们自定义的装备详情面板就大功告成了❀❀