没有超载方法'播放'需要0个参数,更多上下文

时间:2014-12-12 17:38:25

标签: c# unity3d

我真的不确定什么是错的,我对C#很缺乏经验,而且我发布了这个,每个人说没有足够的上下文,所以我发布了整个脚本。不久,我只是需要这个帮助!

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(AudioSource))]
public class MusicPlayer : MonoBehaviour {
public GUISkin skin;

public Song[] playlist;
public AudioClip mlgSong;
public AudioSource fastSource;

int currentSongID;
bool isPlaying;

[System.NonSerialized]
public bool fastMode = false;

string currentSongCredits;

//Song credits
float timer = 0;
float slidePosition;
float slidePositionMax = 20;

void Start() {
    slidePosition = slidePositionMax;
    ShuffleSongs();
    audio.clip = playlist[0].clip;
    currentSongID = 0;
    isPlaying = audio.isPlaying;
    if (!GameSettings.music) {
        fastSource.Stop();
    }
}
void Update() {

    if ((!audio.isPlaying || GameSettings.keybinds.GetKeyDown("nextsong")) && isPlaying) {
        if (currentSongID<playlist.Length-1) {

            currentSongID++;
        } else {
            currentSongID = 0;
        }
        audio.clip = playlist[currentSongID].clip;
        slidePosition = slidePositionMax;
        Play (); //The error is here...


    }
    if ((!audio.isPlaying || GameSettings.keybinds.GetKeyDown("lastsong")) && isPlaying) {
        if (currentSongID<playlist.Length+1) {

            currentSongID++;
        } else {
            currentSongID = playlist.Length;
        }
        audio.clip = playlist[currentSongID].clip;
        slidePosition = slidePositionMax;
        Play (); //The error is also here. 

    }
    //Timer
    if (timer > 0) {
        timer -= Time.deltaTime;
    }

    if (fastMode && fastSource.volume < 1) {
        fastSource.volume = Mathf.Min(1,fastSource.volume + Time.deltaTime * 0.25f);
        audio.volume = 0.5f - fastSource.volume/2;
    }
    if (!fastMode && fastSource.volume > 0) {
        fastSource.volume = Mathf.Max(0,fastSource.volume - Time.deltaTime * 0.5f);
        audio.volume = 0.5f - fastSource.volume/2;
    }
    if (timer > 0) {
        slidePosition = Mathf.Lerp(slidePosition,0,Time.deltaTime);
    } else {
        slidePosition = Mathf.Lerp(slidePosition,slidePositionMax,Time.deltaTime);
    }

}
public void Pause() {
    Play (playlist[currentSongID].name);
}
public void Play(string credits) {
    currentSongCredits = "Now playing: " + credits;
    if (FindObjectOfType<MlgMode>() != null) {//IS MLG MODE
        audio.clip = mlgSong;
        currentSongCredits = "Now playing: xXxSW3GST3PxXx";
        FindObjectOfType<MlgMode>().StartTheShit();//Start the wubs
    }
    isPlaying = true;
    if (!audio.mute) {
        timer = 8;
    }
    audio.Play();
}


void OnGUI() {
    if (slidePosition < slidePositionMax-0.1f) {
        GUI.skin = skin;
        GUIStyle style = new GUIStyle(GUI.skin.label);
        style.fontSize = 16;
        style.alignment = TextAnchor.MiddleRight;
        Rect rect = new Rect(0,Screen.height-30+slidePosition,Screen.width,30);

        //GUIX.ShadowLabel(rect,currentSongCredits,style,1);
        GUILayout.BeginArea(rect);
        GUILayout.FlexibleSpace (); //Push down
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace(); //Push to the right
            GUILayout.Label(currentSongCredits,GUI.skin.GetStyle("SoundCredits"),GUILayout.ExpandWidth(false));
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }
}

void ShuffleSongs() {
    //Shuffle playlist using Fisher-Yates algorithm
    for (int i = playlist.Length;i > 1;i--) {
        int j = Random.Range(0,i);
        Song tmp = playlist[j];
        playlist[j] = playlist[i - 1];
        playlist[i - 1] = tmp;
    }
}

}

[System.Serializable]
public class Song {
public string name;
public AudioClip clip;
}

2 个答案:

答案 0 :(得分:0)

您的Play方法声明如下:

public void Play(string credits)

但你这样称呼它:

Play();

调用时,您需要包含string作为参数。

Play("White and Nerdy - Weird Al Yankovic");

答案 1 :(得分:0)

您的Play(string credits)方法需要一个名为credits的字符串。由于您在没有放置字符串的情况下调用Play(),因此它会给您一个错误。

它正在寻找的是一个重载方法,另一种形式的Play()没有字符串,当它没有发现你收到该错误时。