unity3d 访问非静态成员 'CoinAudio.Audiosrc' 需要对象引用



正如标题所说,我正试图在这个代码中调用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();
}
}

相关内容

最新更新