与操作项配合使用。操作项可以指定角色手持某种物品才可以点击按钮。

需要设置操作项的Type与物品项的Type和Target Type相同才会关联。

ItemExample.png

在默认角色中有对操作项的支持,若为自定义角色则需要自行处理相关逻辑

添加物品项的两种方式

  1. 在Unity中挂载DMKnapsackItem组件

    选择需要添加物品项的游戏物体,AddComponent -> DMBuildInScript -> DMKnapsackItem即可添加物品项。

  2. 使用KnapsackConfig.xml文件

    在组件对应的文件夹中,创建名为KnapsackConfig.xml的配置文件,运行时将会动态挂载物品项。

两种添加物品项的方式可以同时使用,根据不同情况自行选择添加方式。

物品项相关字段说明

字段说明
Id物品项唯一ID
Status物品状态ID
Type物品类型ID
UI offset物品项显示位置默认与当前游戏物体相同,设置显示位置偏移量
Name物品名称
Description物品描述
Picture物品在物品栏显示的图标
Knap type显示物品放在左/右手中
Count物品数量
CD time下一次使用的等待时间
Is apply source only是否应用到源
Target type目标类型
Distance操作距离
KnapsackConfig.xml示例

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfKnapsackItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <KnapsackItem>
    <Dir>Null</Dir>
    <Id>20002</Id>
    <Name>手机</Name>
    <Description>Null</Description>
    <Picture>Null</Picture>
    <Status>0</Status>
    <Type>0</Type>
    <OperType>0</OperType>
    <Count>0</Count>
    <CDTime>0</CDTime>
    <IsApplySourceOnly>false</IsApplySourceOnly>
    <TargetType>0</TargetType>
    <Distance>0</Distance>
  </KnapsackItem>
  <KnapsackItem>
    <Dir>Null</Dir>
    <Id>Null</Id>
    <Name>Null</Name>
    <Description>Null</Description>
    <Picture>Null</Picture>
    <Status>0</Status>
    <Type>0</Type>
    <OperType>0</OperType>
    <Count>0</Count>
    <CDTime>0</CDTime>
    <IsApplySourceOnly>false</IsApplySourceOnly>
    <TargetType>0</TargetType>
    <Distance>0</Distance>
  </KnapsackItem>
</ArrayOfKnapsackItem>

示例

在Unity创建一个物品资源并打包:

ItemExampleConfig.PNG

创建一个需要物品的操作项。设置操作项的Type与物品的Type相同。

NeedItemOperationConfig.PNG

添加操作项的点击事件,点击时向控制台输出日志:

using DM.IFS;
using UnityEngine;

public class Main : ScriptManager, IMesRec
{
    private void Awake()
    {
        sender.DebugMode = true;
    }

    public void RecMessage(SendType type, GameObject senderObj, int eventType, string param)
    {
        sender.Log(string.Format("组件[{0}]收到一条[{1}]类型的消息,发送者名称为[{2}],事件类型ID是[{3}],携带了参数:{4}",
            this.gameObject.name,
            type.ToString(),
            senderObj.ToString(),
            eventType,
            param == null ? "" : param));
    }
}

将组件放到DM平台中并运行:

NeedItemOperationExample.gif