如何从 Unity 中的另一个脚本访问变量?
How can I access a variable from another script in Unity?
我希望能够在另一个脚本中使用一个脚本中的变量。我的目标是允许我引用 particleScale 变量并使用它来影响连接到第二个脚本的对象的大小。我也想稍后从其他脚本中引用其他变量。每个对象还将有多个实例。这是我的第一个脚本;
public class Particle : MonoBehaviour
{
public float particleSize;
public Transform particle;
void Start()
{
particle.localScale *= particleSize;
}
}
这是我的第二个;
public class Magnetic : MonoBehaviour
{
public Transform magnetic;
void Start()
{
magnetic.localscale *= Particle.particleSize;
}
}
求助!
试试这个:
public class Particle : MonoBehaviour
{
public static Particle instance;
public float particleSize;
public Transform particle;
void Awake()
{
instance = this;
}
void Start()
{
particle.localScale *= particleSize;
}
}
public class Magnetic : MonoBehaviour
{
public Transform magnetic;
void Start()
{
magnetic.localscale *= Particle.instance.particleSize;
}
}
有几种方法可以做到,
- 使用
FindObjectOfType()
public class Magnetic : MonoBehaviour
{
public Transform magnetic;
Particle particle
void Start()
{
particle = FindObjectOfType<Particle>();
magnetic.localscale *= particle.particleSize;
}
}
- 使用单例模式(仅当您只需要一个粒子类型的对象时)
public class Particle : MonoBehaviour
{
public static Particle Instance;
public float particleSize;
public Transform particle;
void Awake() {
if (Instance != null) {
Destroy(gameObject);
} else {
Instance = this;
}
}
void Start()
{
particle.localScale *= particleSize;
}
}
然后 class 将从 Particle.Instance
全局访问,因此您可以使用它的任何 public 方法,或者在您的情况下 Particle.Instance.particleSize
我希望能够在另一个脚本中使用一个脚本中的变量。我的目标是允许我引用 particleScale 变量并使用它来影响连接到第二个脚本的对象的大小。我也想稍后从其他脚本中引用其他变量。每个对象还将有多个实例。这是我的第一个脚本;
public class Particle : MonoBehaviour
{
public float particleSize;
public Transform particle;
void Start()
{
particle.localScale *= particleSize;
}
}
这是我的第二个;
public class Magnetic : MonoBehaviour
{
public Transform magnetic;
void Start()
{
magnetic.localscale *= Particle.particleSize;
}
}
求助!
试试这个:
public class Particle : MonoBehaviour
{
public static Particle instance;
public float particleSize;
public Transform particle;
void Awake()
{
instance = this;
}
void Start()
{
particle.localScale *= particleSize;
}
}
public class Magnetic : MonoBehaviour
{
public Transform magnetic;
void Start()
{
magnetic.localscale *= Particle.instance.particleSize;
}
}
有几种方法可以做到,
- 使用
FindObjectOfType()
public class Magnetic : MonoBehaviour
{
public Transform magnetic;
Particle particle
void Start()
{
particle = FindObjectOfType<Particle>();
magnetic.localscale *= particle.particleSize;
}
}
- 使用单例模式(仅当您只需要一个粒子类型的对象时)
public class Particle : MonoBehaviour
{
public static Particle Instance;
public float particleSize;
public Transform particle;
void Awake() {
if (Instance != null) {
Destroy(gameObject);
} else {
Instance = this;
}
}
void Start()
{
particle.localScale *= particleSize;
}
}
然后 class 将从 Particle.Instance
全局访问,因此您可以使用它的任何 public 方法,或者在您的情况下 Particle.Instance.particleSize