В тернаринке метода GetFirst у тебя всегда isFirst возвращает 1, т.к ты сам true и установил. Можно сразу единицу поставить. PlayerPrefs.SetInt("isFirst", 1); Плюс: 1) не очень понятно зачем делать public total money, ведь мы загружаем из переменной money значение 2) зачем делать SerializeField isFirst, ведь вся логика прописана в скрипте 3) у тебя метод GetFirst можно нажать бесконечно раз пока ты не выйдешь со сцены, поэтому логично добавить логику нажатия А так спасибо, лайк :)
Ты конечно молодец, безусловно, но показывай все, от и до, потому что мне много пришлось гуглить, потому что у тебя в видео это не объясняется. А так, спасибо, классный видос.
Видос хоть и классный, но зачем так обрывать видео? Я полчаса все пересматривал и читал что бы понять что я забыл поставить точку с запятой, очень сложно когда смотришь видео, а оно резко обрезается и приходится потом все проверять
Кстати, метод ToAchievments можно модифицировать, нужно написать так: (название можно оставить) public void ToScene(int index) { SceneManager.LoadScene(index); } Таким образом мы сможем загрузить любую сцену, только нужно открыть сцену, нажать file - build settings и нажать кнопку Add open scenes, таким образом мы добавим индекс открытой сцене achievments, затем прикрепляем скрипт с этим методом к камере например и потом в кнопке с помощью которой мы хотим сделать переход в другую сцену находим штуковину Onclick и нажимаем +, затем в окошко None (object) переносим (перетаскиваем) камеру (любой другой объект на котором висит скрипт) и в правом окошке No function нажимаем: MainMenu - ToScene(int) и в правом появившимся окошке пишем индекс сцены к которой нам нужен переход, всё! Теперь вы можете таким образом переходить к любой сцене!
была проблема с тем, что кнопка все равно оставалась активной, когда total_money был больше 10. Ошибка в том что в скрипте в условии в if нужно писать не >= 10, а
@@onran0 это как бы туториал обучающий и то что он за кадром там делает ничего не объясняя - тихий ужас для людей, которые не работали раньше в программе или имеют очень скудный опыт
Что делать если в строках, в которых записаны условия достижения "public void GetFirst()" то напишет Modifiler public not valid for this item, а если стереть public то напишет что GetFirst не используеися ?
в метод GetFirst надо вставить условие если !isFirst то тогда выполнять код,потому что кнопка отключиться ну если нажимать на неё то деньги будут всё равно добавляться .Вот впринципе как я сделал if (!isFirst) { int money = PlayerPrefs.GetInt("money"); money += 100; PlayerPrefs.SetInt("money",money); isFirst = true; PlayerPrefs.SetInt("isFirst",isFirst ? 1 : 0); } Кстати,как там у меня на родине живётся?
Я тут ни к селу, ни к городу, но: 1. Тернарный оператор в ф-ции Start не нужен, так как == и так вернет true, либо false. Лишние тики. 2. Второй тернарный оператор не нужен тоже. Мы же выставляем isFirst = true;. У нас ничего, кроме 1 туда и не упадет. Мб я дурак, но как-то так.
@@rugewit5775 1. Там тернарный оператор формата (логическое выражение)? true: false. То есть формата If (выражение логическое) return true; else return false; То есть мы и так получаем bool, но зачем-то прокидываем его через тернарку 2. Мы сами ставим перед закидыванием значения переменной ее в true. То есть выражение без учета ограничения на многопоточку (а сейчас в коде нет переключения обратно в false и не будет), имеет вид (true)? 1 : 0. У нас нет варианта, когда вернется 0. Мы можем просто пробросить 1 в playerpref.
@@ascamond 1. У нас есть PlayerPrefs.GetInt("isFirst"). Данный метод нам возвращает int (а не bool). Наша переменная isFirst, в которую мы должны загрузить данные, является типом bool. Поэтому нам нужно конвернуть. Делаем мы это следующей строчкой isFirst = PlayerPrefs.GetInt("isFirst") == 1 ? true : false, можно было бы и другим способом. 2. Тут уже дело вкуса. На мой взгляд, лучше так оставить, потому что в будущем мы можем ,например, переписать код, убрав isFirst = true, может возникнуть ситуация, что isFirst = false, а мы забыли PlayerPrefs.SetInt(1) на 0 поменять, с помощью нашей конструкции PlayerPrefs.SetInt("isFirst", isFirst ? 1 : 0) значение, которые мы туда закидываем, связано с переменной isFirst, что уменьшит кол-во ошибок.
@@rugewit5775 в первом случае PlayerPrefs. GetInt("isFirst") == 1 вернет bool. == - оператор сравнения. Там бесполезный тернарник висит. Тернарник на вход сам по себе принимает bool. Индийский код получается. UPD: я бы согласился на счет второго пункта, если бы единственным вариантом сброса не была бы деинсталяция игры или полный сброс прогресса. Да и факт, что функция вызывается, когда нам надо залочить ачивку намекает на то, что isFirst тут должно лочится при вызовы. Возможно такая запись лучше для юзера(если мы под юзером подразумеваем кодера, который будет за нами тянуть проект, конечно), но ведет к спагетти коду. Нам это не надо.
@@matrix3779 Я закрепил 2-ой скрипт на MainCamera , в First Ach поставил кнопку "Ачивка (Button)" , но при запуске галочка Is First пропадает , что делать?
Ребят если у кого-то ошибка связанная с GameObj или типо чето того. То! Проверьте не забыли ли вы привязать кнопку достижения *Сделай 10 кликов* к скрипту. ( Делается через юнити как и совсеми другими кнопками. )
Я так понимаю после конца написания второго скрипта и прощанием пропущен момент с назначением методов, да? Я назначил два с выходом в меню через кнопку и с получением, собственно, очивки. По итогу при каждом переходе из меню к очивкам у меня само собой накликивается 10 кликов. Или я допустил ошибку в самом коде?
Помогите пожалуйста ошибка NullReferenceException: Object reference not set to an instance of an object AchMenu.Start() (at Assets/scripts/AchMenu.cs:22)
перехвалили автора в предыдущем ролике: стал показывать не весь процесс. много простых и первичных вещей пришлось гуглить. например: если вы добавили фон, и он перекрывает все объекты сцены - что делать? вот рабочий способ: -"Если фон - UI, его нужно расположить выше (или ниже) всех объектов в окне иерархии, в Canvas". Но всё равно благодарю за контент!
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Achivments : MonoBehaviour { public int totalmoney; public int money; public Button FirstAch; public Button SecondAch; public bool isFirst = true; public bool isSecond = true; void Start() { totalmoney = PlayerPrefs.GetInt("TotalmOney"); money = PlayerPrefs.GetInt("MOney"); isFirst = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst")); isSecond = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond")); if (isSecond == true) { PlayerPrefs.SetInt("IsSecond", 1); } if (isFirst == true) { PlayerPrefs.SetInt("IsFirst", 1); } } public void Get1Ach() { if (totalmoney >= 10 && isFirst == true) { PlayerPrefs.SetInt("IsFirst", 0); FirstAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst")); isFirst = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst")); money += 10; totalmoney += 10; PlayerPrefs.SetInt("MOney", money); PlayerPrefs.SetInt("TotalmOney", totalmoney); } } public void Get2Ach() { if (totalmoney >= 100 && isSecond == true) { PlayerPrefs.SetInt("IsSecond", 0); SecondAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond")); isSecond = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond")); money += 100; totalmoney += 100; PlayerPrefs.SetInt("MOney", money); PlayerPrefs.SetInt("TotalmOney", totalmoney); } } // Update is called once per frame void Update() { FirstAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst")); SecondAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond")); } } Вот я изменил немного код. А тот что автор показывает он не работает. Наверное у меня слишком громоздкий код и наверное можно кое-что подправить. Этот код вешаете на пустышку или на другой объект в Unity, потом засовываете в функцию OnClick на кнопке и выбираете метод который вам нужен.
@@kystiksss Да я тоже этот косяк заметил, поэтому просто сделай для каждой кнопки отдельный скрипт, например вот код для второго достижения: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GetSecondAch : MonoBehaviour { public int TotalMoney; public int Money; public bool IsSecond; public Button SecondButton; [SerializeField] AudioSource SecondAudioSource; void Start() { TotalMoney = PlayerPrefs.GetInt("tm"); Money = PlayerPrefs.GetInt("mon"); IsSecond = System.Convert.ToBoolean(PlayerPrefs.GetInt("/2")); if (IsSecond == true) { SecondButton.interactable = false; } } public void Get2Ach() { if (TotalMoney >= 100 && IsSecond == false) { TotalMoney = PlayerPrefs.GetInt("tm"); Money = PlayerPrefs.GetInt("mon"); TotalMoney += 100; Money += 100; PlayerPrefs.SetInt("/2", 1); PlayerPrefs.SetInt("tm", TotalMoney); PlayerPrefs.SetInt("mon", Money); SecondAudioSource.Play(); SecondButton.interactable = false; } } void Update() {
я когда нажимаю на достижения у меня NullReferenceException: Object reference not set to an instance of an object MainMenu.Update () (at Assets/Scripts/MainMenu.cs:31)
Помогите пожалуйста! Не показывает на главной странице количество монет, но всё работает. И ещё пишет: NullReferenceException: Object reference not set to an instance of an object
@@onslowedmusic7142 В новой сцене удалите скрипт с камеры, который скопировался вместе со сценой. В нем есть ссылки на объекты, которых нет в новой сцене
у меня весьма странная проблема, все кнопки в ачивках не работают, однако если нажать, то деньги прибавляются, вне зависимости от выполнения условий Что делать? Может дело в том, что я поочередно записал 14 ачивок?
@@romashkastar2314 как решил? 4тую часть посмотрел и полностью изменил код, или как то по иному решил? Я только неделю назад начал с юнити работать, а так полный ноль в этом.
Что желать, если кнопка назад в достижениях не работает. Я закрепил на ней Event trigger в нём добавил pointer click закрепил main camera и указал в скрипте main menu пункт ToMenu, но программа не воспринимает кнопку и даёт ошибку NullReferenceException. Помогите пожалуйста.
Какой же ужас по поводу кода. Во-первых, вы не используйте встроенный в кнопку эвент OnClick(), или лучше использовать слушателей, чтобы задать ссылку на эвент кнопки прямо в коде. Во-вторых, ачивки можно сделать через Dictionary - первое название ачивки, второе статус получение. Ваш пример рабочий, но очень плох, потому-что ачивок может быть 10+. В любом случае желаю удачи в совершенствование кода.
там всё просто у тебя просто там два разных названия например public class SceneManagement а папка называется Main menu тебе просто нужно либо переменовать в самом скрипте либо в название скрипта главное они должны быть одинаковыми
В общем решил проблему, просто перезапустив юнити, хотя пол часа рылся в инете с этой проблемой, говорили и имя поменять, и ещё чет, в общем перезапустил и работает
error CS0246: The type or namespace name 'Button' could not be found (are you missing a using directive or an assembly reference?) В чем может быть проблема?
Нужна помощь, сделал по примеру, но при запуске, даже если все значения равны 0, ачивка уже выполненная. Сижу час, не могу решить проблему, подскажите пожалуйста.
@@machi3131 ну лично у меня, я все сделал правильно, написал код для очивок, сделал так чтоб оно переключало с меню на очивки, он кнопка достижения не работает
В тернаринке метода GetFirst у тебя всегда isFirst возвращает 1, т.к ты сам true и установил.
Можно сразу единицу поставить.
PlayerPrefs.SetInt("isFirst", 1);
Плюс:
1) не очень понятно зачем делать public total money, ведь мы загружаем из переменной money значение
2) зачем делать SerializeField isFirst, ведь вся логика прописана в скрипте
3) у тебя метод GetFirst можно нажать бесконечно раз пока ты не выйдешь со сцены, поэтому логично добавить логику нажатия
А так спасибо, лайк :)
скажи пж весь скрипт AchMenu
Ты конечно молодец, безусловно, но показывай все, от и до, потому что мне много пришлось гуглить, потому что у тебя в видео это не объясняется. А так, спасибо, классный видос.
что ты искал?
Как сцену дублировать, ctrl+ d не работатет
@@butikof190 пкм скопировать и пкм вставить
Мне норм, не чё гуглить не пришлось.
@@Ter1onn я до сих пор не понимаю что делать с кнопкой, она всё равно нажимается
очень годный курс, намного лучше аналогов, спасибо за работу, очень помог!
Какие аналоги вы смотрели и в чем данный курс лучше?
лучше это когда курс дается по нерабочему коду?
3 часть, братик, мы все ждем не дождемся!
А куда нужно кидать ачивментс? Типа на что его повешать? У меня просто ачивка не засчитывается.
Спасибо большое за видео наконец сделал свой первый игру на unity
Видос хоть и классный, но зачем так обрывать видео? Я полчаса все пересматривал и читал что бы понять что я забыл поставить точку с запятой, очень сложно когда смотришь видео, а оно резко обрезается и приходится потом все проверять
Привет.Крутое видео я тоже делаю игру на Unity.
Кстати, метод ToAchievments можно модифицировать, нужно написать так: (название можно оставить)
public void ToScene(int index)
{
SceneManager.LoadScene(index);
}
Таким образом мы сможем загрузить любую сцену, только нужно открыть сцену, нажать file - build settings и нажать кнопку Add open scenes, таким образом мы добавим индекс открытой сцене achievments, затем прикрепляем скрипт с этим методом к камере например и потом в кнопке с помощью которой мы хотим сделать переход в другую сцену находим штуковину Onclick и нажимаем +, затем в окошко None (object) переносим (перетаскиваем) камеру (любой другой объект на котором висит скрипт) и в правом окошке No function нажимаем: MainMenu - ToScene(int) и в правом появившимся окошке пишем индекс сцены к которой нам нужен переход, всё! Теперь вы можете таким образом переходить к любой сцене!
Почему вы использует кастомный компонент триггера, а не используете стандартный онклик от компоненты кнопки?
скорее всего он уже привык так делать
была проблема с тем, что кнопка все равно оставалась активной, когда total_money был больше 10. Ошибка в том что в скрипте в условии в if нужно писать не >= 10, а
Спасибо) могу к тебе обращаться с вопросами?)
Почему я точноси написал код а там нету ToAchievements?
@@chranir1776mainMenu в скрипте.
Я ждал этого и дождался
Ты мне очень сильно помог .Спасибо😃
Почему кнопка так и нажимается? Скрипт в норме, поставлен так же как и на видео, настройки те же. Кто знает, помогите?
Так бесит пока за кадром делают сами,а потом,ой,да там легко,и говорят о осях бл
не,ну ты как бы сам игру делаешь,не он же ее за тебя делает,ты и сам должен чтото делать
@@onran0 да,ты прав безусловно,просто я тогда столкнулся с проблемой,что у меня фон был поверх других окон (кнопки и денег)
@@onran0 это как бы туториал обучающий и то что он за кадром там делает ничего не объясняя - тихий ужас для людей, которые не работали раньше в программе или имеют очень скудный опыт
поддерживаю, а в конце он вообще самостоятельно код переписал без записи видео а потом только показал, пришлось переделывать(( ААА
@@HonorBooM як пофіксив
Бро, классное видио.
КЛАС СПАСИБО ИГРА ПЕРЕСТАЛА ЗАПУСКАТЬСЯ КЛАСССС
+
Справился с проблемой?
У меня такая же проблема
чел большое спасибо, всё понятно объяснил, однозначно лайк и подписка
Спс чел. Благодаря тебе я понял логику юнити. Я раньше не понимал как в нем переменные ставить и не знал что такое void . Теперь я все понял. СПс.
Класснота!!!
Что делать если в строках, в которых записаны условия достижения "public void GetFirst()" то напишет Modifiler public not valid for this item, а если стереть public то напишет что GetFirst не используеися ?
Мне давно было интересно как создать игру и благодаря тебе я начал делать игры, у меня по этому есть видео на канале, там прикольно)
обман
Спасибо большое автору !!!
Как сделать магазин автор ответь и сделай видео урок пж!
в метод GetFirst надо вставить условие если !isFirst то тогда выполнять код,потому что кнопка отключиться ну если нажимать на неё то деньги будут всё равно добавляться .Вот впринципе как я сделал
if (!isFirst)
{
int money = PlayerPrefs.GetInt("money");
money += 100;
PlayerPrefs.SetInt("money",money);
isFirst = true;
PlayerPrefs.SetInt("isFirst",isFirst ? 1 : 0);
}
Кстати,как там у меня на родине живётся?
Слава тебе небесная у меня ничего до того как я это сделал не работало
Спасибо за то что делаешь!++Ъ
Почему ты не используешь функцию OnClick(), который уже находиться в компоненте Button? А добавляешь новый компонент EventTrigger.
Вот только хотел написать это же, я тестил с OnClick работает так же, но видимо человек привык
Да!
что делать если ToAchievements не поевляется в кнопке
я в точности как он написал код, пишет ошибку с UnityEngine и SceneMenagement, и нету в MainMenu вкладки ToAchievements, что делать
Я тут ни к селу, ни к городу, но:
1. Тернарный оператор в ф-ции Start не нужен, так как == и так вернет true, либо false. Лишние тики.
2. Второй тернарный оператор не нужен тоже. Мы же выставляем isFirst = true;. У нас ничего, кроме 1 туда и не упадет.
Мб я дурак, но как-то так.
не, здесь суть в том, что PlayerPrefs не может bool сохранить, поэтому мы с помощью этих операторов bool в int или обратно конвертим.
@@rugewit5775
1. Там тернарный оператор формата (логическое выражение)? true: false. То есть формата
If (выражение логическое)
return true;
else
return false;
То есть мы и так получаем bool, но зачем-то прокидываем его через тернарку
2. Мы сами ставим перед закидыванием значения переменной ее в true.
То есть выражение без учета ограничения на многопоточку (а сейчас в коде нет переключения обратно в false и не будет), имеет вид (true)? 1 : 0. У нас нет варианта, когда вернется 0. Мы можем просто пробросить 1 в playerpref.
@@ascamond 1. У нас есть PlayerPrefs.GetInt("isFirst"). Данный метод нам возвращает int (а не bool). Наша переменная isFirst, в которую мы должны загрузить данные, является типом bool. Поэтому нам нужно конвернуть. Делаем мы это следующей строчкой isFirst = PlayerPrefs.GetInt("isFirst") == 1 ? true : false, можно было бы и другим способом.
2. Тут уже дело вкуса. На мой взгляд, лучше так оставить, потому что в будущем мы можем ,например, переписать код, убрав isFirst = true, может возникнуть ситуация, что isFirst = false, а мы забыли PlayerPrefs.SetInt(1) на 0 поменять, с помощью нашей конструкции PlayerPrefs.SetInt("isFirst", isFirst ? 1 : 0) значение, которые мы туда закидываем, связано с переменной isFirst, что уменьшит кол-во ошибок.
@@rugewit5775 в первом случае PlayerPrefs. GetInt("isFirst") == 1 вернет bool. == - оператор сравнения. Там бесполезный тернарник висит. Тернарник на вход сам по себе принимает bool. Индийский код получается.
UPD: я бы согласился на счет второго пункта, если бы единственным вариантом сброса не была бы деинсталяция игры или полный сброс прогресса. Да и факт, что функция вызывается, когда нам надо залочить ачивку намекает на то, что isFirst тут должно лочится при вызовы. Возможно такая запись лучше для юзера(если мы под юзером подразумеваем кодера, который будет за нами тянуть проект, конечно), но ведет к спагетти коду. Нам это не надо.
@@ascamond а, я понял тебя, да в п1 там действительно тернарник лишний.
я все делал по туториалу, но так и не понял почему у меня можно брать награду много а не один раз и даже не выполняя это задание(
тоже самое и у меня....
Как-то пофикисили? Та же хуйня
нужно 2скрипт закрепить на mainCamera в сцене ачивки
@@matrix3779 Я закрепил 2-ой скрипт на MainCamera , в First Ach поставил кнопку "Ачивка (Button)" , но при запуске галочка Is First пропадает , что делать?
@@whoisphanta272 тож самое
Ребят если у кого-то ошибка связанная с GameObj или типо чето того. То! Проверьте не забыли ли вы привязать кнопку достижения *Сделай 10 кликов* к скрипту. ( Делается через юнити как и совсеми другими кнопками. )
когда продолжение?
Assets\Scripts\AchMenu.cs(16,8): error CS0131: The left-hand side of an assignment must be a variable, property or indexer
Бро , ты не против будешь если все так же сделаю за исключением иконок и кнопок с картинками?
А почему он должен быть против?
Что делать если ачивка появится, хотя требование не сделано?
Дароу, чилекс, можешь сделать туториал по созданию зомби сюрвайлова?
Если не делал кшн, я просто недавно на твоем канале. А так, спасибо большое, побольше бы гайдов)
слетает галочка isFirst при заходе в достижения , что делать?
нужно в мейн камере кнопку ачивки прикрепить
пж помогите! у меня за выполнение достижения не прибовляется награда
Видео классное. Но чуть чуть плохо объясняете
Я так понимаю после конца написания второго скрипта и прощанием пропущен момент с назначением методов, да? Я назначил два с выходом в меню через кнопку и с получением, собственно, очивки. По итогу при каждом переходе из меню к очивкам у меня само собой накликивается 10 кликов. Или я допустил ошибку в самом коде?
Окей, я просто добавил отдельную кнопку для выхода в меню, как это сделано в третьем уроке😅
Буду знатьдать
чел пж можешь объяснить какие скрипты куда а то автор нихера не показал шо делать
@@kapepasta2519 если ты про кнопку выхода из достежений, то тоже самое как и с заходом только сцену надо поставить 0
@@kapepasta2519 а если ты про скрипт с достижениями, то я полностью его сам написал, у него ничего не понятно, могу скинуть если захочешь
Почему у меня возникает ошибка: Assets/Scripts/AchMenu.cs(13,2): error CS1525: Unexpected symbol `isFirst' Что мне делать?
тф не создал переменную isFitst наверно
Помогите пожалуйста ошибка
NullReferenceException: Object reference not set to an instance of an object AchMenu.Start() (at Assets/scripts/AchMenu.cs:22)
Отсутсвует значение на 22 строке
почему используешь event trigger можно OnClick()?
да
Подскажите а как сделаны тени под кнопками?
В фотошопе можешь сделать
сделал все как на видео, но когда нажимаю на кнопку с ачивками игра вылетает. что можно сделать?
Сначала скейлишь кнопку, потому не знаешь как пофиксить растянутый внутри неё текст) Так не скейли кнопку)
У меня кнопка не работает, помогите пожалуйста
Не используй Event Trigger
как возращятся обратно в меню из атчивок?
Сделай кнопку, которая будет кидать на сцену 0
много чего не показывает, зря потратил время, ничего нормального не получилось. Единственное это счетчик кликов нормальный получился :(
Как называется приложение в котором ты редактируешь код? (Если название было указано в видео, то я извиняюсь, смотрел без звука)
Visual Studio
у него visual studio, но можешь использовать visual studio code он лучше
Не получается сделать кнопку назад, емае
перехвалили автора в предыдущем ролике: стал показывать не весь процесс. много простых и первичных вещей пришлось гуглить. например: если вы добавили фон, и он перекрывает все объекты сцены - что делать? вот рабочий способ: -"Если фон - UI, его нужно расположить выше (или ниже) всех объектов в окне иерархии, в Canvas". Но всё равно благодарю за контент!
после тово как я написал код у меня юнити здох все пишет Aplication.reload уже 10 мин што делать ?????
почему ты используешь event trigger вместо обычного OnClick от кнопки? Это важно, ответь пожалуйста!
у меня тот же вопрос,2 года прошло,нашел ответ?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Achivments : MonoBehaviour
{
public int totalmoney;
public int money;
public Button FirstAch;
public Button SecondAch;
public bool isFirst = true;
public bool isSecond = true;
void Start()
{
totalmoney = PlayerPrefs.GetInt("TotalmOney");
money = PlayerPrefs.GetInt("MOney");
isFirst = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst"));
isSecond = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond"));
if (isSecond == true)
{
PlayerPrefs.SetInt("IsSecond", 1);
}
if (isFirst == true)
{
PlayerPrefs.SetInt("IsFirst", 1);
}
}
public void Get1Ach()
{
if (totalmoney >= 10 && isFirst == true)
{
PlayerPrefs.SetInt("IsFirst", 0);
FirstAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst"));
isFirst = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst"));
money += 10;
totalmoney += 10;
PlayerPrefs.SetInt("MOney", money);
PlayerPrefs.SetInt("TotalmOney", totalmoney);
}
}
public void Get2Ach()
{
if (totalmoney >= 100 && isSecond == true)
{
PlayerPrefs.SetInt("IsSecond", 0);
SecondAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond"));
isSecond = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond"));
money += 100;
totalmoney += 100;
PlayerPrefs.SetInt("MOney", money);
PlayerPrefs.SetInt("TotalmOney", totalmoney);
}
}
// Update is called once per frame
void Update()
{
FirstAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsFirst"));
SecondAch.interactable = System.Convert.ToBoolean(PlayerPrefs.GetInt("IsSecond"));
}
}
Вот я изменил немного код. А тот что автор показывает он не работает. Наверное у меня слишком громоздкий код и наверное можно кое-что подправить. Этот код вешаете на пустышку или на другой объект в Unity, потом засовываете в функцию OnClick на кнопке и выбираете метод который вам нужен.
Этот код тоже не работает, кнопки после достижения нужного количества очков остаются не взаимодействующими
@@kystiksss Да я тоже этот косяк заметил, поэтому просто сделай для каждой кнопки отдельный скрипт, например вот код для второго достижения:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GetSecondAch : MonoBehaviour
{
public int TotalMoney;
public int Money;
public bool IsSecond;
public Button SecondButton;
[SerializeField] AudioSource SecondAudioSource;
void Start()
{
TotalMoney = PlayerPrefs.GetInt("tm");
Money = PlayerPrefs.GetInt("mon");
IsSecond = System.Convert.ToBoolean(PlayerPrefs.GetInt("/2"));
if (IsSecond == true)
{
SecondButton.interactable = false;
}
}
public void Get2Ach()
{
if (TotalMoney >= 100 && IsSecond == false)
{
TotalMoney = PlayerPrefs.GetInt("tm");
Money = PlayerPrefs.GetInt("mon");
TotalMoney += 100;
Money += 100;
PlayerPrefs.SetInt("/2", 1);
PlayerPrefs.SetInt("tm", TotalMoney);
PlayerPrefs.SetInt("mon", Money);
SecondAudioSource.Play();
SecondButton.interactable = false;
}
}
void Update()
{
}
}
Бро помоги я сделал всё правильно но ачивка не зачисляется!!!
как сбросить сохранение значения ?
На canvas пропала кнопка для создания UI элементов что делать
я когда нажимаю на достижения у меня NullReferenceException: Object reference not set to an instance of an object
MainMenu.Update () (at Assets/Scripts/MainMenu.cs:31)
тоже
Укажи текст в Main Camera компонент скрипта
@@xlebza0928 у меня тоже. Обьясни пожалуйста поподробнее
@@ladninko В Проекте есть объект как MainCamera в нем нужно добавить компонент MainMenu.cs
@@xlebza0928 А как добавить я не понял
Помогите пожалуйста! Не показывает на главной странице количество монет, но всё работает. И ещё пишет: NullReferenceException: Object reference not set to an instance of an object
Привет,ты решил проблему??? Очень надо пж
Пж ответь мне очень срочно надо
у меня тоже это показывает
@@АлександрПлэмэдялэ-п7я я решил проблему
@@АлександрПлэмэдялэ-п7я го по дс я объясню
Assets/Scripts/AchMenu.cs(7,14): error CS0101: The namespace `global::' already contains a definition for `NewBehaviourScript'
????
У тебя в самом скрипте неправильно написано имя названия скрипта
При запуске пропадает галочка в пункте Is First , в чем дело?
Какой скрипт надо поставить на кнопку возврата в меню?
Подскажи ответ на этот вопрос.
Что делать если код для сцени очивок написан но на сцену не кидает?
У меня тоже
Может в скрипте не так???
скиньте плиз скрипт достижений точь в точь написал куча ошибок
откуда ты берешь такие крутые активные обои?
Почему вылетает ошибка cs7036???
привет, а как сбросить монеты в игре?
Помогите пожалуйста у меня ошибка CS0246...
Ты смог убрать эту ошибку? Если да то как, у меня тоже такое
@@vishka2556 смог!
Посмотри в какой строчке ошибка например у меня запятая в место точки стояла.
@@ImRooni спасибо
@@vishka2556 кстати мне вообще 10 лет))
@@ImRooni 15 будем знакомы
аткуда появилась 2 сцена маин меню ааааааааааааааа......................................
NullReferenceException: Object reference not set to an instance of an object
Menu.Update () (at Assets/Scripts/Menu.cs:31)
Что делать?
У меня так же)
@@onslowedmusic7142 В новой сцене удалите скрипт с камеры, который скопировался вместе со сценой. В нем есть ссылки на объекты, которых нет в новой сцене
В конце я не понел как делать, куда установить
ПОЧЕМУ У МПНЯ НЕТ КНОПКИ MAIN MENU TO ACHIEVEMENTS????
Помогите!!! У меня галочка Is First убирается. Что делать?
Большие пробелы, что в первом, что во втором видео. Не показал как кнопку ачивки настроить.
у меня весьма странная проблема, все кнопки в ачивках не работают, однако если нажать, то деньги прибавляются, вне зависимости от выполнения условий
Что делать?
Может дело в том, что я поочередно записал 14 ачивок?
Вот так и фиг кто ответит
@@sjkavboi уже самостоятельно решил проблему
@@romashkastar2314 как решил? 4тую часть посмотрел и полностью изменил код, или как то по иному решил?
Я только неделю назад начал с юнити работать, а так полный ноль в этом.
@@sjkavboi черт, сам уже не помню, давно решил.
@@sjkavboi да, по 4-ой части
Что делать если в тригерре в функциях вообще нету пункта mainmenu? Я не могу из-за этого сделать переход из меню в ачивментс
Решил проблему? Если да, то напиши как
Почему не показал как кнопку назад сделал и как функцию назнал на кнопку ачивки
лучший!!
что значит с помощью тернарного оператора?(просто у меня не работает)
Что желать, если кнопка назад в достижениях не работает. Я закрепил на ней Event trigger в нём добавил pointer click закрепил main camera и указал в скрипте main menu пункт ToMenu, но программа не воспринимает кнопку и даёт ошибку NullReferenceException. Помогите пожалуйста.
Такая же проблема... смог решить?
Де 3 часть
Какой же ужас по поводу кода.
Во-первых, вы не используйте встроенный в кнопку эвент OnClick(), или лучше использовать слушателей, чтобы задать ссылку на эвент кнопки прямо в коде.
Во-вторых, ачивки можно сделать через Dictionary - первое название ачивки, второе статус получение. Ваш пример рабочий, но очень плох, потому-что ачивок может быть 10+.
В любом случае желаю удачи в совершенствование кода.
Assets\Scripts\Menu.cs(25,9): error CS0103: The name 'ScreenManager' does not exist in the current context
помогите решить эту проблему пожалуйста
А че делать если у меня тысячи ошибок появляются
У меня фон перекрывает кнопки, и не растягиваеться
вылезает куча ошибок почему то хотя все как у тебя, что делать?
Шо делать? Assets\scripts\MainMenu.cs(26,9): error CS0103: The name 'SceneManagement' does not exist in the current context
там всё просто у тебя просто там два разных названия например public class SceneManagement а папка называется Main menu тебе просто нужно либо переменовать в самом скрипте либо в название скрипта главное они должны быть одинаковыми
Делал все по видео но вылезла ошибка The script 'AchivementMenu' does not contain a class derived from UnityEngine.MonoBehaviour
В общем решил проблему, просто перезапустив юнити, хотя пол часа рылся в инете с этой проблемой, говорили и имя поменять, и ещё чет, в общем перезапустил и работает
дальше действия со скриптом не показал, куда закидывал и что делал а сразу типа я получил достижение
ответ где-то внизу комментариев в ответе
а почему у меня не сохраняются деньги в игре ?хоть я полностью переписал скрипт
как кнопку выхода то сделать?
сделай кнопку которая делит на 0 :)
@@parateam на ноль делить нельзя
@@Seveneight7.8 все правильно. Программа поделит на ноль и крашнется
откуда у вас маин меню
error CS0246: The type or namespace name 'Button' could not be found (are you missing a using directive or an assembly reference?)
В чем может быть проблема?
как решил?
ТЫ ЗАБЫЛ НАПИСАТЬ using UnityEngine.UI; В НАЧАЛЕ КОДА
Assets\Scripts\MainMenu.cs 5.34 error cs1002: ; expected чё делать
сделал всё как на видео но кнопки выйти в главное меню нету помогите пожалуйста!!!
Создай :D
сцены не переходят. выдает ошибку что нету такой вещи как сцен менеджмент
У меня все работает ищи ошибку в коде
Нужна помощь, сделал по примеру, но при запуске, даже если все значения равны 0, ачивка уже выполненная. Сижу час, не могу решить проблему, подскажите пожалуйста.
Попробуй переписать код
Возможно условие написано уже истинным
У меня такая проблема, что код в скрипте ачивок написан правильно, но сама ачивка не выдается, подскажите пожалуйста
+
Всм? Объясни конкретнее проблему
@@machi3131 уже магическим образом решил, спасибо)
@@machi3131 ну лично у меня, я все сделал правильно, написал код для очивок, сделал так чтоб оно переключало с меню на очивки, он кнопка достижения не работает
@@Eugene-dp9kg если я тебе дам свой дс, сможешь туда написать?