CCG Kit 策略卡牌游戏开发框架教程 | (五)编辑器扩展

在这里插入图片描述


【CCG Kit最新版 免费下载地址


创建新的卡片效果

CCG 套件包括一组默认卡片效果:

  • 增加玩家属性:它在给定的持续时间内以给定的数量增加目标玩家的属性。
  • 减少玩家属性:它在给定的持续时间内按给定的数量减少目标玩家的属性。
  • 设置玩家统计数据:它将目标玩家的统计数据设置为给定值。
  • 重置玩家属性:它将目标玩家的属性重置为其原始值。
  • 增加卡牌属性:它在给定的持续时间内按给定的数量增加目标卡的属性。
  • 减少卡牌属性:它在给定的持续时间内将目标卡的属性减少给定的数量。
  • 设置卡牌属性:它将目标卡的属性设置为给定值。
  • 重置卡牌属性:它将目标卡的属性重置为其原始值。
  • 添加关键字:它将给定的关键字添加到目标卡中。
  • 删除关键字:它从目标卡中删除给定的关键字。
  • 移动卡牌效果:将目标卡牌移动到另一个游戏区域。

可以以非常方便的方式创建自己的自定义效果,编辑器将自动选择它们并在效果下拉列表中提供它们,而无需您编写任何其他代码来执行此操作。
在这里插入图片描述
如果要创建新效果,首先需要确定它是玩家效果(即,它针对一个玩家或一组玩家)还是卡牌效果(即,它针对一张牌或一组牌)。

我们以 增加玩家属性 效果作为玩家效应的参考:

[PlayerTarget]
public class IncreasePlayerStatEffect : PlayerEffect
{
    [PlayerStatField("Player stat")]
    [Order(1)]
    public int statId;

    [ValueField("Value")]
    [Order(2)]
    public Value value;

    [IntField("Duration")]
    [Order(3)]
    public int duration;

    public override void Resolve(GameState state, PlayerInfo player)
    {
        var modifier = new Modifier(value.GetValue(state, player), duration);
        player.stats[statId].AddModifier(modifier);
    }
}

减少卡牌效果 作为对卡牌效果的参考:

[CardTarget]
public class DecreaseCardStatEffect : CardStatEffect
{
    [ValueField("Value")]
    [Order(4)]
    public Value value;

    [IntField("Duration")]
    [Order(5)]
    public int duration;

    public override void Resolve(GameState state, RuntimeCard card)
    {
        var modifier = new Modifier(-value.GetValue(state, card.ownerPlayer), duration);
        card.stats[statId].AddModifier(modifier);
    }
}

如您所见,有几个有用的Effect基类:

  • PlayerEffect:播放器效果的基类。
  • CardEffect:卡片效果的基类。
  • CardStatEffect:卡片统计效果的实用工具基类。

以及Effect字段的几个有用特性:

  • Order:它允许您在可视化编辑器中确定字段的呈现顺序。
  • IntField:用于整数字段。
  • EnumField:用于枚举字段。
  • ValueField:用于值字段。
  • PlayerStatField:用于玩家统计字段。
  • CardTypeField:用于卡片类型字段。
  • CardStatField:用于卡片统计字段。
  • KeywordTypeField:用于关键字类型字段。
  • KeywordValueField:用于关键字值字段。
  • GameZoneField:用于游戏区域字段。

通过这些特性,您可以动态访问为游戏定义的常规设置(如统计信息或区域),而无需编写任何其他代码。这是上一个播放器效果在编辑器中的样子:

在这里插入图片描述
在这里插入图片描述
Effect 的实际逻辑发生在 Resolve 方法中,玩家 effects 的签名如下:

public override void Resolve(GameState state, PlayerInfo player)
{
    // ...
}

卡片 effects 的签名如下:

public override void Resolve(GameState state, RuntimeCard card)
{
    // ...
}
  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值