Jam*_*ton 22 .net c# oop static member
我出现了这个错误,我不知道为什么......我试图查找它,人们说要创建类的对象或创建方法为静态...但我是不确定如何.
这是我的代码如下:
public class SoundManager : MonoBehaviour {
public List<AudioSource> audioSounds = new List<AudioSource>();
public double minTime = 0.5;
public static void playSound(AudioClip sourceSound, Vector3 objectPosition, int volume, float audioPitch, int dopplerLevel)
{
bool playsound = false;
foreach (AudioSource sound in audioSounds) // Loop through List with foreach
{
if (sourceSound.name != sound.name && sound.time <= minTime)
{
playsound = true;
}
}
if(playsound) {
AudioSource.PlayClipAtPoint(sourceSound, objectPosition);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Max*_*kov 32
您应该使audioSounds和minTime成员静态:
public static List<AudioSource> audioSounds = new List<AudioSource>();
public static double minTime = 0.5;
Run Code Online (Sandbox Code Playgroud)
但我会考虑使用单例对象而不是静态成员:
public class SoundManager : MonoBehaviour
{
public List<AudioSource> audioSounds = new List<AudioSource>();
public double minTime = 0.5;
public static SoundManager Instance { get; private set; }
void Awake()
{
Instance = this;
}
public void playSound(AudioClip sourceSound, Vector3 objectPosition, int volume, float audioPitch, int dopplerLevel)
{
bool playsound = false;
foreach (AudioSource sound in audioSounds) // Loop through List with foreach
{
if (sourceSound.name != sound.name && sound.time <= minTime)
{
playsound = true;
}
}
if(playsound) {
AudioSource.PlayClipAtPoint(sourceSound, objectPosition);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我猜你在访问错误audioSounds和minTime,对不对?
问题是你不能访问instance members的static methods.这意味着,静态方法是一种只存在一次并且可以被所有其他对象使用的方法(如果它的访问修饰符允许它).
另一方面,为对象的每个实例创建实例成员.因此,如果您创建了十个实例,那么运行时如何知道所有这些实例,audioSounds它应该访问哪个列表?
与其他人一样说,让你的audioSounds和minTime静态的,或者你可以让你的方法的实例方法,如果你的设计允许它.
| 归档时间: |
|
| 查看次数: |
133808 次 |
| 最近记录: |