All compiler errors have to be fixed before you can enter playmode unity3d как исправить

Здравствуйте. Проблема такая: при запуске проекта, проект не запускается и появляется окошко с надписью "All compiler errors have to be fixed before you can enter playmode!". Что это такое и как это убрать?

Не запускается проект.

Не запускается проект.

Здравствуйте. Проблема такая: при запуске проекта, проект не запускается и появляется окошко с надписью «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



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.

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:

  1. Open Unity 2019.4.2f1
  2. Select Window/Package Manager in the menu bar.
  3. Install unity webrtc 2.1.3-preview
  4. Import Samples -> Example
  5. Press play
  6. 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?)

Павел Борисович

Павел Борисович

Демид Лупанов

Демид Лупанов

Орест Качур

Демид Лупанов

Демид Лупанов ответил Оресту

Орест Качур

Демид Лупанов

Демид Лупанов ответил Оресту

Павел Борисович

Павел Борисович ответил Демиду

Демид Лупанов

Демид Лупанов ответил Павлу

Павел Борисович

Павел Борисович ответил Демиду

Сергей Фурсов

Демид Лупанов

Демид Лупанов ответил Павлу

Демид Лупанов

Демид Лупанов ответил Павлу

Демид Лупанов

Демид Лупанов ответил Оресту

Андрей Сидор

Сергей Ражев

Была такая же ошибка. При открытии проекта пустые ошибки, а при запуске UnityEditor.SceneView:ShowCompileErrorNotification()

Все перепробовал. Ставил последнюю версию unity 2019 через торрент с офф. сайта. Потом через hub поставил, потом поставил версию 2018 года, тоже самое. А решение оказалось простым.
При установке с hub он внизу пишет 1 раз что нужно поставить обновление kb2533623. После 2 захода не пишет об этом и думается что ошибка в другом. Поставил обновление, все сразу пошло. Теперь открывается и в unity 2018 и 2019 без пустых ошибок и запускается без ошибок. В настройках плеера net 4.x теперь можно ставить.

У меня WIN 7 SP1, я еще поставил перед обновлением net core 3.1, не знаю влияет ли он на работу.

All compiler errors have to be fixed before you can enter playmode unity3d как исправить

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).

Comments (1)

Jul 12, 2017 18:30

Je n’ai rien compris, cela ne me donne pas d’indication pour régler le problème.

J’ai réussi à placer et faire bouger un «first person» la première foi que j’ai ouvert Unity, j’ai télécharger d’autres assets et fait des essais de décor mais du coup plus possible d’avoir l’icone de départ de la «first person».
Je me rabat donc sur «FPS.controler» ou «Rigidbody» que j’arrive à placer sur le terrain mais impossible de le faire ce déplacer en cliquant sur play. Toujours ce message d’erreur.
(«All compiler errors have to be fixed before you can enter playmode!»)

Pourquoi est-il possible de mettre le logiciel en anglais ou en 2 langues asiatique ou en une langue inconnu avec des caractères bizarre mais pas possible de mettre en français ??

Проблема Unity3d при попытке запустить проект пишет All compiler errors have to be fixed before you can enter playmode!

Помоги с этими ошибками

East RX, а как это исправить

Aaleks

0 / 0 / 0

Регистрация: 07.10.2020

Сообщений: 11

1

Проблема при запуске скрипта

07.10.2020, 21:09. Показов 5649. Ответов 3

Метки unity (Все метки)


Только начал разбираться с Unity
Вот такая вот ошибка
All compiler errors have to be fixed before you can enter playmode!
UnityEditor.SceneView:ShowCompileErrorNotification ()

вот код скрипта

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using UnityEngine;
 
public class RotateCamera : MonoBehaviour
{
    public float speed = 5f;
    private Transform _rotator;
   
    private void Start()
    {
        _rotator = GetComponent<Transform>();
    }
 
    // Update is called once per frame
    private void Update()
    {
        _rotator.Rotate(0,speed*Time.deltaTime,0);
    }
}

Код запускаю через Notepad++
подскажите как можно решить проблему,спасибо

Миниатюры

Проблема при запуске скрипта
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



603 / 445 / 196

Регистрация: 05.04.2015

Сообщений: 1,768

07.10.2020, 21:38

3

Пишете один, а здесь был другой код RotateCamera это конструктор его там не должно быть

Кликните здесь для просмотра всего текста

Название: ошибка.jpg
Просмотров: 53

Размер: 13.3 Кб



0



0 / 0 / 0

Регистрация: 07.10.2020

Сообщений: 11

08.10.2020, 03:30

 [ТС]

4

Если зайти в консоль,то вот такие как я понимаю ошибки,правда они почему то не как не описаны

Миниатюры

Проблема при запуске скрипта
 



0



Содержание

  1. How to fix: «All compiler errors have to be fixed before you can enter playmode!»
  2. 4 Ответов
  3. Ваш Ответ
  4. Welcome to Unity Answers
  5. Подписаться на вопрос
  6. All compiler errors have to be fixed before you can enter playmode?
  7. 2 Ответов
  8. How to fix: «All compiler errors have to be fixed before you can enter playmode!»
  9. 4 Ответов
  10. Ваш Ответ
  11. Welcome to Unity Answers
  12. Подписаться на вопрос
  13. All compiler error have to be fixed before
  14. Comments (1)
  15. All compiler errors have to be fixed before you can enter playmode?
  16. 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.

Источник

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 error have to be fixed before

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).

Jul 12, 2017 18:30

Je n’ai rien compris, cela ne me donne pas d’indication pour régler le problème.

J’ai réussi à placer et faire bouger un «first person» la première foi que j’ai ouvert Unity, j’ai télécharger d’autres assets et fait des essais de décor mais du coup plus possible d’avoir l’icone de départ de la «first person».
Je me rabat donc sur «FPS.controler» ou «Rigidbody» que j’arrive à placer sur le terrain mais impossible de le faire ce déplacer en cliquant sur play. Toujours ce message d’erreur.
(«All compiler errors have to be fixed before you can enter playmode!»)

Pourquoi est-il possible de mettre le logiciel en anglais ou en 2 langues asiatique ou en une langue inconnu avec des caractères bizarre mais pas possible de mettre en français ??

Je préférais l’ancienne version, a mon avis moins compliquer.

Si vous avez une solution compréhensible je suis preneur.

Источник

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.

Источник

Общие вопросы

  • Почему именно 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 отображается в игре и не отображается в окне сцены, почему?

    1. Объекты, которые не отображаются в игре, никак не влияют на игровой процесс, но при этом их видимость можно настроить в редакторе Unity — называют Gizmos.
      Вверху окон Game и Scene есть несколько вкладок настроек. Одна из вкладок называется Gizmos. У Вас она выключена (обозначена серым цветом) в окне Scene и включена (белый цвет) в окне Game. Вам просто необходимо сделать наоборот. Чтобы включить/выключить отображение Gizmos, просто нажмите на эту самую вкладку.

    http://prntscr.com/q3ydz5

    2. Если отображение Gizmos настроено правильно, но проблема осталась, тогда проверьте Ваш скрипт. Обратите внимание, что в методе Start() по оси Z мы оставляем позицию камеры. То есть пишем просто transform.position.z. Без ссылки на target. В уроке объяснялось, почему мы это делаем. http://prntscr.com/vbm1yq

  • В окне 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

    Решение:

    1. Заново импортируйте проект. Можно использовать Reimport All (правой кнопкой мыши в окне project и выбрать эту команду).
    2. Можно попросту взять и перезапустить Unity.
    3. Дополнительно нужно свериться с Вашей версией 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)

    В случае возникновения данной ошибки рекомендуется сделать следующие действия:

    1. Нажмите правой кнопкой мыши по своему скрипту
    2. Выберите Reimport http://prntscr.com/q9fefo
    3. Затем там же выберите Resfresh

    Если данные шаги не помогут, то рекомендуется переустановить Unity (или попробовать использовать другую версию).

  • После добавления инвентаря при использовании сердца здоровье не восполняется

  • Как улучшить качество графики, чтобы у спрайтов были четкие контуры?

Вопросы по курсу Unity Базовый курс

  • Где скачать Unity?

    Unity можно загрузить бесплатно с официального сайта по ссылке: https://store.unity.com/ru/download

  • Не загружается Unity — как исправить?

    Суть проблемы: http://prntscr.com/mlcprq

    Не удается запустить программу, загрузка зависает. От имени администратора также не удается запустить.

    Простое решение – при первом запуске Unity требует подключения к интернету. Если подключения не стабильное, то Unity может себя так вести. Проверьте интернет, подключитесь по кабелю, если не поможет, то есть 2 способ.

    1. Обязательно сделайте бекап своих проектов

    2. Откройте AppDataFile 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. Если в списке несколько версий – выбрать ту, которою вы только что обновляли.

    enter image description here


    Фикс Часть 2:

    Если новые созданые скрипты подписываются как Miscellaneous – выполняем инструкцию ниже:

    1.В Visual Studio  –> Tools –> Options… –> Tools for Unity –> Miscellaneous. Под иконкой Show connectivity, выставить true и перезапустить Visual Studio.

    enter image description here

    2.После перезапуска VS, иконка связи должна быть доступна в Visual Studio. Кликаем на неё и выбираем инстанс Unity, к которому мы подключаем VS. Красная иконка ‘x’ теперь должна стать коричневой галочкой. Теперь создаем новый C# скрипт в Unity , он должен открытся без надписи Miscellaneous.

    enter image description here

    Фикс Часть 3:

    Не помогло?

    Нужно сделать полный реимпорт проэкта.

    1.Закрываем Visual Studio.

    2.В Unity, реимпорт проэкта Assets –> Reimport All.

    enter image description here

    3.Открываем проэкт в Visual Studio, Assets –> Open C# Project. Это должно перегрузить проэкт и решить возможные проблемы с сылками на солюшн.

    enter image description here

    Фикс Часть 4:

    Еще не помогло?

    Лечим каждый C# файл индивидуально.

    1.Кликаем на иконку Show All Files.

    enter image description here

    Фикс Часть 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.

    enter image description here

    Фикс Часть 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 в новой версии, следуйте инструкциям:

    1. Для рисования на Terrain выбираем Paint Texture
    2.  Для начала нужно разукрасить землю – задать фон. Для этого в новой версии движка нужно сначала добавить так называемый Terrain Layer. Нажимаем кнопку Edit terrain layers. В предложенном меню вам нужно будет выбрать текстуру, которая будет задавать основной цвет (забегая наперед – это будет текстура типа diffuse)
    3. После того как справились с задачей создания фона, можно перейти к рисованию. Для этого создаем еще один слой из пункта меню create layer  http://prntscr.com/m5kruh
    4. Настроим созданный слой. Текстуры бывают нескольких типов, один из них задает рисунку псевдо-объем. Такие текстуры называются Normal map. Чтобы на Вашем Terrain было видно детали в виде камней и прочих элементов, слой должен содержать Normal map. В том же меню находим пункт редактирования слоя. Тут нажимаем на треугольник, чтобы открыть выпадающее меню.
    5. Заполняем недостающие поля. На примере текстуры 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)

    изображение.png

    Затем в инспекторе переходите во вкладку Materials:

    изображение.png

    На скриншоте изображен список материалов для модельки, которая используется как пример – у Вас будет другой список.

    В этот список нужно добавить вновь созданные материалы.

    Чтобы создать материал – в окне 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

    Где аргументом идет вот это:

    Фишка вот в чем: можно этот тип использовать для переменной, а потом прописать нормальный инпут менеджер, как во всех нормальных играх.

    Например, вот такой код узнает, что за кнопка нажата, потом её можно записать в переменную:

    1. foreach(KeyCode kcode in Enum.GetValues(typeof(KeyCode)))

    2. {

    3.     if (Input.GetKey(kcode))

    4.         Debug.Log(“KeyCode down: ” + kcode);

    5. }

    Так же есть еще один важный нюанс:

    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:P:processEvent(Int32, IntPtr)”

    В сочетании вот с таким вот окном Player:

    изображение.png

    Указывает на то, что юнити не может найти JRE. Периодически, хз почему, но на определенных машинах такое происходит.

    Скачайте, установите, перезапустите компьютер.

  • Как можно реализовать смену машинок в меню?

    Вообще, для новичка это очень сложная задача.
    Тем не менее, делается это так:

    1. Нужно создать коллекцию машинок.
    т.е. как в уроке была создана одна машинка, нужно создать их несколько и, важно, чтобы они были сохранены в виде префабов в ассетах.

    2. Далее нужно создать скрипт, который будет переключатся между машинками. Для этого в скрипте должны быть сохранены ссылки на ранее созданные машины.
    Делается это с помощью массива трансформов,
    т.е. например
    public Transform[] CarsCollection;
    https://docs.unity3d.com/ru/current/ScriptReference/Array.html

    3. Дальше нужно создать функцию, которая будет уничтожать старую машинку, и, спаунить новую.
    Здесь помогут функции Destroy() и Instantiate()
    https://docs.unity3d.com/ru/current/Manual/InstantiatingPrefabs.html
    https://docs.unity3d.com/ru/current/Manual/CreateDestroyObjects.html

    4. И, наконец, сформировать интерфейс, чтобы всем этим можно было воспользоваться.
    т.е. чтобы с нажатия кнопки интерфейса происходило уничтожение старой машинки и создание новой.

    Подробности:
    чтобы переносить скриптобъект со сцены на сцену поможет тэг [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().

Like this post? Please share to your friends:
  • All compiler errors have to be fixed before you can enter playmode unity как исправить
  • All compiler error have to be fixed before you can enter playmode
  • All boots are tried samsung как исправить
  • Alipay system error please try again later
  • Alimentazione gusta ошибка рено