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] 并使用脚本直接序列化对象。
您有可能:
- 不要将此脚本添加到场景中的对象;
- 在两个不同的附加加载场景中有这些脚本;
- 在
Awake()
and/or Start()
; 之后用第二个脚本实例化对象
- 忘记用第二个脚本实例化对象。
如果您可以提供有关项目启动的任何日志或更多信息。
我想从另一个名为 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] 并使用脚本直接序列化对象。
您有可能:
- 不要将此脚本添加到场景中的对象;
- 在两个不同的附加加载场景中有这些脚本;
- 在
Awake()
and/orStart()
; 之后用第二个脚本实例化对象
- 忘记用第二个脚本实例化对象。
如果您可以提供有关项目启动的任何日志或更多信息。