方法“Play”没有重载需要 0 个参数,更多上下文

本文关键字:参数 上下文 Play 重载 方法 | 更新日期: 2023-09-27 18:34:08

我不太确定出了什么问题,我对 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;
}

方法“Play”没有重载需要 0 个参数,更多上下文

您的Play方法声明如下:

public void Play(string credits)

但是你这样称呼它:

Play();

调用string时,需要将其作为参数包含在内。

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

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

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