You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#事件开发难题:对峙模拟程序中敌人瞄准触发事件实现

针对对峙模拟游戏中瞄准触发信任调整的实现建议

嘿,你已经迈出了用事件驱动来处理瞄准逻辑的关键一步!我来帮你把这个功能补全并优化,让它更健壮、更贴合你的需求~

首先,先把你给出的Enemy类代码补全并修正一些细节:

// 假设你已定义信任属性,示例初始值设为50
public float TrustLevel { get; set; } = 50f;

public event EventHandler RexAim;

// 线程安全的事件触发方法(推荐写法)
protected virtual void OnRexAim(EventArgs e)
{
    // 用空条件运算符避免多线程下的空引用问题
    RexAim?.Invoke(this, e);
}

// 完善瞄准方法,接收目标对象参数
public void RexAimAt(object target)
{
    // 替换成你的实际瞄准判断逻辑,比如是否锁定目标
    bool isAimingSuccessfully = true;

    if (isAimingSuccessfully)
    {
        Console.WriteLine("Rex has aimed at a target!");
        // 触发瞄准事件
        OnRexAim(EventArgs.Empty);
    }
}

进阶优化:传递瞄准目标信息

如果你的信任调整逻辑需要知道瞄准的具体对象,可以自定义EventArgs类来传递额外数据:

// 自定义瞄准事件参数,携带目标信息
public class RexAimEventArgs : EventArgs
{
    public object Target { get; }

    public RexAimEventArgs(object target)
    {
        Target = target;
    }
}

// 更新Enemy类中的事件和触发方法
public event EventHandler<RexAimEventArgs> RexAim;

protected virtual void OnRexAim(RexAimEventArgs e)
{
    RexAim?.Invoke(this, e);
}

public void RexAimAt(object target)
{
    bool isAimingSuccessfully = true;

    if (isAimingSuccessfully)
    {
        Console.WriteLine($"Rex has aimed at {target}!");
        // 传递目标信息触发事件
        OnRexAim(new RexAimEventArgs(target));
    }
}

订阅事件并调整信任属性

接下来,在需要处理信任调整的地方(比如游戏管理器、目标对象本身)订阅这个事件:

// 示例:初始化敌人实例并订阅事件
var enemyRex = new Enemy();
var targetEnemy = new Enemy();

// 订阅Rex的瞄准事件,触发时调整目标的信任值
enemyRex.RexAim += (sender, e) =>
{
    // 若使用自定义EventArgs,可直接获取目标对象
    var target = e.Target as Enemy;
    if (target != null)
    {
        target.TrustLevel -= 10f; // 瞄准一次,信任值降低10
        Console.WriteLine($"Target's trust level is now {target.TrustLevel}");
    }
};

// 调用瞄准方法触发事件
enemyRex.RexAimAt(targetEnemy);

关键注意点

  • 事件触发方法OnRexAim建议设为protected virtual,方便子类重写扩展逻辑。
  • 使用?.Invoke是C# 6+的语法,能避免多线程环境下“判断事件非空后,事件被突然注销”导致的空引用异常。
  • 自定义EventArgs可以让事件传递更多业务数据,让你的逻辑更灵活。

内容的提问来源于stack exchange,提问作者Kurtillius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:29:29