正如标题所说,我正试图在这个代码中调用Run((
CoinAudio.Run();
这就是Run((的脚本
public class CoinAudio : MonoBehaviour {
private AudioSource Audiosrc;
void Start () {
Audiosrc=GetComponent<AudioSource>();
}
// Update is called once per frame
public static void Run () {
Audiosrc.Play();
}}
当我试图调用Run((来运行声音时,它会给我这个错误访问非静态成员"CoinAudio.Audiosrc"需要对象引用任何解决方案,请请不要告诉我这个问题重复了,我的问题完全不同,它有相同的名字,但不是相同的问题
从"Run"方法中删除static关键字:
private AudioSource Audiosrc;
void Start () {
Audiosrc = GetComponent<AudioSource>();
Run ();
}
// Update is called once per frame
public void Run () {
Audiosrc.Play();
}
所以您有一个CoinAudio类和一个AudioManager类
但是你调用CoinAudio.Run((将无法工作,因为编译器说你需要创建一个实例变量:
因此,在AudioManager中,如果CoinAudio脚本附加到一个名为MyAudio的游戏对象上,你可以写这样的东西:
GameObject g;
void Start ()
{
g = GameObject.Find("MyAudio").GetComponent<CoinAudio>();
g.Run();
//NOT CoinAudio.Run();
}
使您的AudioSource
成为CoinAudio
的静态成员。
public class CoinAudio : MonoBehaviour {
private static AudioSource Audiosrc;
void Start () {
Audiosrc=GetComponent<AudioSource>();
}
public static void Run () {
Audiosrc.Play();
}
}