如何将 public 变量的值传递给另一个脚本

How to pass value a public variable to another script

我正在尝试将一个变量从我的游戏管理器脚本传递到我的玩家控制器脚本。使用以下代码,我收到错误消息“当前上下文中不存在 playerIsAlive”。

游戏管理器脚本:

playerControllerScript = GameObject.Find("Player").GetComponent<PlayerController>();
    
void Update()
{
    if(playerIsAlive == false)
    {
        StartCoroutine(PlayerRespawn);
    }
}

玩家控制器脚本:

public bool playerIsAlive;

else if(collision.gameObject.CompareTag("Enemy"))
{
    playerIsAlive = false;
    Destroy(gameObject);                    
}

您应该在游戏管理器脚本中 playerControllerScript.playerIsAlive 而不是将布尔值引用为 playerIsAlive

要从另一个对象访问字段(或方法),必须遵循以下语法:[objectReferenceVariable] . [字段名称]。注意点。

在你的例子中,访问这个变量就像这样:playerControllerScript.playerIsAlive.


虽然您的描述中缺少元素,因此此答案可能不适合您的问题。我正在扣除一些信息。 此外,在第二部分(关于 PlayerController)中,它们是一个与此处无关的 else

我还没有足够的 Whosebug 声誉先评论你的问题,但要注意你问题中的代码格式。

显示所有必要的信息,最好给每个代码文件自己的代码块。

例如:


public class GameManager
{
    private PlayerController playerControllerScript;

    void Start()
    {
        playerControllerScript = GameObject.Find("Player").GetComponent<PlayerController>();
    }

    void Update()
    {
        if(playerIsAlive == false)
        {
          StartCoroutine(PlayerRespawn);
        }
    }
}
public class PlayerController
{
    public bool playerIsAlive;
}

看来您对 Unity 的经验也很少(也许对 C# 也没有)。 不要犹豫,查看在线教程。这里有几个链接: