微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我试图将一个变量从我的游戏管理器脚本传递到我的玩家控制器脚本。使用以下代码,我收到错误消息“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# 也有)。 不要犹豫,查看在线教程。这里有几个链接:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。