If you ever stumble upon error messages and don’t understand their description, try to look up their codes on the internet. For example https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1519 can give you some insights about your first error. The same goes for other stuff.
Regarding error CS1519: invalid token ‘;’ in class, record, struct or interface member declaration you can read in the documentation:
This error is generated whenever a token is encountered in a location where it does not belong. A token is a keyword; an identifier (the name of a class, struct, method, and so on); a string, character, or numeric literal value such as 108, «Hello», or ‘A’; or an operator or punctuator such as == or ;.
In your case the token is ;
and it doesn’t belong in here: private void OnDisable();
This semicolon is the issue, as it made your method bodyless (when it should have one), as well as your method call onFoot.Disable();
is now treated as if made just inside a class, not method, which is not valid.
In general, this error usually indicate typos of all kind.
error CS1022: Type or namespace definition, or end of file expected is just a consequence of formerly mentioned semicolon, that propagates further down the file.
As for error CS8124: Tuple must contain atleast two elements. I can’t see this error in the code I pasted to my project, maybe that’s an error in another file you didn’t paste here. But the message clearly indicates the reason: you are using a tuple, that contain less than 2 elements. Alternatively, it might be another typo, that made compiler think you are using a tuple.
Не запускается проект.
Не запускается проект.
Здравствуйте. Проблема такая: при запуске проекта, проект не запускается и появляется окошко с надписью «All compiler errors have to be fixed before you can enter playmode!». Что это такое и как это убрать?
-
farast - UNец
- Сообщения: 7
- Зарегистрирован: 11 дек 2012, 23:01
Re: Не запускается проект.
seaman 12 дек 2012, 19:11
А перевести.
- seaman
- Адепт
- Сообщения: 8351
- Зарегистрирован: 24 янв 2011, 12:32
- Откуда: Самара
Re: Не запускается проект.
farast 12 дек 2012, 19:27
Перевел. Пишет о ошибках компиляции, которые должны быть исправлены перед запуском игры. Но я все равно не понимаю. Я даже не использовал скрипты.
-
farast - UNец
- Сообщения: 7
- Зарегистрирован: 11 дек 2012, 23:01
Re: Не запускается проект.
KaMiKaZa 12 дек 2012, 19:38
farast писал(а):Перевел. Пишет о ошибках компиляции, которые должны быть исправлены перед запуском игры. Но я все равно не понимаю. Я даже не использовал скрипты.
Проверка на ошибки выполняется и в скриптах, которые мирно лежат в папке проекта, а не только на подвешенных к ГО скриптах.
Посмотрите консоль повнимательнее. Эту ошибку обычно сопровождает пара других, относящихся к каким-либо файлам.
-
KaMiKaZa - UNIт
- Сообщения: 75
- Зарегистрирован: 29 окт 2012, 15:42
- Откуда: ЯНАО, Надым
Re: Не запускается проект.
farast 12 дек 2012, 19:56
В папке проекта лежит только сам проект.
Ошибка полностью:
All compiler errors have to be fixed before you can enter playmode!
UnityEditor.SceneView:ShowCompileErrorNotification()
Я не понимаю, что означает вторая строка. Можете прояснить?
-
farast - UNец
- Сообщения: 7
- Зарегистрирован: 11 дек 2012, 23:01
Re: Не запускается проект.
seaman 12 дек 2012, 20:04
Посмотрите консоль
- seaman
- Адепт
- Сообщения: 8351
- Зарегистрирован: 24 янв 2011, 12:32
- Откуда: Самара
Re: Не запускается проект.
farast 12 дек 2012, 20:30
Проблему решил. Причем очень странно. Сначала удалил самодельный скрипт, который лежал рядом с проектом. После этого появилась другая ошибка. В скрипте ThirdPersonController предлагалось поставить еще одну черточку.
Из
Используется csharp
if (Input.GetKey (KeyCode.LeftShift) | Input.GetKey (KeyCode.RightShift))
в
Используется csharp
if (Input.GetKey (KeyCode.LeftShift) || Input.GetKey (KeyCode.RightShift))
-
farast - UNец
- Сообщения: 7
- Зарегистрирован: 11 дек 2012, 23:01
Re: Не запускается проект.
JIeo_NEED 13 дек 2012, 00:14
Вам как раз об этом и сообщали ошибки.
-
JIeo_NEED - UNITрон
- Сообщения: 228
- Зарегистрирован: 01 мар 2012, 14:37
- Откуда: Владивосток, Приморский край, Россия.
- Skype: Develeone
-
- Сайт
Re: Не запускается проект.
Боец земноводцев 17 апр 2020, 01:30
Ребят у меня таже ситуация короче был на юнити 18 года и перескочил на 20-тый год и выдает такую ошибку:All compiler errors have to be fixed before you can enter playmode!
UnityEditor.SceneView:ShowCompileErrorNotification()
пожалуйста помогите
- Боец земноводцев
- UNец
- Сообщения: 1
- Зарегистрирован: 17 апр 2020, 01:28
Вернуться в Почемучка
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Describe the bug
I added unity webrtc 2.1.3-preview and its examples to a clean, empty project using the Unity package manager but Unity consistently shows the «All compiler errors have to be fixed before you can enter playmode!» error.
The errors persist even after deleting the Library folder.
To Reproduce
Steps to reproduce the behavior:
- Open Unity 2019.4.2f1
- Select Window/Package Manager in the menu bar.
- Install unity webrtc 2.1.3-preview
- Import Samples -> Example
- Press play
- See «All compiler errors have to be fixed before you can enter playmode!» with no errors displayed in the console.
Expected behavior
Unity to play the scene successfully.
Environment (please complete the following information):
- OS: MacOS Catalina 10.15.6
- Unity Version: 2019.4.2f1
- Package version: 2.1.3-preview
Additional context
After looking through the logs, the following compiler errors may be an issue:
Microsoft (R) Visual C# Compiler version 2.9.1.65535 (9d34608e)
Copyright (C) Microsoft Corporation. All rights reserved.
Library/PackageCache/com.unity.textmeshpro@3.0.1/Scripts/Runtime/TMP_DefaultControls.cs(191,22): error CS1061: 'RectMask2D' does not contain a definition for 'padding' and no accessible extension method 'padding' accepting a first argument of type 'RectMask2D' could be found (are you missing a using directive or an assembly reference?)
-----CompilerOutput:-stderr----------
-----EndCompilerOutput---------------
- Finished compile Library/ScriptAssemblies/Unity.WebRTC.Editor.dll in 0.584728 seconds
- Finished compile Library/ScriptAssemblies/Unity.Timeline.Editor.dll in 0.936078 seconds
- Finished script compilation in 6.391839 seconds
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/UserInterface/Bootstrap.cs(23,20): error CS0117: 'Collab' does not contain a definition for 'ShowChangesWindow'
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(108,22): error CS1061: 'Collab' does not contain a definition for 'ChangeItemsChanged' and no accessible extension method 'ChangeItemsChanged' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(109,22): error CS1061: 'Collab' does not contain a definition for 'SelectedChangeItemsChanged' and no accessible extension method 'SelectedChangeItemsChanged' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(110,22): error CS1061: 'Collab' does not contain a definition for 'RevisionUpdated_V2' and no accessible extension method 'RevisionUpdated_V2' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(112,22): error CS1061: 'Collab' does not contain a definition for 'CollabInfoChanged' and no accessible extension method 'CollabInfoChanged' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(114,22): error CS1061: 'Collab' does not contain a definition for 'ErrorOccurred_V2' and no accessible extension method 'ErrorOccurred_V2' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(460,36): error CS1061: 'Collab' does not contain a definition for 'GetChangesToPublish_V2' and no accessible extension method 'GetChangesToPublish_V2' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(477,22): error CS1061: 'Collab' does not contain a definition for 'PublishAssetsAsync' and no accessible extension method 'PublishAssetsAsync' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(503,32): error CS1061: 'RevisionsService' does not contain a definition for 'FetchSingleRevisionCallback' and no accessible extension method 'FetchSingleRevisionCallback' accepting a first argument of type 'RevisionsService' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(506,36): error CS1061: 'RevisionsService' does not contain a definition for 'GetRevision' and no accessible extension method 'GetRevision' accepting a first argument of type 'RevisionsService' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(511,36): error CS1061: 'RevisionsService' does not contain a definition for 'FetchSingleRevisionCallback' and no accessible extension method 'FetchSingleRevisionCallback' accepting a first argument of type 'RevisionsService' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(517,36): error CS1061: 'RevisionsService' does not contain a definition for 'FetchSingleRevisionCallback' and no accessible extension method 'FetchSingleRevisionCallback' accepting a first argument of type 'RevisionsService' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.collab-proxy@1.3.9/Editor/Models/Providers/Collab.cs(593,22): error CS1061: 'Collab' does not contain a definition for 'RevertFiles' and no accessible extension method 'RevertFiles' accepting a first argument of type 'Collab' could be found (are you missing a using directive or an assembly reference?)
Library/PackageCache/com.unity.textmeshpro@3.0.1/Scripts/Runtime/TMP_DefaultControls.cs(191,22): error CS1061: 'RectMask2D' does not contain a definition for 'padding' and no accessible extension method 'padding' accepting a first argument of type 'RectMask2D' could be found (are you missing a using directive or an assembly reference?)
Содержание
- How to fix: «All compiler errors have to be fixed before you can enter playmode!»
- 4 Ответов
- Ваш Ответ
- Welcome to Unity Answers
- Подписаться на вопрос
- All compiler errors have to be fixed before you can enter playmode?
- 2 Ответов
How to fix: «All compiler errors have to be fixed before you can enter playmode!»
Every time I try to press play, at the bottom of the editor, it says,»All compiler errors have to be fixed before you can enter playmode!» And no, I don’t know how to code very well and double clicking the error on the console does not work at all. Please help.
4 Ответов
Ответ от Dave-Carlile · 19/06/15 18:48
You need to fix the compiler errors. Switch over to the Console tab and it will list the errors. You should be able to double click them there and it will take you to the error in your code. If not, it gives the file and line number so you can go there manually.
Ответ от Graham-Dunnett · 19/06/15 18:48
You need to fix all the errors in your code. Each error that is reported will include an error code, so CS1525 is an example. T$$anonymous$$s is an error for c#. If you are using JS, then your errors may start with bce . Once you have found the error codes, search for them on t$$anonymous$$s site and you’ll find existing solutions.
Ответ от Lazy_Sloth · 01/02/20 12:29
Look for errors in your scripts! The program w$$anonymous$$ch use using for scripting will mark the errors and use to be an error tab too. If t$$anonymous$$s not mark anyt$$anonymous$$ng, maybe you miss or delete the «: MonoBehaviour» part after the class name.
Would be awesome if you copy the scripts here and we can check it.
Ответ от auayigah · 30/04/20 04:34
please i have the same error. please i need help.][1]
Ваш Ответ
Welcome to Unity Answers
If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.
Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.
Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.
Подписаться на вопрос
Ответы Ответы и комментарии
7 пользователей подписаны.
Источник
All compiler errors have to be fixed before you can enter playmode?
I am designing an FPS on Unity using a tutorial that I downloaded on the Unity website, and the tutorial tells me to $$anonymous$$t «play» after placing the First person Controller and deleting the main camera. It says that I should be able to move around the map with the WASD keys. I did everyt$$anonymous$$ng the tutorial told me to do, but for some reason when I $$anonymous$$t «play», it says «All compiler errors have to be fixed before you can enter play mode!». I have no idea what to do about t$$anonymous$$s and I NEED HELP.
2 Ответов
Ответ от DaveA · 01/09/12 01:35
It’s too bad that Unity does not update their tutorials. They worked ok in the version they were released for.
So what happened is Unity put stricter coding standards into the compiler so it complains about t$$anonymous$$ngs more. Basically to prevent sloppy coding. What you are finding is evidence of that.
That said, unless you can get a copy of a fixed project, you’ll need to fix these problems. Look at it as a learning opportunity. You will get your feet wet with coding quicker.
So yes, you have to look at the console to see what the errors are. Double-click one, it should open the text editor right to the offending line. They use the error message as a clue. Does it say ‘protected or private member inaccessible due to permissions’ or somet$$anonymous$$ng like that? That means you need to find the component (script) that declares that variable or function, and add ‘public’ or remove ‘private’ from it.
Google is your best friend here. We’ve all done t$$anonymous$$s: copy from the console, paste into google, $$anonymous$$t search. I don’t t$$anonymous$$nk I’ve ever come up empty that way.
Источник
Aaleks 0 / 0 / 0 Регистрация: 07.10.2020 Сообщений: 11 |
||||
1 |
||||
Проблема при запуске скрипта07.10.2020, 21:09. Показов 5649. Ответов 3 Метки unity (Все метки)
Только начал разбираться с Unity вот код скрипта
Код запускаю через Notepad++ Миниатюры
__________________
0 |
603 / 445 / 196 Регистрация: 05.04.2015 Сообщений: 1,768 |
|
07.10.2020, 21:38 |
3 |
Пишете один, а здесь был другой код RotateCamera это конструктор его там не должно быть Кликните здесь для просмотра всего текста
0 |
0 / 0 / 0 Регистрация: 07.10.2020 Сообщений: 11 |
|
08.10.2020, 03:30 [ТС] |
4 |
Если зайти в консоль,то вот такие как я понимаю ошибки,правда они почему то не как не описаны Миниатюры
0 |
Общие вопросы
-
Почему именно Unity3D?
Unity3D – самый популярный и быстро развивающийся игровой движок из всех существующих. Он является идеальным решением как для инди-разработчиков, так и для больших компаний. Unity сочетает в себе простой, но в тоже время очень сильный функционал, чем покорил создателей игр во всем мире.
-
Как проходит обучение?
После заказа курса Вам автоматически будет создан аккаунт на нашем сайте. Логин и пароль к аккаунту будут отправлены Вам на почту (проверяйте папку спам). Войдя на сайт со своим логином и паролем, Вам нужно перейти на страницу курса. В правом верхнем плеере будут доступны уроки. переключение уроков на стрелочке в плеере: http://prntscr.com/q3yix4
Доступ к видео будет постоянный – навсегда. сможете пересматривать в любое время. Домашние задания (если они предусмотрены курсом), будут в Вашем кабинете на вкладке “Загрузки”.
Наши курсы максимально детализированы и идеально подходят для самостоятельного обучения. Видеоуроки курсов четкие, простые, хорошо структурированные.
На случай, если у Вас все же возникнут вопросы – Вы всегда можете обратится в поддержку на почту сайта. Мы постараемся предоставить детальный ответ в течении нескольких рабочих дней.
-
Я новичок, могу ли я расчитывать на помощь в ходе обучения?
Вы можете воспользоваться услугами платного куратора или обращаться на почту сайта по тем вопросам, которые Вам не удалось решить самостоятельно.
-
Как долго ждать доступ после оплаты?
Доступ к курсу будет открыт автоматически, сразу после зачисления оплаты. Для того чтобы смотреть курс онлайн – авторизуйтесь в системе и перейдите на страницу курса.
-
Как долго ждать ответа по обучению?
После отправки вопроса на нашу почту, всегда формулируйте Ваш вопрос максимально подробно. Обязательно указывайте, какой урок какого курсы Вы проходите. Добавляйте скриншоты проблемы/ скриптов/ ошибок. Описывайте что не получилось или после каких действий возникла проблема.
На правильно сформулированные вопросы отвечаем в течении нескольких дней – недели. Иногда дольше. В праздничные дни запросы не обрабатываются.
-
Как оплатить если я не с России?
Цены на сайте указаны в российских рублях, но платежные системы, с которыми мы работаем, позволяют отправлять платежи в любой валюте Мира с помощью банковских карт Visa/MasterCard.
Таким образом, Вы сможете произвести оплату не зависимо от того, в какой стране Вы находитесь.
-
Можно ли скачать видео уроков?
Нет. Видео доступны только для просмотра онлайн, непосредственно на странице курса. Скачать можно только дополнительные материалы к курсам. Они будут доступны для загрузки в личном кабинете в разделе “Загрузки”.
-
С какого возраста можно начинать обучение?
Уроки курсов сняты и разработаны специально для новичков, с постепенным введением в материал. Легко, понятно, без сложных терминов. Базовый курс доступен для обучения с 11-12 лет.
-
Какой браузер использовать для просмотра курса?
Рекомендуем использовать браузер Chrome. В браузере от Yandex уроки могут не запускаться.
-
Доступ к курсу внезапно закрылся, что делать?
Доступ к курсам не может пропасть, так как он открывается навсегда. Если Вы перешли на страницу курса, но видео недоступно, значит Вам нужно повторно залогинится в Ваш аккаунт на нашем сайте.
Регистрационные данные были отправлены Вам на почту в день оплаты курса. Возможно они попали в папку “Спам”.
В случае, если Вам не получилось найти/вспомнить пароль и восстановить доступ к аккаунту, отправьте письмо в поддержку сайта support@unity3dschool.com и сообщите о проблеме. Обязательно укажите Ваш логин на сайте. В течении нескольких рабочих дней доступ будет восстановлен.
-
Я «старый клиент« и хочу получить доступ для просмотра Online, что для этого нужно?
1. Воспользуйтесь формой обратной связи на главной странице сайта. Отправьте письмо в поддержку и напишите названия курсов, которые Вы покупали. Обязательно добавьте скриншоты из платежной системы, подтверждающие оплату, либо скриншоты с почты о том, что мы отправляли Вам ссылку на скачивание, либо скриншоты видео курсов, подтверждающие факт покупки курсов.
2. Дождитесь ответа по Вашему запросу от поддержки сайта в течение от 1 до 5 рабочих дней.Так как у нас хранится база e-mail адресов получателей курсов, то мы сможем проверить, был ли отправлен курс на указанный Вами адрес. После проверки данных, если информации достаточно, Вы получите письмо от поддержки сайта о предоставлении неограниченного доступа к указанным курсам.
Вопросы по курсу Unity Базовый курс: 2D платформер с нуля
-
Почему при тех же скриптах персонажа «кидает« из стороны в сторону, как будто скользит?
Если при идентичных скриптах у Вас возникают ошибки, какие-то баги, то не всегда их появление вызвано проблемой в скриптах. Огромную роль при создании игры также влияет настройка в самом редакторе Unity.
Обратите внимание на то, что у вас в окне Hierarchy. Если игрок и/или все платформы являются «ребенком» объекта Main Camera, то есть находятся в зависимости от него, то когда игрок двигается (при нажатии клавиши), камера (из-за её скрипта) стремится получить такую же позицию как игрок. И так как игрок является зависимым объектом камеры, он двигается вместе с ней. Происходит рассинхрон, из-за чего камера всегда будет «двигать» пришельца.
В таком случае требуется всего лишь вытащить все объекты из зависимости от камеры.
-
Изменение цвета персонажа после 2-3 раза не успевает обрабатываться и происходит с сильным опозданием
1. Нужно внести изменения в код. Для начала объявим переменную bool canHit = true;
2. Затем в методе RecHp добавим одну строчку http://prntscr.com/pskprk
3. Добавим ещё одну строчку в корутину onHit http://prntscr.com/pskqdy
Если не получилось, сверьтесь с данной частью кода:
http://prntscr.com/rf4a5i
http://prntscr.com/rf4a9p -
4 Урок. Покраснение происходит с отставанием после второго попадания на пилу, а после падения и рестарта уровня задержка может быть и до 5 секунд
необходимо ввести переменную логического типа (bool), которая будет отвечать за то, что нашего игрока ударили. Когда его бьют — делаем её истинное (внутри новой корутины), затем делаем остановку на какое-то время (сколько мы хотим, чтобы длилась анимация), затем делаем эту переменную опять ложной. Пол дела сделано. Теперь мы должны перед срабатыванием абсолютно любой другой анимации делать дополнительную проверку (if), что у нас эта переменная ложная — то есть запускать другие анимации только тогда, когда нас никто не бьёт. И также, нужно не забыть про проверку, когда у нас эта переменная истинная — тогда мы будем запускать анимацию удара.
-
GameObject отображается в игре и не отображается в окне сцены, почему?
- Объекты, которые не отображаются в игре, никак не влияют на игровой процесс, но при этом их видимость можно настроить в редакторе Unity — называют Gizmos.
Вверху окон Game и Scene есть несколько вкладок настроек. Одна из вкладок называется Gizmos. У Вас она выключена (обозначена серым цветом) в окне Scene и включена (белый цвет) в окне Game. Вам просто необходимо сделать наоборот. Чтобы включить/выключить отображение Gizmos, просто нажмите на эту самую вкладку.
http://prntscr.com/q3ydz5
2. Если отображение Gizmos настроено правильно, но проблема осталась, тогда проверьте Ваш скрипт. Обратите внимание, что в методе Start() по оси Z мы оставляем позицию камеры. То есть пишем просто transform.position.z. Без ссылки на target. В уроке объяснялось, почему мы это делаем. http://prntscr.com/vbm1yq
- Объекты, которые не отображаются в игре, никак не влияют на игровой процесс, но при этом их видимость можно настроить в редакторе Unity — называют Gizmos.
-
В окне Animations нет параметра Samples, что делать?
Вам попалась версия, в которой количество кадрова в секунду у анимации (поле Samples) не показывается изначально. Его нужно включить вручную. Для этого просто нужно нажать в правом верхнем углу окна Animation на колёсико (настройки). И там выбрать Show Sample Rate. http://prntscr.com/q9fais
-
Как настроить исчезновение бомбы после столкновения с любым объектом?
-
Как создать врага преследователя с запасом жизней?
-
Как сделать звезды для оценки уровня?
-
Как добавить пасхалку в игру?
-
Как добавить и настроить смену скинов игрока?
-
Как настроить камеру для битвы с боссом?
-
Как сделать, чтобы игрок останавливался на том месте лестницы, на котором попал на нее?
Если игрока тянет при прыжке на лестницу или спуске на нее, то исправляем так: http://prntscr.com/qs9xjn
Необходимо дописать в Методе OnTriggerStay2D скрипта Player одну строчку. Этой строчкой мы убираем вектор скорости персонажа до нуля. Таким образом, при каждом вхождении игрока на лестницу, он будет терять все скорости, импульсы, силы.
-
Когда персонаж на лестнице, то он перестает получать урон от врагов, как это исправить?
-
Как прописать, чтобы при получении урона тоже свой звук был?
Чтобы понять, когда нужно проигрывать звук получения урона, нужно просто логически сопоставить — когда это будет. Когда игрок будет сталкиваться с врагом — нет, так как не каждое столкновение может наносить урон. Тогда другой вариант — когда отнимаются жизни. Логично, что раз отнимаются жизни, то это получение урона. Всё очень легко: http://prntscr.com/rf4g9b
-
Персонаж прыгает «через раз«, при обычном прыжке или отталкивании от врага может улететь вверх.
Если при идентичных скриптах у Вас возникает проблема с прыжками, ищите проблему в настройках Unity.
Проблема связана с тем, что герой не всегда понимает, на земле ли он – может ли он прыгать или нет. Необходимо банально взять и передвинуть объект groundCheck по оси Y. Напоминаем, что groundCheck отвечает за проверку, на земле ли герой. Нужно просто немного изменять ему позицию в оси Y — выше, ниже. Изменили и запускайте игру — тестируйте. Если результат неудовлетворительный, то опять меняете позицию. Это делается подбором. Точно какую позицию взять, сказать не сможем, так как у каждого свой герой со своими параметрами, своими границами коллайдера и соответственно, у каждого будет своя позиция для объекта groundCheck.
Если не получилось – читаем дальше:
Необходимо добавить дочерний объект игроку (можно назвать его также groundCheck). И сделать ему небольшой коллайдер прям у ног персонажа. Коллайдер необходимо сделать триггером.
Затем добавить ему новый скрипт (можно назвать CheckingGround)
Внутри скрипта пишем: http://prntscr.com/qf91se
То есть, мы проверяем, если в триггер входит какой-то коллайдер кроме игрока, значит мы на полу.
Также, нужно не забыть в скрипте Player сделать переменную isGrounded публичной:
И так как данный способ является альтернативным, то метод CheckGround() и все его вызовы в скрипте Player нужно удалить! (В моём случае, я просто закомментировал его) http://prntscr.com/qf92a9
Данный способ можно использовать, если не получается хорошо использовать предыдущий. Стоит отметить, что как и в предыдущем способе, чтобы всё работало идеально, нужно немного поработать ручками. В случае второго способа необходимо потратить немного времени, чтобы подобрать наилучший тип и размер коллайдера у объекта groundCheck
Если не получилось – смотрите видео:
-
Персонаж прыгает не всегда
Суть проблемы: персонаж прыгает не всегда и проблема не в граундчеке. Персонаж не прыгал и до создания в скрипте проверки на то, на земле он или нет. Скрипт один в один.
Решение: проверьте как настроен Animator: http://prntscr.com/raruwk
-
Уровень не перезагружается: Unity жалуется на тело метода Lose
Нужно проверить, указан ли объект Main в скрипте. Происходит ситуация, когда метод пытается обратиться к объекту, которого как бы не существует. В инспекторе в скрипте в поле Main укажите объект, который имеет скрипт Main.
-
8 Урок: Синий кристал неуязвимости не работает. Как исправить?
Суть проблемы: Если собрать синий кристалл и во время игры ни разу не был нанесён урон, то всё отлично работает. Но если за игру хоть раз был получен урон, и не важно, собрал ли после этого жизнь или нет, то при сборке кристалла он появляется сверху, но неуязвимость не работает. То есть урон всё равно наносится.
Решение:
Необходимо изменить корутину подбора синего гема:
http://prntscr.com/rbaztz
А также для оптимизации немного изменить корутину NoHit()
http://prntscr.com/rbb04r -
9 Урок: нет окна Tile Palette. Как добавить?
Скорее всего, при создании проекта Вы не поставили галочку на импортировании пакетов 2D. Из-за этого некоторый функционал у Вас изначально не подключён. В том числе и Tilemap. Импортируйте данные пакеты. Для этого откройте Package Manager: http://prntscr.com/q4vtu0
Необходимо сделать так, чтобы возле пакетов 2D Sprite и 2D Tilemap Editor стояли галочки, означающие, что пакеты скачаны: http://prntscr.com/q4vu9v
Выбирайте эти пакеты и нажимай на кнопку Install. Так как у нас эти пакеты уже скачаны, у нас там другая кнопка — Remove (удалить). Когда появится эта кнопка, то её уже нажимать не надо: http://prntscr.com/q4vuxt
После установки необходимых пакетов советуем перезапустить Unity.
-
9 Урок: объекты не движутся по рамкам тайлмапа. Как исправить?
В новых версиях необходимо дополнительно зажимать кнопку ctrl, когда двигаете объект, чтобы он двигался по сетке.
-
16 Урок: после добавления джойстика возникает куча ошибок. Что делать?
Пример ошибок: http://prntscr.com/rfvsz5
Решение:
- Заново импортируйте проект. Можно использовать Reimport All (правой кнопкой мыши в окне project и выбрать эту команду).
- Можно попросту взять и перезапустить Unity.
- Дополнительно нужно свериться с Вашей версией Unity и минимальной версией, поддерживающей джойстик (если требуется — скачайте новую версию Unity).
-
Ошибка: NullReferenceException: Object reference not set to an instance of an object UnityEditor.Experimental.AssetImporters.AssetImporterEditor.InternalSetTargets (UnityEngine.Object`{«}` t) (at C:/buildslave/unity/build/Modules/AssetPipelineEditor/ImportSettings/AssetImporterEditor.cs:122) UnityEditor.Editor.OnForceReloadInspector () (at C:/buildslave/unity/build/Editor/Mono/Inspector/Editor.cs:603)
В случае возникновения данной ошибки рекомендуется сделать следующие действия:
- Нажмите правой кнопкой мыши по своему скрипту
- Выберите Reimport http://prntscr.com/q9fefo
- Затем там же выберите Resfresh
Если данные шаги не помогут, то рекомендуется переустановить Unity (или попробовать использовать другую версию).
-
После добавления инвентаря при использовании сердца здоровье не восполняется
-
Как улучшить качество графики, чтобы у спрайтов были четкие контуры?
Вопросы по курсу Unity Базовый курс
-
Где скачать Unity?
Unity можно загрузить бесплатно с официального сайта по ссылке: https://store.unity.com/ru/download
-
Не загружается Unity — как исправить?
Суть проблемы: http://prntscr.com/mlcprq
Не удается запустить программу, загрузка зависает. От имени администратора также не удается запустить.
Простое решение – при первом запуске Unity требует подключения к интернету. Если подключения не стабильное, то Unity может себя так вести. Проверьте интернет, подключитесь по кабелю, если не поможет, то есть 2 способ.
1. Обязательно сделайте бекап своих проектов
2. Откройте AppData (в File Explorer указать путь C:users{username}AppData) перейдите в папку Roaming найдите папку Unity – удалите. Также сделайте в папке Local и LocalLow.
-
Как доустановить компоненты в unity hub во время создания проекта (java jdk и android studio)?
В двух словах – поставить галочку рядом с Android Build Support, а потом жать next.
-
Где взять компоненты Java SE Development Kit и Android SDK?
В комплекте Unity не поставляются Java SE Development Kit и Android SDK, их нужно скачивать с официальных сайтов.
Вот сайт Android Studio. Там есть кнопка DOWNLOAD ANDROID STUDIO. Если пройти по ней, то откроется ссылка на скачивание установочного файла: https://developer.android.com/studio/?gclid=Cj0KCQiA6ozhBRC8ARIsAIh_VC3i1KEXHJubeXx1Rmb76i1qdKOtVbyr8ohM880pXOf4rwU2GYyMitUaAiJ5EALw_wcB
Проверить наличие и правильность установки можно через Edit – > Preferences – > External tools. Если в строке Android поля пустые, то нужно указать расположение файлов sdk и jdk.
Для установки пути к SDK менеджеру достаточно указать папку sdk. Настройки (Edit->preferences->External Tools) должны выглядеть приблизительно так: http://prntscr.com/m04ymd
-
Где скачать Java SE Development Kit?
Для разных версий Unity используются разные решения
Но на версии 2019 установка происходит автоматически, нужно только в UnityHub кликнуть галочку с соответствующей опцией, нужной вам. В данном случае Android SDK/NDK.
т.е. просто в Unity Hub – Android Build Support => Android SDK & NDK Tools
Тут можно скачать разные модули:
Справа обязательно нужно выбрать ту версию Unity, которую используете вы.
-
Не удается скачать exe файл Android SDK Tools — скачивается архив тулов, но там exe файла нет
Полная статья:
https://docs.unity3d.com/Manual/android-sdksetup.htmlВкратце: нужно устанавливать через Unity Hub.
https://docs.unity3d.com/Manual/GettingStartedUnityHub.html
https://docs.unity3d.com/Manual/GettingStartedInstallingHub.html -
При загрузке JDK появляется регистрация на Oracle. Что делать, если я не хочу регистрироваться?
Если у вас более-менее новая версия Unity, то этого делать не нужно.
Вариант 1: открываете выбор таргет платформы – далее выбираете Android, жмете Open Dowload Page. Скачиваете, устанавливаете. http://prntscr.com/pr2ya1
Вариант 2: Загрузить Unity Hub (кнопочка справа по сслыке ниже) https://unity3d.com/ru/get-unity/download
И там можно выбрать какую версию юнити скачать, выбрать дополнительные компоненты.Если очень надо JDK с Oracla, то придется регистрироваться.
-
Где скачать архивный файл с папкой VScode ?
VScode – это бесплатное программное обеспечение и скачать его можно с официального сайта. https://code.visualstudio.com/Download
-
Контекстная подсказка в VSCode не работает — как исправить?
Нужно установить Targeting pack.
- Для Windows: https://www.microsoft.com/en-us/download/details.aspx?….
- Для Mac: ( нужен .NET SDK) https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install
1. Закрыть редактор кода и юнити. Убедиться что они не работают в фоновом режиме.
2. Установить Targeting pack.
3. Перезапустить юнити и редакторВторым шагом – нужно указать этото редактор в юнити. Edit -> Preferences -> External Tools. В строке External script editor Выбрать browse… и указать путь к .exe файлу кода.
Windows: C:users{username}AppDataLocalProgramsMicrosoft VS CodeCode.exe
Mac: /Applications/Visual Studio Code.appДетально описано вот тут: https://code.visualstudio.com/docs/other/unity
-
Контекстная подсказка в Visual Studio не работает — другие варианты как исправить?
Пример проблемы: http://prntscr.com/org581
Тут собраны другие возможные варианты решения данной проблемы:
Для начала: если VS используется только для Unity и есть хороший, быстрый интернет, то легче всего просто снести Unity и VS, и установить всё заново, пользуясь сайтом Unity.
Фикс Часть 1:
1.Скачайте и установите Visual Studio Tools for Unity по этой ссылке. Это нужно делать, когда Unity и Visual Studio закрыты.
2.В Unity, Edit –> Preferences… –> External Tools. Параметр External Script Editor, изменть на Visual Studio. Если в списке несколько версий – выбрать ту, которою вы только что обновляли.
Фикс Часть 2:
Если новые созданые скрипты подписываются как Miscellaneous – выполняем инструкцию ниже:
1.В Visual Studio –> Tools –> Options… –> Tools for Unity –> Miscellaneous. Под иконкой Show connectivity, выставить
true
и перезапустить Visual Studio.2.После перезапуска VS, иконка связи должна быть доступна в Visual Studio. Кликаем на неё и выбираем инстанс Unity, к которому мы подключаем VS. Красная иконка ‘x’ теперь должна стать коричневой галочкой. Теперь создаем новый C# скрипт в Unity , он должен открытся без надписи Miscellaneous.
Фикс Часть 3:
Не помогло?
Нужно сделать полный реимпорт проэкта.
1.Закрываем Visual Studio.
2.В Unity, реимпорт проэкта Assets –> Reimport All.
3.Открываем проэкт в Visual Studio, Assets –> Open C# Project. Это должно перегрузить проэкт и решить возможные проблемы с сылками на солюшн.
Фикс Часть 4:
Еще не помогло?
Лечим каждый C# файл индивидуально.
1.Кликаем на иконку Show All Files.
Фикс Часть 5:
Если не починилось, то…
1.Закрыть Visual Studio
2.В папке проэкта удалить все сгенерированные файлы для Visual Studio.
т.е. удаляем файлы с этими расширениями:
- .csproj
- .user
- .sln
Например:
Проэкт называется “Target Shoot”, файлы, которые удаляем:
- Target Shoot.csproj
- Target Shoot.Editor.csproj
- Target Shoot.Editor.csproj.user
- Target Shoot.Player.csproj
- Target Shoot.Player.csproj.user
- Target Shoot.sln
ВАЖНО! Больше ничего удалять не надо.
3.Дважды кликаем на скрипт из Unity, таким образом сгенерируются новый файлы, которые мы только что удалили.
2.Выбираем скрипт, в котором не работает автокомплит (те самый подсказки), кликаем правой клавишей и выбираем Include In Project.
Фикс Часть 6:
Если не работает и появляется ошибка:
The “GetReferenceNearestTargetFrameworkTask” task was not found
1.Устанавливаем Nuget PackageManager с этой ссылки.
2.Перезапускаем Visual Visual.
-
Как сделать так что бы VSCode не подтягивал все файлы с проекта а только скрипты?
Базовые статьи:
Заходим в
%APPDATA%CodeUsersettings.json
%APPDATA% это стандартная локация.
На windows 10 - открываем поиск, пишем %appdata%. Обычно только один вариант всплывает.
Далее открываем папки в соответствии с путем.
Ищем файл settings.json
Перед изменениями ОБЯЗАТЕЛЬНО скопируйте этот файл куда-либо, чтобы если что-то пойдет не так, можно было починить.
Добавляем туда вот это:
// Configure glob patterns for excluding files and folders. "files.exclude": { "**/.git": true, "**/.DS_Store": true, "**/*.meta": true, "**/*.*.meta": true, "**/*.unity": true, "**/*.unityproj": true, "**/*.mat": true, "**/*.fbx": true, "**/*.FBX": true, "**/*.tga": true, "**/*.cubemap": true, "**/*.prefab": true, "**/Library": true, "**/ProjectSettings": true, "**/Temp": true }
-
VSCode постоянно отображает ошибки, хотя NET Core SDK установлена. Что делать?
Рекомендация:
Попробуйте обновить всё, т.е. снести vs code и net core, а потом по инструкции установить всё заново НО используя последние версии vs code и net core.
Если не поможет – ставьте Visual Studio.
Инструкция на русском тут:
-
В Visual Studio через 5 секунд после открытия всё подчеркивается красным. Что делать?
Рекомендация:
Иногда автозаполнение в vs просто перестает работать.
На всякий случай сделайте копию проекта. А потом в проекте удалите папки Library и ProjectSettings. При запуске проекта они создаются заново, всё должно заработать. -
Предупреждения от VSCode. Что делать?
Рекомендация:
В принципе, их можно игнорировать.
Тем не менее, на сегодняшний день, многие плагины выдают такого рода ошибки.
Поэтому, шаг первый:
– попробовать обновить сам плагин, тот, что лежит в ассетах. В видео о установке показаны места и алгоритм, т.е. нужно удалить плагин из ассетов, скачать новую версию, установить по инструкции.
если не помогло, шаг второй:
– установить обычный Visual Studio
-
Где скачать CHARACTES?
Загрузить персонажа можно из пакета стандартных ассетов из Asset Store. В новых версиях Unity он действительно не появляется в вкладке “Assets>Import Package “, нужно загружать отдельно. Вот ссылка на него: https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-32351
Загружать нужно через вкладку AssetStore в самом редакторе Unity. Скачиваем папки CHARACTERS и обязательно CrossPlatformInput и Editor: http://prntscr.com/m0559k
Если в загруженных ассетах используется устаревшая версия, их из проекта придется удалить, иначе они будут выдавать ошибки. Вместо них нужно использовать стандартные модели – они подходят под новые версии Unity.
-
Где взять строку Android в External Tools?
Если у Вас нет Android, как показано на скрине: https://prnt.sc/lznkuw
То: при установке Unity нужно выбрать Android Build Support. Для этого нужно запустить установщик Unity и в предложенных вариантах выбрать Android Build Support: http://prntscr.com/m059ne
-
В Android SDK Manager в Extras отсутствует файл Anroid Support Library, как добавить?
Откройте: Tools > Android > SDK Manager. Выберите таб SDK Tools. Найдите Android Support Repository. Установить.
Подробнее можно почитать вот тут
-
Ошибка: Failed to extract Android SDK Platform version from string ‘R’…
Ошибка:
Failed to extract Android SDK Platform version from string ‘R’,
Input string was not in a correct format.
System.Threading.ThreadHelper:ThreadStart()Решение:
Cуть проблемы такая – на вашем компьютере установлено несколько версий java ИЛИ не установлена ни одна версия. И еще + может быть, что Unity автоматически берет java с самой большой цифрой номера версии, но эта версия java не подходит для вашей версии Unity.
Есть два пути решения этой проблемы со сборкой:
1) Правильный и быстрый вариант – поставить всё через unity hub.
Причем, если не помогает – снести всё и поставить еще раз.
По ссылочке картинка, самая первая.
Если появляются проблемы со сборкой:
в списке настроек билда ищем target api level -> по умолчанию.там должно стоять “automatic (hightest installed)” -> нужно переключить на самую большую цифру, у меня на 2018.3.6f1 “Android 9.0 ‘Pie’ (API Level 28)” – у вас там будет другое, ориентируйтесь по цифре рядом с API Level.
2) Очень не рекомендую, сложно, долго, обычно не дает результат.
Залезть в дебри документации, найти какая версия jdkndk нужна для вашей версии unity. Установить нужные sdk и ndk. Затем залезть в настройки unity и выставить нужную версию.
Проверяем наличие папочки в этом месте:
C:Users[username]AppDataLocalAndroidSdkndk-bundle
Если такой папочки нет – это означает, что на компьютере нет NDK.
Так же, если самой папки Android нет – значит нет sdk.
Внизу табличка с совместимостью.
Далее залезаем в unity. file -> build settings… -> player settings -> вкладка с настройками билда на андройд.
–> Смотрим, появилось ли желтое предупреждение с текстом “Failed getting availiable target api list”. Жмем switch platform – ждем пока всё переимпортится. Если откроется окошко проводника с надписью “select android sdk directory”, то sdk не установлен.
В android studio залезаем в file -> settings > java sdk. Там большой список разных версий sdk и ndk. Нужно докачать ту, которой будет пользоваться Unity.
Чтобы указать путь до sdk и ndk для unity: В Unity -> Edit -> Preferences -> External Tools
–> так же, после того, как будет установлены нужные компоненты, в unity в списке настроек билда ищем target api level -> там должно стоять “automatic (hightest installed)” -> нужно переключить на самую большую цифру, у меня на 2018.3.6f1 “Android 9.0 ‘Pie’ (API Level 28)” – у вас там будет другое, ориентируйтесь по цифре рядом с API Level.
В целом, повторюсь – подобрать “руками” версии ndk и sdk очень проблематично, лучшебыстрееэффективнее через unity hub.
-
Где взять FPScontroller?
https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-32351
Из Asset Store можно загрузить Standart Assets. Среди всех папок вам нужно будет открыть: Standart Assets – > Characters – > FirstPersonCharacter-> Prefabs из из этой папки поместить на сцену префаб FPSController
-
Как работать с Terrain в версии Unity 2018.3?
В старой версии Unity настройки в Terrain выглядели иначе: http://prntscr.com/m60b8p
Новая версия выглядит так: http://prntscr.com/m60bm7
Чтобы работать с Terrain в новой версии, следуйте инструкциям:
- Для рисования на Terrain выбираем Paint Texture
- Для начала нужно разукрасить землю – задать фон. Для этого в новой версии движка нужно сначала добавить так называемый Terrain Layer. Нажимаем кнопку Edit terrain layers. В предложенном меню вам нужно будет выбрать текстуру, которая будет задавать основной цвет (забегая наперед – это будет текстура типа diffuse)
- После того как справились с задачей создания фона, можно перейти к рисованию. Для этого создаем еще один слой из пункта меню create layer http://prntscr.com/m5kruh
- Настроим созданный слой. Текстуры бывают нескольких типов, один из них задает рисунку псевдо-объем. Такие текстуры называются Normal map. Чтобы на Вашем Terrain было видно детали в виде камней и прочих элементов, слой должен содержать Normal map. В том же меню находим пункт редактирования слоя. Тут нажимаем на треугольник, чтобы открыть выпадающее меню.
- Заполняем недостающие поля. На примере текстуры MudRockyAlbedoSpecular из стандартных ассетов, ее можно найти: /Standard Assets/Environment/TerrainAssets/SurfaceTextures. К этой текстуре также есть карты нормалей. Заполняем нужные поля. Для этой текстуры также необходимо заменить параметр размера. В итоге ваш Terrain принимает такой вид: http://prntscr.com/m5ksem
Вы всегда можете экспериментировать с параметрами:
- http://prntscr.com/m5ksnz
- http://prntscr.com/m5ksvn
- http://prntscr.com/m5kt2m
- http://prntscr.com/m5kt6h
- http://prntscr.com/m5ktd1
-
Как удалить деревья установленные через terrain-paint trees?
Так же как ставили, только удерживая клавишу Shift.
-
Можно ли траву и деревья выделить как объект и редактировать их (например размер и их местонахождение), если они добавлены через terrain? ?
Нет.
Почему так:
Если мы поставим на сцену 100.000 отдельных кубиков, то компьютер ЛЮБОЙ мощности не сможет показывать такое количество отдельных объектов.
Решение – объединить все объекты в одну “модель”.
Т.е. самая главная “фишка” террейна именно в том, что земля, кусты, растения и деревья (и вроде как можно еще исхитрится и добавлять камни) объединены в один “физический” объект, таким образом появляется возможность демонстрировать такое огромное количество разных объектов.
Поэтому, например, создать полностью разрушаемую обстановку – это очень сложная и трудоемкая задача.
-
Где взять Normal map при работе с Terrain?
Суть проблемы: Не получается работать с Terrain. При создании слоя Normal map выдаёт предупреждение: “normal texture should be imported as normal map”. Где взять карту нормалей?
1) normal texture should be imported as normal map
В ассетах кликаете по текстуре, которую хотите использовать как normal map. В инспекторе находите параметр Texture Type, меняете на Nornal Map, снизу справа кликаете Apply.
2) Набор текстур можно скачать в ассет сторе (очень много вариантов, нужно полазить) или в интернете (хороший источник это сайты для ребят увлекающихся модификациями игр, например nexusmods.com).
Так же их можно изготовить самостоятельно. Простой вариант это PixPlant pixplant.com
Продвинутый (корректный и сложный) вариант – это замоделить в программе типа 3d Max, а затем сделать композицию.
-
Как регулировать прозрачность в Unity 2019?
Суть проблемы: 2. Урок Базового курса – объясняется, как накладывать текстуры на шарики. Чтобы сделать прозрачность, говорится про регулировку альфа канала. Показывается, что надо установить шрейдер Standsrd и Рендеринг мод – Transparent. Тогда при регулировке цветности текстуры к RGB добавляется альфа канал – http://prntscr.com/ofa5ib
А в unity 2019 при любом сочетании шрейдеров и рендеринг мод альфа канал не появляется –http://prntscr.com/ofa62i.
Решение: http://prntscr.com/oflkzz
Настройка “opacity” – это и есть прозрачность. Чтобы окно выбора цвета выглядело так же, как в уроке, нужно переключить режим цвета.Для этого нужно кликнуть справа сбоку от надписи HSB Sliders, переключить на RGB Sliders. В такой раскладке будет альфа-канал.
-
Как уменьшить интенсивность тени объекта в Unity 2019?
Суть проблемы: слишком интенсивная собственная тень у объектов http://prntscr.com/ofc80x
Решение: попробуйте поменять значение Strength у всех источников света в сцене. http://prntscr.com/ofm73l
-
При попытке сделать колесо дочерним объектом, оно меняет форму. Почему?
Пример проблемы: https://prnt.sc/ndidyh
Так бывает, если масштаб одного объекта задавался в отношении global, а другого – local.
Можно поправить это, либо присвойте цилиндр пустому объекту с масштабом (1,1,1) и уже эту конструкцию – присвойте Car. -
Что делать если способ Application.LoadLevel(“namelevel”); не работает?
В юнити сейчас новый способ загрузки уровней через SceneManager. Делаем это так:
using UnityEngine.SceneManagement;
SceneManager.LoadScene(“whatever”);
или в одну строчку
UnityEngine.SceneManagement.SceneManager.LoadScene(“whatever”); -
Вкладка Game в размытом состоянии. Как исправить?
Пример проблемы: https://prnt.sc/nqudvo
Это случается если изменён масштаб окна. Чтобы это исправить в окне Game найти поле Scale и выставить бегунок на 1.
-
При создании новой сцены, освещение меняется и все объекты становятся не белыми, а более желтыми и тени очень темными. Как исправить?
Предполагаем два варианта проблемы:
1) Сбились стандартные настройки качества изображения.
Попробуйте выставить стандартные настройки на более качественную конфигурацию
https://docs.unity3d.com/ru/current/Manual/class-QualitySettings.html
Если не помогло:
2) Сбились настройки источника света
Удалите источник света и поставьте новый.
Или в инспекторе источника света правой клавишей на шестеренке в компоненте Light и выбрать Reset. -
Зачем преобразовывать координаты объекта из локальных в world space ?
Игровые объекты должны перемещаться в игровой сцене относительно других объектов, поэтому нужно привести локальные координаты к глобальным. Если цифры локальных и глобальных координат отличаются, без приведения к глобальным, вы получите неконтролируемые перемещения, которые будет непонятно как чинить. А если вы хотите чтобы ваши модели двигались адекватно относительно друг-друга, стоит двигать их в одинаковой системе координат.
-
Что значит ошибка: «all compiler errors have to be fixed before you can enter playmode«?
Пример проблемы: http://prntscr.com/o0howj
Замените ассеты которые вызывают ошибку более новыми из современного Assetsstore. В консоли можно найти путь к ним и посмотреть, подключены ли они к сцене.
Если заменить их невозможно – удалите.Второй пример: http://prntscr.com/q35rrv
Ошибка “All compiler errors have to be fixed before you can enter playmode!” означает, что допущены ошибки в коде. В консоле данная ошибка расшифровывается, то есть пишет, что именно не так.
Вот ваша ошибка: http://prntscr.com/q35scyСиним цветом подчеркнуто то, в каком скрипте ошибка. При этом, указан ещё и путь к этому скрипту.
Зеленым цветом обозначена позиция ошибки в скрипте (48 — номер строки, в которой допущена ошибка; 27 — номер символа ошибки в строке).
Оранжевым цветом подчеркнуто пояснение ошибки. Пояснения всегда пишется на английском. Но всегда можно обратиться к переводчику или сразу загуглить эту ошибку. В Вашем случае пишет, что не существует имени isGrounded.Щелкнув два раза по ошибке, откроется скрипт и красным подсветится Ваша ошибка в скрипте. http://prntscr.com/q35t7k
При объявлении Вы назвали переменную isGroundend. А потом пытаетесь обратиться к переменной isGrounded. В первом случае есть лишняя буква «n». Таким образом, Вы пытаетесь обратиться к переменной, которой не существует.
-
Cпособ загрузки файла локализации на android(json)?
Суть проблемы: на компьютере при сохранении в StreamingAssets – всё работает. На Android через WWW не загружается файл.
Локализацию (вообще всю, даже базовую) лучше хранить онлайн на удаленном сервере в .тхт, и загружать при каждом запуске игры. Таким образом появится дополнительная защита от пиратства + гарантия, что игра будет работать только при подключении к интернету.
Пример таких же действий есть в игре Almost Alive, на unity + steam. Вот трейлер:
Суть: когда игрок выполняет какой-нибудь ачив, отправляется запрос в стим. И игра ждет подтверждения от стима.
На деле получается так: если игрок спиратил игру, то, естественно, игра не взаимодействует со стимом. При первом же ачиве игровой процесс просто останавливается, пока не придет ответ от стима.
А ответ от стима не придет никогда 😀
Android uses files inside a compressed APK
/JAR file,"jar:file://" + Application.dataPath + "!/assets"
.т.е. локация “папки” другая, через WWW ПО ИДЕЕ должно работать. Но, нужно уточнять – в каком конкретно формате вы храните инфу и что с ним делает юнити при компиляции, т.к. на андроиде ооочень много правил, связанных с безопасностью.
-
Что означает Auto Generate в настройках Lighting??
Auto Generation означает что LightMap и вообще свет будет запекаться автоматически. Если отключить Auto Generation то запекать надо будет вручную.
-
Урок 2. Почему вылетает Unity при попытке скачивания Nature Starter Kit ?
У этого пака есть некоторые проблемы с установкой. Чтобы избежать проблемы, рекомендуем импортировать только модели.
-
Урок 2. При добавлении персонажа (FPC) во время запуска выдает ошибку. Как исправить?
Пример проблемы: http://prntscr.com/orgbp8
Решение:
1) В идеале следует открывать консоль отдельным окном, чтобы было видно все ошибки.
2) Текст ошибок говорит о том, что для работы скриптов префаба FPSController не хватает скриптов в ассетах (их названия с в конце строки ошибки, в кавычках).
Для того, чтобы решить эту проблему, следует импортировать файлы из Standart Assets.
должно выглядеть вот так: http://prntscr.com/orgc57с 0.31 показывается, как импортировать стандартные ассеты.
Вкратце: если они есть на компьютере, то правая клавиша на ассет мэнэджэр (там где файлы лежат) > import package > standart assets.
если их там нет -> скачать с asset store и повторить попытку
-
Урок 2. Персонаж проваливается «под землю«. Что делать?
Суть проблемы: игрок проваливается сквозь землю при расположении его точно выше поверхности. Пример: проблемы:
http://prntscr.com/ofa7fr
http://prntscr.com/ofa7pk
Решение:
1) На контроллере и земле должны быть колайдеры. На колайдерах настройка isKinematic должна быть выключена (состояние false, без галочки).
2) Убедится, что контроллер установлен выше земли. Если контроллер заходит в землю даже на 1 мм, контроллер провалится сквозь землю.
3) Убедится, что объекты принадлежат слоям, которые могут взаимодействовать. Самый простой вариант – добавить их в один слой. (layer в верхнем правом углу инспектора объекта)
Так же, можно проверить, какие слои могут сталкиваться в Edit -> Project Settings -> Physics.
-
Урок 3. Не получается взаимодействовать с компонентами модели: работают только стандартные компоненты — transform, mesh renderer, box и те, которые сам добавляю. Что делать?
Пример проблемы: https://prnt.sc/lznisc
Это происходит из-за типа импорта модели. При клике на модель откроется Инспектор и в нем вы увидите вкладку Materials. Внутри неё можно будет выбрать тип импорта в строке Location. По умолчанию там стоит Use Embedded materials. Если выбран этот пункт, то под ним пунктом будут две кнопки Extract Textures и Мaterials. Они позволяют “достать” материалы из модели и открыть их для изменения внутри редактора Unity.
http://prntscr.com/m05ema
-
Урок 3. Машинка в префабе повёрнута неправильно, как поменять направление осей?
Ориентация осей модели исправляется в движке следующим алгоритмом: сделаем Трансформ-пустышку с правильными осями и будем работать с ней – добавлять на неё скрипты и тд.
1. создаем родительский трансформ GameObject->Create Empty. Называем его так, чтобы понимать что это будет за объект
2. размещаем элемент по центру модели (Совет – разместите вашу модель в координатах (0,0,0) (путем сбрасывания позиции объекта в компоненте transform), тоже самое сделайте с пустыми объектом – это поможет избежать ошибок)
3. Выровняйте оси вашей модели так чтобы оси модели были направлены правильно относительно осей пустышки. Не меняйте направление осей пустого трансформ – его Rotation всегда должен быть (0,0,0).
4. В объектах сцены сделайте вашу модель дочерним объектом пустого трансформ – в иерархии перетащите объект модели в пустой трансформ.
Таким образом вы получите объект, который выглядит в точности как ваша модель (потому что пустой объект не дает никаких визуальных эффектов), а оси у неё будут задаваться осями пустого объекта, независимо от Rotation модели. -
Урок 3. Машинка не поворачивается «лицом« к объекту, а двигается боком, как исправить?
Ошибка указывает на то, что оси заданы неверно.
Нужно чтобы z ось (синяя) указывала “вперед” модели.
Кликните на объект, выберитe Move tool (второй в линейке – 4 стрелочки). Если вы видите, что оси заданы неверно, то вам нужно проделать следующие действия.
1. создайте пустой объект
2. поместите модель внутрь него (сделайте дочерним), ориентируйте ее правильно (меняйте transform компонент (rotation) пока не получите правильный результат.
3. перенесите скрипты и остальные компоненты на родительский объект, оставив на дочернем только модель. -
Урок 3. Машинка не удаляется при столкновении с кубиком. Скрипты те же.
В инспекторе кубика, скрипта Enemy, надо указывать объект со сцены. Если указывать префаб из ассетов, то скрипт попытается удалить префаб из ассетотв, а если объект со сцены – то объект со сцены.
Ассетпрефаб не удаляется, так как разработчики юнити специально прописали отдельную команду для удаления ассетов. -
Урок 3. Не появляется MoveObject и targetposition?
Пример скрипта с проблемой: http://prntscr.com/mfmef2
Причина и решение:В данном скрипте проводятся действия над позицией, но никуда не сохраняетcя полученное значение. Чтобы скрипт заработал, нужно в выражении в 20 строке поставить “равно” после moveObject.transform.position. То есть, заменить знак минуса на знак присваивания.
Если у Вас стоит знак = но проблема актуальна, то:
Очень важно научится следить за синтаксисом, т.е. за скобочками, точка/запятая и т.д.
Проверьте знаки препинания, сверьтесь с курсом.Общее правило – в конце каждой строки с командой должно быть “;”
Так же, не менее важно следить за расположением фигурных скобочек.В общем виде это должно выглядеть так:
public ТипПеременной переменная = значениеПеременной;
ТипПеременной переменная1 = значениеПеременной;
ТипПеременной переменная2;void НазваниеФункции () {
переменная = ТипКоллкецииКоманды.НазваниеКоманды (переменная1, переменная2);
}Также после объявления переменных не нужны settergetter. В рамках Unity это очень специфический инструмент, используется крайне редко. Если Вы использовали его в своем коде, то после moveObject и targetPosition нужно удалить запись до точки с запятой.
Чтобы получилось так:public GameObject moveObject;
public Transform targetPosition; -
Урок 3. Не нашёл материалы для изменения цвета машины. Где взять ?
Посмотрите внимательно в конце 6-ой минуты, как делает преподаватель:
Он открывает папку с материалами, которые импортированы в месте с моделью, а затем меняет свойства (цвет) этих материалов.
Так же есть вариант создать материал и присвоить его к модельке автомобиля.
Для этого в окно Project кликните правой клавишей, а затем выберите Create New -> Material.
Далее перетащите материал на элемент автомобиля и поменяйте параметры этого материала. -
Урок 3. Папка Materials не создается автоматически. Где взять ?
В зависимости от версии Unity
1) импортирует текстуры + материалы из файла модели + создает отдельные материалы в проекте при наличии текстуры.
Либо
2) создает копии материалов
Такая разница существует, так как в версиях 2017+ добавили поддержку алегоритмик, субстанс и pbr материалов.
Чтобы поменять цвета, кликаете на модельке в ассетах (окно Project)
Затем в инспекторе переходите во вкладку Materials:
На скриншоте изображен список материалов для модельки, которая используется как пример – у Вас будет другой список.
В этот список нужно добавить вновь созданные материалы.
Чтобы создать материал – в окне Project кликаете правой клавишей, далее Create => Material, перетаскиваете в одну из позиций в списке материалов, меняете параметры материала, как вам нравится.
-
Урок 4. Скрипт не встает в объект и выдает ошибки. Что делать?
В 4-уроке нужно создать BlockSpawner, но скрипт не встает в объект и выдает следующие ошибки:
- http://prntscr.com/m07wtn
- http://prntscr.com/m07x3a
- http://prntscr.com/m07xh8
Почему так? Проблема в том, что были использованы разные имена у файла и класса, вероятно его переименовывали после того, как он создался. Так нельзя делать. Решение этой проблемы: создать скрипт заново и сразу его правильно назвать. Дальше, скопировать из старого скрипта все, что внутри скобочек класса (то есть после слова :Monobehaviour и перед закрывающей скобкой – их не нужно включать). Важно! При копировании в новый скрипт – в новом скрипте нужно сохранить абсолютно всё, что в нем записано при создании. Просто следует разместить старый код внутри нового класса.
-
Урок 4. Как со сцены перенести предмет в префаб любого предмета (префаб изолирован)?
Суть проблемы: в новой версии Unity, чтобы работать с префабом, нужно открывать его в другом окне, где он изолирован от сцены. Из-за этого при использовании скрипта невозможно указать что при столкновении с предметом происходит какое -либо действие, можно указать на префаб этого предмета, но тогда при запуске проекта скрипт не работает.
Решение: Не смотря на то, что появилась возможность редактировать префаб в Prefab Mode, работа изменилась мало. Окно префабов открывается, если нажать на стрелочку (на скриншоте номер 1), а работать с префабом можно, если нажать на сам префаб (номер 2) http://joxi.ru/eAOvyKGUxJNnn2
Скрипты и прочие элементы добавляются как и раньше – можно перетаскивать на префаб (например туда где указывает стрелочка номер 2)
А если у вас не работают скрипты столкновения, то проверьте, есть ли у ваших объектов Rigidbody
-
Урок 4. Свет не возвращается в исходную позицию, при выходе персонажа за зону света
Суть проблемы:
- http://prntscr.com/ombw06
- http://prntscr.com/ombw5g
Решение: неправильно написано имя метода выхода из триггера. Правильно будет “void OnTriggerExit(Collider other)”
-
Урок 4. «Realtime indirect bounce shadowing is not supported for Spot and Point lights«
Это не ошибка, а предупреждение.
Если непрямое ОТРАЖЕНИЕ (добавляет немного эмбиент освещения) необходимо, то можно игнорировать. Это очень режет производительность игры.
Тем не менее, предупреждение можно убрать (и, соответственно, улучшить производительность) выбрав источник света с предупреждением и установив настройку Indirect Multiplayer на 0.
Вот базовая статья:
Не рекомендуем пока заморачиватся на эту тему, очень-очень-очень много делов.
-
Урок 4. Что такое Getaxis и Getbutton?
Допустим нужно, чтобы когда нажимаешь на кнопочку что-то происходило.
Правильный вариант это реализовывать через Event’ы.
Классический вариант выглядит так:
void Update () {
if (Input.GetButton(“НазваниеКнопкиВИнпутМенеджере”)) {
//код, выполняемый по нажатию клавиши
}
}
т.е. если кнопка “НазваниеКнопкиВИнпутМенеджер” нажата, то команда Input.GetButton возвращает true => условие выполняется => выполняется код.
Есть т.н. Input Manager. Там можно заранее прописать кнопочки и оси, чтобы далее их использовать с помощью команды типа:
Input.GetButton
Input.GetAxis
Так же, можно вывести меню при запуске игры, чтобы можно было менять управление.
На деле команды, работающие с Input Manager не используют с более-менее серьёзными проектами.
Потому, что в самой игре нельзя менять назначение клавиш внутри Input Manager’а.
Для этого используют команды аля:
Input.GetKey
Где аргументом идет вот это:
Фишка вот в чем: можно этот тип использовать для переменной, а потом прописать нормальный инпут менеджер, как во всех нормальных играх.
Например, вот такой код узнает, что за кнопка нажата, потом её можно записать в переменную:
-
foreach(KeyCode kcode in Enum.GetValues(typeof(KeyCode)))
-
{
-
if (Input.GetKey(kcode))
-
Debug.Log(“KeyCode down: ” + kcode);
-
}
Так же есть еще один важный нюанс:
1) Input.GetKeyUp возвращает true, когда отпускаешь кнопку.
2) Input.GetKeyDown возвращает true, когда нажимаешь кнопку.
3) Input.GetKey возвращает true, когда удерживаешь кнопку.
-
-
Проблемы с освещением в сценах
Суть проблемы: во всех созданных сценах, кроме 1, свет тусклый. Все настройки ИС во всех сценах одинаковые. Настройки изображения хорошие.
Решение:Это нездоровая особенность работы с dx11.
В двух словах, конечный результат работы освещения зависит в первую очередь не от источника света:
1) от настроек освещения на конкретной сцене
2) от настроек screen-space шейдеровДля того, чтобы контролировать ситуацию, рекомендуем добавить к инспектору вкладку освещение http://prntscr.com/qul1bq
http://prntscr.com/qul1rz
Там где в инспекторе надпись “Inspector”, на саму надпись нажмите правой клавишей, далее add tab – > lighting
Проверьте разность настроек между сценами. -
Отсутствует вкладка lighting. Как включить?
-
Ошибка при добавлении скрипта к объекту «class cannot be found«
Пример ошибки: https://prnt.sc/ml26fs
Ошибка появляется из за того, что:
1. Имя файла и имя класса в нём должны совпадать
2. Класс должен наследовать от Monobehaviour.
3. Класс обязательно должен быть в файле скрипта.Откройте скрипт и проверьте правильность выполнения всех этих пунктов.
-
Предупреждение: «Currently realtime indirect bounce light shadowing for spot and point lights is not supported«
Суть проблемы: при добавлении точечных источников освещения в проект, среда выводит предупреждение.
Пример предупреждения: http://prntscr.com/oflxsw
Решение:
«В настоящее время в режиме реального времени косвенное отражение света для направленных и точечных источников света не поддерживается».
В данном случае им можно пренебречь. Убрать это предупреждение можно простым переключением Mode в режим Mixed http://prntscr.com/oflz6a
-
При нажатии Play в ту же секунду появляется ошибка. Почему?
При импорте стандартных ассетов Вы, вероятно, забыли импортировать папку CrossPlatformInput. Если вернетесь к импорту и добавите эту папку в ваш проект, то скрипт заработает. Возможно придется снова импортировать этот скрипт.
-
Не запускается игра: ошибка компиляции, что делать?
Пример ошибки компиляции http://prntscr.com/lznmdp
Если у Вас возникают ошибки как на скрине выше, значит среди ассетов у вас есть устаревшие файлы – они и выдают ошибку. Данные объекты были удалены еще в версии 5.4. Решением этой проблемы будет удаление устаревшего скрипта. В логах консоли помимо ошибки вы можете найти путь и имя файла который ее вызывает – это написано в самом начале записи в консоли.
-
Урок 6. Персонаж смещается относительно коллайдера, как исправить?
Выполняя домашнее задание к уроку №6 был выбран персонаж “The Woman Warrior”: https://assetstore.unity.com/packages/3d/animations/the-woman-warrior-33230
Но при запуске анимаци персонаж смещается относительно коллайдера. Само смещение записано в Animation, поправить не удается так как стоит Read only. В чем проблема данной ситуации?
Важно при импорте модели указать Rig – humanoid. Такие проблемы с анимацией чинятся Import Settings – Animation и для каждого клипа анимации нужно указать галочку Bake Into Pose в Root Transform position. Based Upon можно выбрать feet: http://prntscr.com/m07qw5Не забыть применить настройки и сделать это для каждой анимации.
Внимание: самые качественные модели в AssetStore – это модели для новых версий Unity, в них учтены новейшая версия скриптов Unity и особенности обновленного движка. -
Урок 7. Ошибка при запуске игры — «Please change the script to derive from MonoBehaviour or remove it from the GameObject«?
Такая проблема возникает у некоторых пользователей, когда они создают новый скрипт в режиме редактирования префабов.
Что нужно сделать:
1) Проверить орфографию названия скрипта CarContoll, важно, чтобы названия класса и файла совпадали.
2) Правой клавишей нажать на ассеты, открыть папку проэкта
3) В найти папку Library
4) Удалить её
5) Далее правой клавишей по ассетам => reimport all
реимпорт может занять некоторое время
-
Ошибка при открытии Asset Store
Вид ошибки: http://prntscr.com/qtcd6d
Это значит, что вы не подключены к интернету.
1) попробуйте запустить игру от имени администратора.
если не помогло
2) проверьте пускает ли эдитор через фаерволл. -
Урок 7. Проблема с подбором монеток в 2D аналоге игры. Параметр is Trigger не работает.
Пример проблемы: Подбор монеток – при работе с 2D аналогом (речь идет о ректенглах) – параметр is Trigger на монетке и на игроке не работает: http://prntscr.com/qaam4a
Решение:
Для начала нужно проверить, запускается ли OnTriggerEnter.
——————————————————————————————–
Для этого между добавить строку print(“works”) или Debug.Log(“works”) между объявлением функции и условием.
Если в консоле будет появляться запись “works”, это означает, что не выполняется условие, т.е. проверка на название объекта.
Я не рекомендую использовать названия объектов и вообще string’и как условие.
Тем не менее, для сравнивания string’ов есть команда:
т.е. в вашем случае это будет как-то так:
if (coin.name
.Equals("GaroldPlayer")) {
//ваш код тут
}
Если не помогло, а триггер всё же работает - поменяйте проверку на проверку тэга.
В инспекторе монеток, сверху слева - Tag. Создайте новый, назовите, например, Coin.
В скрипте объявляем:
public string CoinTag;
В инспекторе в переменную пишем название ранее созданного тэга, а на префабе монеток меняем тэг на ранее созданный.
Меняем условие выполнения на что-то типа этого:
if (coin.gameObject.CompareTag("Player")) { //ваш код тут }
——————————————————————————————-
Если OnTriggerEnter не запускается.
——————————————————————————————–
1. Убеждаемся, что на игроке колайдер, а на монетке триггер.
2. Убеждаемся, что на игроке есть ригидбоди.
– не нужна физика? в настройках ригидбоди ставим галочку рядом с isKinematic
– вообще это верная практика добавлять ригидбоди на всё, что движется, а затем двигать с помощью Rigidbody.MovePosition через FixedUpdate. Производительность выше + нет шанса, что из-за лаговфризов объект начнет двигаться непредсказуемо.
3. Если на монетках есть анимация, то анимацию нужно отделить от коллайдера.
Т.е. создать базовый gameobject, со скриптом и триггером, а на второй gameobject кидаем анимацию. Далее второй объект перевинтим под первый объект.
-
Урок 7. Почему таргет не движется с машиной вместе?
1) Идея скрипта такова:
ФИЗИЧЕСКИ автомобиль не двигается впередназад. Двигается окружение. С помощью кнопок автомобиль можно сдвинуть влевовправо в определенных границах.
2) Границы передвижения в сторону устанавливаются в строках:
if (target.transform.position.x > -0.335)
и
if (target.transform.position.x < 1.049)
Обратите внимание, что в обучающем видео установлены границы -2.8 и 2.8.
3) Стационарная дальность до таргета устанавливается с помощью числа -5.71 в строке
Vector3 movePos = new Vector3(target.position.x, 0.18f, -5.71f);
4) Переменная speed влияет на скорость, с которой машина двигается вправовлево И с какой скоростью машина занимает “стационарную” позицию.
5) Стационарная позиция машинки устанавливается вот этой строкой (в конце скрипта):
transform.position = Vector3.MoveTowards(transform.position, movePos, Time.deltaTime * (speed - 0.5f));
Стационарная позиция рассчитывается вот этой строкой:
Vector3 movePos = new Vector3(target.position.x, 0.18f, -5.71f);
В итоге ,как это должно работать:
При запуске игры, машинка едете к movePos.
Далее останавливается в координатах movePos, на дистанции в 5.71 до таргета.
Далее в процессе игры мы меняем координаты target c помощью строки
target.transform.Translate(moveLeftVector * Time.deltaTime * speed);
и target.transform.Translate(moveLeftVector * Time.deltaTime * speed);
Обратите внимание, есть ли у Вас тут ошибка – в одной команде должно быть moveLeftVector, в другой moveRightVector, а не в обоих moveLeftVector.
Далее Update выполняется вновь, новый таргет для расположения автомобиля высчитывается заново с помощью строки:
Vector3 movePos = new Vector3(target.position.x, 0.18f, -5.71f);
-
Почему в параметрах скорости стоит значение отрицательное или 0 , но не положительное?
Так будет, если Вы изначально расположили объекты некорректно и некорректные значения выставили в скрипт.
Координаты на таргеты ставьте 0, 0.71, 0.
Координаты для машинки 0, 0.71, -5.71.
Скорость, но можно любое положительное значение.
Пример корректного скрипта:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CarControls : MonoBehaviour
{
public Transform target;public Vector3 moveLeftVector = Vector3.left;
public Vector3 moveRightVector = Vector3.right;
public float speed = 5;
void Start()
{}
void Update()
{
Vector3 movePos = new Vector3(target.position.x, target.position.y, -5.71f);
if (Input.GetKey(KeyCode.A))
{
if (target.transform.position.x > -2.8)
{
target.transform.Translate(moveLeftVector * Time.deltaTime * speed);}
}if (Input.GetKey(KeyCode.D))
{
if (target.transform.position.x < 2.8)
{
target.transform.Translate(moveRightVector * Time.deltaTime * speed);
}
}
transform.LookAt(target);
transform.position = Vector3.MoveTowards(transform.position, movePos, Time.deltaTime * (speed – 0.5f));}
} -
Ошибка JDK при компиляции проекта на Android. Что делать?
1) Нужна папка Unity, хранящаяся в в Users.
Путь до неё будет примерно такой:
C:Users%имяпользователя%.gradle
Папка может находится в разных местах внутри Users, если сразу не нашли её – воспользуйтесь поиском по файлам.
Закройте Unity, удалите папку, попробуйте собрать еще раз.
2) Если не помогло:
1. Заходим в папку, где установлен Editor. (Не Unity Project, а сам Editor) Локацию можно узнать, посмотрев свойства ярлыка Unity.
2. Переходим в папку: Editor > Data > PlaybackEngines > AndroidPlayer > Tools > GradleTemplates
3. Открываем libTemplate.gradle с помощью текстового редактора.
4. Меняем местами строки 3 и 4, чтобы “google” находился выше. -
При компиляции проекта на Android не открывается меню Player. Что делать?
Суть проблемы: при компиляции игры на андроид, в настройках не открывается меню Player и при попытке открытия пишет следующие ошибки (на скриншоте).
На Windows все работает. Если менять на андроид, то стоит переключить на другую вкладку и опять вернуться на вкладку Player, как снова ничего не работает.Решение:
В данном случае .gradle’ы не нужно удалять.
Ошибки:
“CommandInvokationFailure: Failed to update Android SDK package list.
C:/Program Files/Unity/Hub/Editor/2019.3.0a7/Editor/Data/PlaybackEngines/AndroidPlayerSDKtoolsbinsdkmanager.bat –list””GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced.
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)”В сочетании вот с таким вот окном Player:
Указывает на то, что юнити не может найти JRE. Периодически, хз почему, но на определенных машинах такое происходит.
Скачайте, установите, перезапустите компьютер.
-
Как можно реализовать смену машинок в меню?
Вообще, для новичка это очень сложная задача.
Тем не менее, делается это так:1. Нужно создать коллекцию машинок.
т.е. как в уроке была создана одна машинка, нужно создать их несколько и, важно, чтобы они были сохранены в виде префабов в ассетах.2. Далее нужно создать скрипт, который будет переключатся между машинками. Для этого в скрипте должны быть сохранены ссылки на ранее созданные машины.
Делается это с помощью массива трансформов,
т.е. например
public Transform[] CarsCollection;
https://docs.unity3d.com/ru/current/ScriptReference/Array.html3. Дальше нужно создать функцию, которая будет уничтожать старую машинку, и, спаунить новую.
Здесь помогут функции Destroy() и Instantiate()
https://docs.unity3d.com/ru/current/Manual/InstantiatingPrefabs.html
https://docs.unity3d.com/ru/current/Manual/CreateDestroyObjects.html4. И, наконец, сформировать интерфейс, чтобы всем этим можно было воспользоваться.
т.е. чтобы с нажатия кнопки интерфейса происходило уничтожение старой машинки и создание новой.Подробности:
чтобы переносить скриптобъект со сцены на сцену поможет тэг [DontDestroyOnLoad]
https://docs.unity3d.com/540/Documentation/ScriptReference/Object.DontDestroyOnLoad.html -
Как сделать двойной прыжок? (с домашнего задания № 3)
В стандартном контроллере (FirstPersonController.cs) вас интересует функция FixedUpdate() и Update()
В Update снимаются нажатия клавишь.
В FixedUpdate происходят действия, связанные с физикой, т.е. передвижения объектов, в т.ч. присваивается гравитация.В Update:
// the jump state needs to read here to make sure it is not missed
if (!m_Jump) //эта строка блокирует выполнение второго прыжка, если персонаж уже находится в состоянии прыжка
{
m_Jump = CrossPlatformInputManager.GetButtonDown(“Jump”);
}и так же в FixedUpdate:
if (m_CharacterController.isGrounded)
{
m_MoveDir.y = -m_StickToGroundForce;if (m_Jump) //эта строка включает прыжок, только если персонаж на земле
{
m_MoveDir.y = m_JumpSpeed;
//PlayJumpSound();
m_Jump = false;
m_Jumping = true;
}
}
else
{
m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime;
}т.е. выносим конструкуцию
if (m_Jump)
{
m_MoveDir.y = m_JumpSpeed;
//PlayJumpSound();
m_Jump = false;
m_Jumping = true;
}
и ставим между
{
m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime;
}
и
m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime);тогда заработает множественный прыжок.
Если нужно именно 2-ной прыжок (ну или 3-ной, например) то нужно считать количество прыжков. Для этого нужно считать количество исполненных прыжков до приземления.
Т.е. в начале скрипта нужно объявить новые переменные.
Назовем их ActualJumpCount и MaxJumpCount.
private int ActualJumpCount = 0;
public int MaxJumpCount = 2; //двойной прыжок, но, можно, поставить 10, например, чтобы был 10-кратный прыжокДалее
if (m_Jump)
{
m_MoveDir.y = m_JumpSpeed;
//PlayJumpSound();
m_Jump = false;
m_Jumping = true;
}добавляем условие, получится так и счетчик прыжков:
if (m_Jump && (ActualJumpCount < MaxJumpCount))
{
ActualJumpCount++;
m_MoveDir.y = m_JumpSpeed;
//PlayJumpSound();
m_Jump = false;
m_Jumping = true;
}и выше:
if (m_CharacterController.isGrounded)
{
m_MoveDir.y = -m_StickToGroundForce;}
Добавляем обнуление счетчика:
if (m_CharacterController.isGrounded)
{
m_MoveDir.y = -m_StickToGroundForce;ActualJumpCount = 0;
} -
Как ограничить координаты персонажа, чтобы он не мог упасть за границу террейна? (с домашнего задания № 4)
Есть 3 варианта:
1. Самый правильный – открыть 3д макс или модо, взять кубик, вывернуть его наизнанку (т.е. чтобы полигоны смотрели внутрь).
Далее создать пустой объект в юнити, добавить на него MeshCollider, в геометрию добавить вывернутый кубик.
С помощь координат и масштаба объекта расположить как вам нужно.
Так сделано, например в Quake 2CS 1.5-1.6
2. Написать отдельный скрипт и принудительно “телепортировать” персонажа.
Можно с помощью условий, например:
В FixedUpdate:
If (КоординатыПерсонажа.x > РазмерТеррейна.x) {
КоординатыПерсонажа = new Vector3 (РазмерТеррейна.x, КоординатыПерсонажа.y, КоординатыПерсонажа.z)
}
В FixedUpdate:
КоординатыПерсонажа = new Vector3 (Mathf.Clamp (КоординатыПерсонажа.x, -РазмерТеррейна.x, РазмерТеррейна.x),
Mathf.Clamp (КоординатыПерсонажа.y, -РазмерТеррейна.y, РазмерТеррейна.y),
Mathf.Clamp (КоординатыПерсонажа.z, -РазмерТеррейна.z, РазмерТеррейна.z)
)
Но кастомный коллайдер – самый правильный и самый производительный вариант.
Если корректировать положение персонажа с помощью кода, могут возникнуть дополнительные проблемы – например при определенных условиях персонаж будет проваливаться сквозь землю.
Вопросы по курсу Unity Программирование игр на С#
-
Как добавить звук при столкновении кубиков?
1. Добавляете на кубик, который должен издавать звук компонент AudioSource. В компоненте найдете поле AudioClip – туда перетаскиваете файл со звуком.
http://joxi.ru/xAeV3j6Tp0oaprНастройки компонента AudioSource: http://joxi.ru/Y2LvxWBU9RKVLr
2. Убедитесь что столкновения работают (например можно прописать вывод в консоль при столкновении объектов)
3. В скрипте, который есть на кубике, найдите метод-обработчик столкновений (если нету – создайте новый и напишите сами и потом прикрепите к префабу)
4. В скрипте, сначала нам нужен будет экземпляр AudioSource. Создадим поле в классе. Вот так: AudioSource audioSource;
Если сделаете его public, то нужно будет в инспекторе вручную перетаскивать компонент в поле скрипта, иначе – вы можете получить его прямо из скрипта (до того как будете запускать звук) audioSource = GetComponent<AudioSource>();
Писать функционал будем внутри метода OnCollisionEnter()
сигнатура метода (и кстати пример использования звука) https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html
Нужно написать вот такое: audioSource.Play();Если при импорте файла или настройках компонентов вы нигде не поставили зациклить – то все должно работать.
Вопросы по курсу Unity Углубленный курс
-
Урок 1. Ошибка. The type or namespace name ‘NetworkingBehaviour’ could not be found
Пример проблемы:
http://prntscr.com/mwzio7
http://prntscr.com/oz5nta
Ошибка появляется при добавлении папки 2д из дополнительного материала к первому уроку юнити углубленного курса.
Типкласс NetworkingBehavior относится к сетевому решению Unet, не так давно Unet был запрещенотключен в Unity.
Чтобы починить эту ошибку, нужно:
1) Удалить строку “using UnityEngine.Networking” в начале скрипта
2) В строке public class Platformer2DUserControl : NetworkingBehavior”
NetorkingBehavior заменить на MonoBehaviorТаким образом скрипт будет наследовать свойства обычного GameObject’а.
-
Урок 2. Моделька Сары импортируеться с неисправным скелетом
Пример проблемы: http://prntscr.com/mwzio7
В конфигурации Rig у вас должно быть выбрано humanoid.
http://joxi.ru/brRvNRGUJ0Oo4rТакже в этом меню редактирования можно выбрать Pose > Enforce T-Pose, чтобы привести модель к T-pose
-
Урок 3. Метод SetDestination не обрабатывается и не позволяет запустить скрипт.
Суть проблемы: при работе с NavMesh возникли проблемы при написании скрипта. В 19-ой строке метод SetDestination не обрабатывается и не позволяет запустить скрипт. Была подключена дополнительная библиотека UnityEngine.AI, но это не исправило ошибку: http://prntscr.com/ofc9a5
Решение:
Ваша ошибка заключается в том что имя вашего скрипта полностью совпадает с именем NavMeshAgent. Ваш скрипт получает ссылку на самого себя где не содержится методов SetDestination. Переименуйте ваш скрипт. И добавьте к объекту где он расположен NavMeshAgent.
http://prntscr.com/ofm3fz
http://prntscr.com/ofm3rf
-
Урок 5. Не удалось найти тип или имя пространства имен «NavMeshAgent«
Пример проблемы: http://prntscr.com/ofa8f5
В начале скрипта, где всевозможные “import”ы, нужно добавить строку
using UnityEngine.AI;
Дело в том, что начиная с версии Юнити 5.0 функционал искусственного интеллекта вынесен в отдельную библиотеку.
С по мощью команды “using” мы добавляем “ссылку” на библиотеку. Без этой команды компилятор не понимает, о каких командах идет речь, и, выкидывает соответствующие ошибки. -
Урок 5. При смене положения пивота вместе с ним меняется положение и самой группы объектов. Как исправить?
Пример проблемы:
http://prntscr.com/ofn40t
http://prntscr.com/ofn4a0
Решение: отключите наследование объектов. Выставьте пивот поинты так, как вам надо и опять верните наследование.
Вопросы по курсу Unity Способы монетизации 2D игры
-
Урок 3. Не срабатывает эффект при выстреле по кораблю вражеской пули (при этом урон наносится) в чем проблема?
Вкратце: команда юнити изменила метод доступа до параметров particle system.
Теперь нужно обращаться через параметр main.
(посмотрите пример кода ниже)
-
При соприкосновении корабля с противником, противник не уничтожается, не наносит урон и не проигрывается эффект взрыва
– Шаг первый:
Убеждаемся, что коллизия не работает.
Для этого в скриптах ставим дебаг-сообщение после прямо в начале логики колизии.
т.е. после строки
void OnCollisionEnter2D (Collision coll) {
добавляем команду
Debug.Log (“Collision happend”); //ну или напишите другой текст сообщения, не суть. Важно заценить выполнение кода.– Шаг второй:
Проверяем, чтобы на каждом gameobject’е, с которого снимается коллизия висел компонент RigidBody, ставим галочку рядом с IsKinematic.
Таким образом, объект не будет взаимодействовать с гравитацией и импульсами, НО, будет считывать коллизию.
У многих это вызывает негодование, но, благодаря необходимости добавлять RigidBody увеличивается производительность физики, а это критически важно для мобильных устройств.
Производительность увеличивается, т.к. физ движок точно знает, какие объекты “слушать” на предмет столкновения, остальные проверяются только на Raycast.– Шаг третий:
Если коллизия всё равно не работает – нужно проверить, чтобы всё объекты были в одной плоскости.
Т.е. z координаты у всех корабликов должны быть одинаковые. Если не одинаковые – принудительно выставлять их на 0 после спауна (в Start, например).– Шаг четвертый:
Если коллизия срабатывает, но ничего не происходит:
Проблема в условиях выполнения логики. Скорее всего ошибка в написании названии тэгов. Опять же, проверьте с помощью debug сообщений.
-
Урок 4. Проблема с сохранением монеток после включения игры
Пример проблемы: в курсе объясняется, как сохранить монетки чтобы они не пропадали после выключения игры, для этого используется Редактор реестра. “У меня в реестре, в папке (DefaultCompany), нет ни одного моего проекта. И даже при создании новых проектов, всё равно их там нет.”
Решение:
Проблема сохранения заключается в неверном выборе события, которое вызывает сохранение. При нажатии паузы, выполнение всех скриптов останавливается. Соответственно и не выполняется метод Save(). Попробуйте выбрать другое событие для вызова метода Save(). Например, как показано в продолжении урока – OnApplicationQuit().
Search Issue Tracker
Then Compiler shows error user should no be able to enter playmode.
2. How we can reproduce it using the example you attached
1. Create a new project.
2. Create a new C# script. Make some simple error in it.
3. Open Scene Window.
4. Press Play.
Note: You cannot enter playmode. Compilation errors are in console.
5. Open any other window (Game, AssetStore, etc). Press Play.
Actual behaviour: Lots of errors are thrown in the console:
All compiler errors have to be fixed before you can enter playmode!
UnityEditor.SceneView:ShowCompileErrorNotification()
Expected behaviour: One error appears:
All compiler errors have to be fixed before you can enter playmode!
UnityEditor.SceneView:ShowCompileErrorNotification()
Errors are thrown till user switch to another window.
Regression since 5.4.0b24.
Is present in 5.4.0b25 (4aae2318024c) (Mon, 04 Jul 2016 13:06:29 GMT Branch: 5.4/staging) and 5.5.0a3 ((68f8e8376989) Thu, 07 Jul 2016 14:02:39 GMT Branch: trunk).