Unity3d 关于弹性捡拾系统的建议
首先,这是我第一次在这里发帖,我对编码还不熟悉,所以请告诉我所有的事情。:) 我正在尝试使用C#为Unity游戏制作一个灵活的拾取系统。我希望能够从下拉列表中选择一种皮卡类型,然后让代码指示它使用最少的值更新哪个变量,以便我或未来的设计师进行调整 例如: 在游戏中,你有一个健康的提升和一个耐力的提升。我在两个游戏对象上放置相同的HealthSystemPickup.cs。在inspector中,我选择它是健康拾取类型还是耐力拾取类型,然后调整增加值或减少值。然后,代码会告诉它根据选择的拾取类型更新健康或耐力。对于任何未来的皮卡类型,依此类推 到目前为止,我所拥有的: 我有一个通过公共枚举定义拾取类型的脚本。Unity3d 关于弹性捡拾系统的建议,unity3d,game-development,Unity3d,Game Development,首先,这是我第一次在这里发帖,我对编码还不熟悉,所以请告诉我所有的事情。:) 我正在尝试使用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
的实例即可。我会调查那条路线。我对它了解不多,所以了解更多这方面的知识也是一件好事。太好了。如果你对答案感到满意,请考虑将它标记为接受和投票。