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

问题描述

我试图将一个变量从我的游戏管理器脚本传递到我的玩家控制器脚本。使用以下代码,我收到错误消息“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);                    
}

解决方法

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

,

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

在你的情况下,访问这个变量是这样的:playerControllerScript.playerIsAlive


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

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

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

例如:


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# 也有)。 不要犹豫,查看在线教程。这里有几个链接: