关于灵活取件系统的建议
Advice on Flexible Pickup System
首先,这是我第一次在这里发帖,我是编码新手,所以请把所有事情都交给我。 :)
我正在尝试使用 C# 在 Unity 中为游戏制作一个灵活的拾取系统。我希望能够从下拉菜单中选择一个拾音器类型,然后使用代码指示它更新哪个变量,我或未来的设计师必须调整的值最少。
例如:
在游戏中,您有健康回升和耐力回升。我在两个游戏对象上放置了相同的 HealthSystemPickup.cs。在检查器中,我选择它是健康还是耐力拾取类型,然后调整增加或减少的值。然后代码将告诉它根据所选的拾取类型更新健康或耐力。以此类推任何未来的皮卡类型。
我目前拥有的:
我有一个通过 public 枚举定义 PickupTypes 的脚本。
我有另一个脚本是 Pickup 本身,它允许您从该枚举列表中选择并在 OnTiggerEnter 事件上设置增加和减少值。
足够简单并且只要我从我的健康系统脚本中调用特定的方法就可以工作,但不是基于 PickupType...这就是我坚持的。我不确定如何根据 PickupType 指示我调用的方法。
我希望得到关于在哪里进行调查的建议或人们采取类似行动的方向。
任何帮助都会很棒!
谢谢。
这听起来很适合使用多态性。您可以定义一个接口或一个抽象的 superclass ,它具有您的其他脚本将与之交互的所有方法,并为健康和耐力类型。类似于:
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;
}
}
当你需要处理其他 class 中的取件时,你永远不会直接处理 HealthPickup
或 StaminaPickup
,你只是将它们称为 Pickup
的实例.
首先,这是我第一次在这里发帖,我是编码新手,所以请把所有事情都交给我。 :)
我正在尝试使用 C# 在 Unity 中为游戏制作一个灵活的拾取系统。我希望能够从下拉菜单中选择一个拾音器类型,然后使用代码指示它更新哪个变量,我或未来的设计师必须调整的值最少。
例如: 在游戏中,您有健康回升和耐力回升。我在两个游戏对象上放置了相同的 HealthSystemPickup.cs。在检查器中,我选择它是健康还是耐力拾取类型,然后调整增加或减少的值。然后代码将告诉它根据所选的拾取类型更新健康或耐力。以此类推任何未来的皮卡类型。
我目前拥有的:
我有一个通过 public 枚举定义 PickupTypes 的脚本。
我有另一个脚本是 Pickup 本身,它允许您从该枚举列表中选择并在 OnTiggerEnter 事件上设置增加和减少值。
足够简单并且只要我从我的健康系统脚本中调用特定的方法就可以工作,但不是基于 PickupType...这就是我坚持的。我不确定如何根据 PickupType 指示我调用的方法。
我希望得到关于在哪里进行调查的建议或人们采取类似行动的方向。
任何帮助都会很棒!
谢谢。
这听起来很适合使用多态性。您可以定义一个接口或一个抽象的 superclass ,它具有您的其他脚本将与之交互的所有方法,并为健康和耐力类型。类似于:
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;
}
}
当你需要处理其他 class 中的取件时,你永远不会直接处理 HealthPickup
或 StaminaPickup
,你只是将它们称为 Pickup
的实例.