Выкладывают приложение в стор. Страницы оформляют на нужных языках, остальное гугл сам с горем пополам переведёт. А язык в приложении выбирается в зависимости от установленной пользователем в системе локали.
Сами уровни хранить в ассетах как ScriptableObject, а пройденные звёзды PlayerPrefs. Как вы разложите хранение, хоть ключ=значение для каждой звезды, хоть текст, в котором как у вас текстовые разделители или json - без разницы. Если конечно вы не заботитесь о манипуляциях со стороны пользователя в них.
StopCoroutine(OnHit());
Неправильное использование. По факту у вас ничего не останавливается.
Поэтому Lose вызывается много раз и в конечном итоге тогда, когда объекта уже не существует.