【问题标题】:How to pass value a public variable to another script如何将公共变量的值传递给另一个脚本
【发布时间】:2021-09-22 11:19:53
【问题描述】:

我正在尝试将变量从我的游戏管理器脚本传递到我的播放器控制器脚本。使用以下代码,我收到错误消息“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 ?

标签: c# unity3d spawn ienumerator


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    在您的情况下,访问此变量如下所示: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#)。 不要犹豫,查看在线教程。这里有几个链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 2014-02-24
      • 2013-08-27
      • 2011-02-08
      • 2021-09-28
      • 2015-07-26
      • 1970-01-01
      相关资源
      最近更新 更多