Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в скрипте с# в юнити

ововво вововв Ученик (179), на голосовании 1 год назад
вообщем хотел сделать аудио плеер для дрифт игры в юнити столкнулся с рядом ошибок

вот оба скрипта :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIManager : MonoBehaviour
{
public GameObject PlayBatton;
public GameObject PauseBatton;
public GameObject NextBatton;
public GameObject PreviousBatton;

public GameObject Soundmanager;

public void Satrt()
{
PauseBatton.SetActive(false);
PlayBatton.SetActive(true);
NextBatton.SetActive(true);
PreviousBatton.SetActive(true);


}

public void Play()
{
PlayBatton.SetActive(false);
PauseBatton.SetActive(true);
SoundManager.SendMessage("Play");
}

public void Pause()
{
PlayBatton.SetActive(true);
PauseBatton.SetActive(false);
SoundManager.SendMessage("Pause");
}

public void Next()
{
SoundManager.SendMessage("Next");
}

public void Previous()
{
SoundManager.SendMessage("Previous");
}
}

и второй :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SoundManager : MonoBehaviour
{
public AudioClip[] audioclips;
AudioSource audiosource;
public Text Songname;
public Slider ProgressBar;

public int currentTrack = 0;
bool IsPlaying = false;

public void Start() {

audiosource = GetComponent<AudioSource>();
audiosource.clip = audioclips[currentTrack];
}

public void Update()
{
Songname.text = audioclips[currentTrack].name;
ProgressBar.maxvalue = audioclips[currentTrack].length;
ProgressBar.value = audiosource.time;
}

void Play() {

audiosource.Play();
IsPlaying= true;
}

void Pause()
{

audiosource.Pause();
IsPlaying= false;
}

void Stop()
{
audiosource.Stop();
}

void Next()
{
Stop();
if (currentTrack == audioclips.Length - 1)
{
currentTrack = 0;

}
else
{
currentTrack++;
audiosource.clip = audioclips[currentTrack];

if (IsPlaying) {

Play();
}
}

}

void Previous()
{
Stop();
if (currentTrack == 0)
{
currentTrack = audioclips.Length - 1;

}
else
{
currentTrack--;
audiosource.clip = audioclips[currentTrack];

if (IsPlaying)
{

Play();
}
}

}

}

сами ошибки :

Assets\skripts\SoundManager.cs(25,21): error CS1061: 'Slider' does not contain a definition for 'maxvalue' and no accessible extension method 'maxvalue' accepting a first argument of type 'Slider' could be found (are you missing a using directive or an assembly reference?)

и 5 ошибок одинаковых просто в разных строках скрипта для примера пришлю только одну ее хватит :

Assets\skripts\UIManager.cs(36,9): error CS0120: An object reference is required for the non-static field, method, or property 'Component.SendMessage(string)'

плиз хелп!
Голосование за лучший ответ
Олег Олегович Просветленный (22953) 2 года назад
maxValue в c# регистр имеет значение
И переменную вы назвали именем класса. Так вот скрипт пытается в первую очередь найти статический метод в классе, а не в объекте.
Попробуйте так, но я не уверен, что будет работать.
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIManager : MonoBehaviour
{
public GameObject playButton;
public GameObject pauseButton;
public GameObject nextButton;
public GameObject previousButton;

public GameObject soundmanager;

public void Satrt()
{
pauseButton.SetActive(false);
playButton.SetActive(true);
nextButton.SetActive(true);
previousButton.SetActive(true);
}

public void Play()
{
playButton.SetActive(false);
pauseButton.SetActive(true);
soundmanager.SendMessage("Play");
}

public void Pause()
{
playButton.SetActive(true);
pauseButton.SetActive(false);
soundmanager.SendMessage("Pause");
}

public void Next()
{
soundmanager.SendMessage("Next");
}

public void Previous()
{
soundmanager.SendMessage("Previous");
}
}
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SoundManager : MonoBehaviour
{
public AudioClip[] audioclips;
AudioSource audiosource;
public Text songname;
public Slider progressBar;

public int currentTrack = 0;
bool IsPlaying = false;

public void Start()
{

audiosource = GetComponent();
audiosource.clip = audioclips[currentTrack];
}

public void Update()
{
songname.text = audioclips[currentTrack].name;
progressBar.maxValue = audioclips[currentTrack].length;
progressBar.value = audiosource.time;
}

void Play()
{

audiosource.Play();
IsPlaying = true;
}

void Pause()
{

audiosource.Pause();
IsPlaying = false;
}

void Stop()
{
audiosource.Stop();
}

void Next()
{
Stop();
if (currentTrack == audioclips.Length - 1)
{
currentTrack = 0;

}
else
{
currentTrack++;
audiosource.clip = audioclips[currentTrack];

if (IsPlaying)
{

Play();
}
}
}

void Previous()
{
Stop();
if (currentTrack == 0)
{
currentTrack = audioclips.Length - 1;

}
else
{
currentTrack--;
audiosource.clip = audioclips[currentTrack];

if (IsPlaying)
{

Play();
}
}
}
}
temka game killer Мудрец (10086) 2 года назад
Вот здесь ошибка public Slider ProgressBar; Слайдер - это не прогрессбар. Это абсолютно две разные вещи.
Похожие вопросы