使用默认角色运行任务时,可以通过挂Unity组件的方式实现按钮UI,通过配置相应的参数实现按钮的启用、文字和点击限制等。
在默认角色中有对操作项的支持,若为自定义角色则需要自行处理相关逻辑
添加操作项的两种方式
在Unity中挂载
DM0perationItem
组件选择需要添加操作项的游戏物体,
AddComponent -> DMBuildInScript -> DMOperationItem
即可添加操作项。使用
OperationConfig.xml
文件在组件对应的文件夹中,创建名为
OperationConfig.xml
的配置文件,运行时将会动态挂载操作项。
两种添加操作项的方式可以同时使用,根据不同情况自行选择添加方式。
操作项相关字段说明
字段 | 说明 |
Id | 操作项唯一ID |
Status | 操作项初始状态ID |
Type | 操作项需要选择对应物品的ID |
UI offset | 默认与当前游戏物体位置相同,设置显示位置偏移量 |
Oper items | 显示的文字、操作项状态ID和点击操作项之后的状态ID |
Oper type | 操作项显示类型,按钮、开关和滑动条等 |
Oper time | 操作项执行时间 |
CD time | 操作项可以再次执行的等待时间 |
Operator anim | 操作项对应的角色动画ID |
Operator begin pos | 操作项开始位置 |
Return knapsack id | 返回操作项需要物品的ID |
Oper distance | 可以与操作项交互的最大距离 |
Pre condition | 操作项执行条件 |
Component status | 组件状态 |
Operator mode | 操作模式 |
Operator skill | 需要角色开启对应技能 |
Usable | 是否启用这个操作项 |
Oper items的第一个元素,Status的值必须为0,并且Oper items中的所有New status必须存在,推荐使用连续值。
Oper type
类型 | 说明 |
Button | 单个按钮 |
Toggle | 开关 |
Slider | 滑动条 |
Dropdown | 下拉列表 |
Dropdown new | 下拉列表 |
Button list | 按钮列表 |
OperationConfig.xml示例
<?xml version="1.0" encoding="utf-8"?> <ArrayOfOperationItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <OperationItem> <Dir>Null</Dir> <Id>10001</Id> <Status>0</Status> <OperItems> <OperItem> <Value>0</Value> <Tips>Null</Tips> <Event>0</Event> </OperItem> <OperItem> <Value>0</Value> <Tips>Null</Tips> <Event>0</Event> </OperItem> </OperItems> <Type>0</Type> <OperType>0</OperType> <OperTime>0</OperTime> <CDTime>0</CDTime> <OperatorAnim>0</OperatorAnim> <OperatorBeginPos>Null</OperatorBeginPos> <ReturnKnapsackId>Null</ReturnKnapsackId> <OperDistance>0</OperDistance> <PreCondition> <PreCondition> <Id>Null</Id> <Status>0</Status> <OperCount>0</OperCount> </PreCondition> <PreCondition> <Id>Null</Id> <Status>0</Status> <OperCount>0</OperCount> </PreCondition> </PreCondition> <ComponentStatus>0</ComponentStatus> <OperatorStatus>0</OperatorStatus> <OperatorProfession>0</OperatorProfession> </OperationItem> <OperationItem> <Dir>Null</Dir> <Id>10002</Id> <Status>0</Status> <Type>0</Type> <OperType>0</OperType> <OperTime>0</OperTime> <CDTime>0</CDTime> <OperatorAnim>0</OperatorAnim> <OperatorBeginPos>Null</OperatorBeginPos> <ReturnKnapsackId>Null</ReturnKnapsackId> <OperDistance>0</OperDistance> <ComponentStatus>0</ComponentStatus> <OperatorStatus>0</OperatorStatus> <OperatorProfession>0</OperatorProfession> </OperationItem> </ArrayOfOperationItem>
不同类型操作项
Button
只有普通点击事件
Toggle
有选中和未选中状态
Slider
取值范围固定,最小值0最大值为100。Status的值为默认值,取值范围为0~100
Dropdown
同UGUI的dropdown,竖向排列
Dropdown New
横向排列的列表
Button List
横向排列的一组按钮。Status为默认值。若项中含有
[Folder=true]
标记时则在点击该项后自动折叠
Oper Items中每一项Text的内容,均支持富文本
每种类型均支持三种特殊的标记:
[Color=red]
、[Background=yellow]
和[Font=22]
,分别为指定字体颜色、指定背景颜色和指定文字大小。Color可以写为十六进制表示,如3c45f6
,内置的颜色值有:black
、blue
、cyan
、gray
、green
、grey
、red
、white
、yellow
特殊标记对大小写敏感
操作项点击事件
操作项点击后,将会向操作项所在的组件发送一条类型为SendType.MainToMain
、senderObj为点击操作项的角色、eventType为操作项ID、param为操作项当前状态ID的一条消息。
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。
相关资源和代码可以在示例工程中找到