微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有关灵活接送系统的建议

如何解决有关灵活接送系统的建议

首先,这是我第一次在这里发布信息,我是编码的新手,请多多包涵。 :)

我正在尝试使用C#为Unity中的游戏制作灵活的拾取系统。我希望能够从下拉菜单中选择一个“拾取类型”,然后用我或将来的设计师必须调整的最小数量的值来指导它更新哪个变量。

例如: 在游戏中,您有一个健康拾取器和一个耐力拾取器。我在两个游戏对象上都放置了相同的HealthSystemPickup.cs。在检查器中,我选择它是健康拾取还是耐力拾取,然后调整增加或减少值。然后,代码将告诉它根据所选的代答类型更新健康状况或耐力。对于将来的任何皮卡类型,依此类推。

到目前为止我所拥有的:

我有一个脚本,可以通过公共枚举定义PickupTypes。
我还有另一个脚本,就是Pickup本身,它允许您从该枚举列表中进行选择,并在OnTiggerEnter事件上设置一个增减值。

足够简单,只要我从运行状况系统脚本中调用特定方法即可工作,但不是基于PickupType ...,这就是我坚持的目标。我不确定如何根据PickupType指示要调用方法

我希望获得有关人们在哪里进行调查或指导人们采取类似行动的建议。

任何帮助都会很棒!

谢谢。

解决方法

这听起来像是使用多态性的不错选择。您可以定义一个接口或抽象超类,该接口或抽象超类具有其他脚本将与之交互的所有方法,并为运行状况和耐力类型分离类(而不是具有枚举类型的单个类)。像这样:

public abstract class Pickup : MonoBehaviour
{
    public int amount = 10;
    public abstract void PickUp(Player player);
}

public class HealthPickup : Pickup
{
    public override void PickUp(Player player)
    {
         player.Health += amount;
    }
}

public class StaminaPickup
{
    public override void PickUp(Player player)
    {
         player.Stamina += amount;
    }
}

当您需要处理其他类别的取件时,您永远不会直接寻址HealthPickupStaminaPickup,而只是将它们称为Pickup的实例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。