Я делаю простую игру для изучения Unity2D и C #, где вам нужно ловить падающие с неба шары. Каждый мяч играет по-разному, когда попадает в корзину, и по-разному влияет на счет.
Существует 3 вида шаров:
- Обычный мяч - играет "Boink!" звучит, когда пойман и добавляет 1 к счету игроков.
- Грязный шар - играет "Буо!" Звучит, когда пойман, и вычитает 2 из очков игроков.
- Специальный мяч, играет "Дин!" звучит, когда пойман и добавляет 5 к счету игроков.
Все это прекрасно работает при нажатии play в Unity2D. Звуки воспроизводятся на правильном типе мяча, и результаты обновляются, как и ожидалось.
Однако при сборке и запуске на устройстве Android происходит следующее:
- Обычный мяч - играет "Booo!" Звук, когда пойман и вычитает 2 из очков игроков.
- Грязный шар - играет "Boink!" звучит, когда пойман и добавляет 1 к счету игроков.
- Специальный мяч, не воспроизводит звук при попадании и добавляет 0 к счету игроков.
Ниже приведен пример моего кода.
Создание шаров:
IEnumerator Spawn()
{
Instantiate(GetBall(), spawnPosition, spawnRotation);
}
GameObject GetBall()
{
float randomBallChance = Random.Range(1, 101);
if (randomBallChance <= 60)
{
return normalBall;
}
else
{
return (if (randomBallChance <= 70) ? specialBall : dirtyBall);
}
}
Обновление счета и воспроизведение звуков:
void OnCollisionEnter2D(Collision2D collision)
{
switch (collision.gameObject.tag)
{
case "normalBall":
{
score += scoreValue;
normalSound.Play();
break;
}
case "dirtyBall":
{
score -= (scoreValue * 2);
dirtySound.Play();
break;
}
case "specialBall ":
{
score += 5;
specialSound.Play();
break;
}
}
}
Не могу понять, почему все хорошо при игре на Unity, но не на Android.