提问人:TUK 提问时间:7/24/2023 最后编辑:TUK 更新时间:7/24/2023 访问量:35
如何在 switch 语句中从另一个脚本更改变量的值?
How to change a variable's value from another script in a switch statement?
问:
我正在构建一个统一的游戏,我希望玩家能够购买永久升级(它将一直持续到游戏结束)。
我的gameObject上有这个脚本:shopManager
public class ShopManager : MonoBehaviour
{
public int coins;
//References
public PlayerController playerCon;
public HurtEnemy[] hurtEnms;
public HurtPlayer[] hurtPlas;
// Start is called before the first frame update
void Start()
{
playerCon = FindObjectOfType<PlayerController>();
hurtEnms = FindObjectsOfType<HurtEnemy>(); //there are a few weapons that can hurt enemies
hurtPlas = FindObjectsOfType<HurtPlayer>(); //there are a few enemies that can hurt the player
}
public void BuyItem(ShopItem item)
{
if (coins>=item.price)
{
coins -= item.price;
ApplyChangesToPlayer(item);
}
}
public void ApplyChangesToPlayer(ShopItem item)
{
switch (item.name)
{
case "Speed":
playerCon.speed += 1f;
break;
case "Strength": //doing more damage
foreach (var hurtEnm in hurtEnms)
hurtEnm.damage++;
break;
case "Reduced damage": //all enemies do less damage
foreach (var hurtPla in hurtPlas)
hurtPla.damagePerHit--;
break;
case "Weapon":
playerCon.hasWeapon = true;
break;
}
}
}
只有当我选择速度时才会提供提升,但它对其他人不起作用。
我尝试获取的变量(和)在定义它们的脚本中是公开的:hasWeapon
damage
damagePerHit
public class HurtEnemy : MonoBehaviour
{
public int damage;
}
public class HurtPlayer : MonoBehaviour
{
public int damagePerHit;
}
public class PlayerController : MonoBehaviour
{
public float speed;
public bool hasWeapon=false;
}
我不明白为什么速度提升有效,而其他人则不行。
答: 暂无答案
评论
HurtEnemy.hasWeapon