Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 关于弹性捡拾系统的建议_Unity3d_Game Development - Fatal编程技术网

Unity3d 关于弹性捡拾系统的建议

Unity3d 关于弹性捡拾系统的建议,unity3d,game-development,Unity3d,Game Development,首先,这是我第一次在这里发帖,我对编码还不熟悉,所以请告诉我所有的事情。:) 我正在尝试使用C#为Unity游戏制作一个灵活的拾取系统。我希望能够从下拉列表中选择一种皮卡类型,然后让代码指示它使用最少的值更新哪个变量,以便我或未来的设计师进行调整 例如: 在游戏中,你有一个健康的提升和一个耐力的提升。我在两个游戏对象上放置相同的HealthSystemPickup.cs。在inspector中,我选择它是健康拾取类型还是耐力拾取类型,然后调整增加值或减少值。然后,代码会告诉它根据选择的拾取类型更

首先,这是我第一次在这里发帖,我对编码还不熟悉,所以请告诉我所有的事情。:)

我正在尝试使用C#为Unity游戏制作一个灵活的拾取系统。我希望能够从下拉列表中选择一种皮卡类型,然后让代码指示它使用最少的值更新哪个变量,以便我或未来的设计师进行调整

例如: 在游戏中,你有一个健康的提升和一个耐力的提升。我在两个游戏对象上放置相同的HealthSystemPickup.cs。在inspector中,我选择它是健康拾取类型还是耐力拾取类型,然后调整增加值或减少值。然后,代码会告诉它根据选择的拾取类型更新健康或耐力。对于任何未来的皮卡类型,依此类推

到目前为止,我所拥有的:

我有一个通过公共枚举定义拾取类型的脚本。
我有另一个脚本,它是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;
    }
}

当您需要处理其他课程中的皮卡时,您从不直接处理
healthcipakup
kup
,您只需将它们称为
Pickup
的实例即可。我会调查那条路线。我对它了解不多,所以了解更多这方面的知识也是一件好事。太好了。如果你对答案感到满意,请考虑将它标记为接受和投票。