unity c#,无法从另一个脚本访问变量

unity c#, unable to acces a variable form another script

我想从另一个名为 BulletScript 的脚本访问一个名为 cooldown 的变量,但我无法弄清楚我的代码有什么问题。 这是我的代码: 第一名:

using UnityEngine;

public class gunMechanic : MonoBehaviour
{
    private BulletScript bulletScript;

    private void Awake() {
        bulletScript = GameObject.FindObjectOfType<BulletScript>();
        Debug.Log(bulletScript.cooldown);
    }
}

第二名:


using UnityEngine;

public class BulletScript : MonoBehaviour
{
  public float cooldown = 1;
}

首先我认为你应该将变量声明为 static,如果你希望值是你正在寻找它的脚本的值。

不要声明class然后找变量,直接用BulletScript.cooldown

调用

您的问题可能有多种不同的原因。尝试在 private BulletScript bulletScript; 之前添加 [SerializeField] 并使用脚本直接序列化对象。

您有可能:

  1. 不要将此脚本添加到场景中的对象;
  2. 在两个不同的附加加载场景中有这些脚本;
  3. Awake() and/or Start();
  4. 之后用第二个脚本实例化对象
  5. 忘记用第二个脚本实例化对象。

如果您可以提供有关项目启动的任何日志或更多信息。