Как исправить ошибки компилятора в unity

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.

Compiler errors can be a roadblock to your game development process. It can seem like a daunting task to fix them, especially in Unity – a game development engine popular with both beginners and seasoned game developers. Fortunately, there are some simple steps that can help you identify and fix compiler errors in Unity. Let’s take a look.

Troubleshooting Compiler Errors

If you’ve just received a compiler error in Unity, the first step should be to troubleshoot the issue. Here are some tips you can follow to identify and fix the compiler errors:

  1. Check your script for any typos and errors in punctuation, syntax or spelling.
  2. Ensure your script is formatted correctly and includes all necessary closing braces, parenthesis, etc.
  3. Double-check that you’re using the correct namespace, class, method and property names.
  4. Verify that you’re using the correct version of the .NET framework.
  5. Check if there are any incompatibilities between different packages or libraries you’re trying to use.
  6. Try disabling any third-party scripts or assets you’re using.
  7. Try uninstalling and reinstalling the IDE or game engine.
  8. Check if you’re allowed to use the assets you’re trying to import.

FAQ

How Do I Fix Compiler Errors in Unity?

There are multiple steps you can take to identify and fix compiler errors in Unity. These include checking your script for typos and errors, ensuring your script is formatted correctly, verifying the correct version of the .NET framework is being used,checking if there are any incompatibilities between different packages or libraries you’re using, disabling any third-party scripts or assets, uninstalling and reinstalling the IDE or game engine and checking if you’re allowed to use the assets you’re trying to import.

What Are Compilation Errors?

Compilation errors are errors that occur when code is trying to be compiled. They’re also referred to as compiler errors. It’s important to investigate the cause of compiler errors before attempting to fix them, as the cause may be due to typos, punctuation or formatting errors, incompatibilities between packages, or other issues.

What Is the .NET Framework?

The .NET framework is a platform developed by Microsoft to allow developers to create applications using multiple languages, libraries and tools. It provides a runtime environment that enables developers to write code and build applications without having to worry about the underlying infrastructure. It also offers both type-safety and memory-management features that simplify code writing and allow developers to focus on the logic of their applications.

What Is a Namespace in C#?

A namespace is a way to logically group related classes and functionalities in C#. It is a container that provides a way to avoid class conflicts and organize code. Namespaces are usually composed of a hierarchical structure and can contain other namespaces, classes, and other data types.

What is Syntax?

Syntax is the set of rules that specify how a programming language is written and structured. It defines how words, symbols and commands are combined to create a program. Examples of syntax rules include the use of case sensitivity, parentheses, braces, and semicolons, among others.

Conclusion

Compiler errors in Unity can be a roadblock to your game development process, but with some troubleshooting steps, you can identify and fix them quickly. By double-checking your script for typos, ensuring the correct version of the .NET framework is used, and disabling any third-party scripts or assets, you can efficiently identify and resolve the compiler errors in Unity.

https://support.unity.com/hc/en-us/articles/205637689-Why-do-I-get-a-All-compiler-errors-have-to-be-fixed-before-you-can-enter-playmode-error-

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?)
  • Почему при тех же скриптах персонажа «кидает« из стороны в сторону, как будто скользит?

    Если при идентичных скриптах у Вас возникают ошибки, какие-то баги, то не всегда их появление вызвано проблемой в скриптах. Огромную роль при создании игры также влияет настройка в самом редакторе 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 можно загрузить бесплатно с официального сайта по ссылке: 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)

    )

    Но кастомный коллайдер – самый правильный и самый производительный вариант.

    Если корректировать положение персонажа с помощью кода, могут возникнуть дополнительные проблемы –  например при определенных условиях персонаж будет проваливаться сквозь землю.

Ошибки компилятора

Ошибки компилятора

Друзья, подскажите что сделать с ошибками? Хочу понять принцип, чтобы в дальнейшем самостоятельно разбираться.

Вылезло 7 ошибок (связано либо с First Person Controller, либо с Day and Night Controller — больше ничего не трогал в это время, скорее даже ближе к FPS контроллеру — его перекосило и сбились настройи input (стал как-то бочком ходить), ошибки такие:

Assets/Standard Assets/Effects/ImageEffects/EdgeDetectEffect.cs(7,33): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Standard Assets/Effects/ImageEffects/Scripts/ColorCorrectionRamp.cs(6,38): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Standard Assets/Effects/ImageEffects/Scripts/Grayscale.cs(5,32): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Standard Assets/Effects/ImageEffects/Scripts/MotionBlur.cs(12,27): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Standard Assets/Effects/ImageEffects/Scripts/SepiaTone.cs(5,32): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Standard Assets/Effects/ImageEffects/Scripts/Twirl.cs(5,28): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?
Assets/Standard Assets/Effects/ImageEffects/Scripts/Vortex.cs(5,29): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?

они же на скрине:

http://prnt.sc/d10jbj

Откуда они взялись если в скрипты не лазил (локацией занимаюсь, модельки расставляю по террейну)?..

Спасибо за помощь.

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение samana 31 окт 2016, 07:34

Эти ошибки говорят о том, что в каком-то скрипте используется класс или пространство имён ImageEffectBase, но либо таких классов в вашем проекте нет, либо не прописан их «импорт» через using.

Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Ошибки компилятора

Сообщение Peccator.es 31 окт 2016, 11:09

То есть нужно прописать в соответствующих файлах… что?

Нашел пример тут:
using UnityStandardAssets.Characters.FirstPerson;

но ощущение, что в нашем случае по-другому

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение ewoera 31 окт 2016, 16:27

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

__immeasurability

skype elseway
youtube.com/user/immeasurability/videos

ewoera
UNец
 
Сообщения: 32
Зарегистрирован: 27 окт 2016, 13:55

Re: Ошибки компилятора

Сообщение Peccator.es 31 окт 2016, 19:10

Скрипт по адресу из первой ошибки выглядит так:

Используется csharp

using UnityEngine;

[ExecuteInEditMode]
[AddComponentMenu(«Image Effects/Edge Detection (Color)»)]
public class EdgeDetectEffect : ImageEffectBase
{
        public float threshold = 0.2F;

       
        // Called by camera to apply image effect
        void OnRenderImage (RenderTexture source, RenderTexture destination)
        {
                material.SetFloat («_Treshold», threshold * threshold);
                Graphics.Blit (source, destination, material);
        }
}

Строка ошибки: №7. Разве это не тот самый потерянный публичный класс там прописан?

В остальных скриптах присутствуют аналогичные записи, соответственно:

public class ColorCorrectionEffect : ImageEffectBase
public class GrayscaleEffect : ImageEffectBase
public class MotionBlur : ImageEffectBase
public class SepiaToneEffect : ImageEffectBase
public class TwirlEffect : ImageEffectBase
public class VortexEffect : ImageEffectBase

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение samana 31 окт 2016, 19:35

Проблема в том, что в вашем проекте видимо нет скрипта ImageEffectBase.

Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Ошибки компилятора

Сообщение ewoera 31 окт 2016, 19:41

ewoera писал(а):пере импортни эффекты для камеры, либо чисти все от этих эффектов

__immeasurability

skype elseway
youtube.com/user/immeasurability/videos

ewoera
UNец
 
Сообщения: 32
Зарегистрирован: 27 окт 2016, 13:55

Re: Ошибки компилятора

Сообщение Peccator.es 31 окт 2016, 19:49

samana писал(а):Проблема в том, что в вашем проекте видимо нет скрипта ImageEffectBase.

Как так? Все было ок и потом пропал? При том что я не трогал скрипты до того момента вообще.

Путем курения гугла добавил namespace, получилось так:

Используется csharp

namespace names {
public class EdgeDetectEffect : ImageEffectBase
{
        public float threshold = 0.2F;

       
        // Called by camera to apply image effect
        void OnRenderImage (RenderTexture source, RenderTexture destination)
        {
                material.SetFloat («_Treshold», threshold * threshold);
                Graphics.Blit (source, destination, material);
        }
}
}

Все ошибки с эффектами пропали, но появилась новая:

Assets/Standard Assets/Effects/ImageEffects/EdgeDetectEffect.cs(7,11): error CS1671: A namespace declaration cannot have modifiers or attributes

ewoera писал(а):

ewoera писал(а):пере импортни эффекты для камеры, либо чисти все от этих эффектов

Вот это больше похоже на правду, так как ошибки полезли именно после экспериментов с камерой FPS Controller… Я даже пытался из другого проекта из Стандартных Ассетов выдрать FPS Controller, не помогло… Надо видимо реально переимпортировать (вопрос — как и что именно?). Я всего неделю как серьезно увлекся Unity, так что не судите строго )

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение ewoera 31 окт 2016, 20:05

Assets->Import Package->Effects

__immeasurability

skype elseway
youtube.com/user/immeasurability/videos

ewoera
UNец
 
Сообщения: 32
Зарегистрирован: 27 окт 2016, 13:55

Re: Ошибки компилятора

Сообщение Peccator.es 31 окт 2016, 20:11

ewoera писал(а):Assets->Import Package->Effects

Сделал. Причем импорт не переписал файлы (не все, во всяком случае, файл с добавленным namespace так и остался с добавленным, и ошибка соответственно тоже). Убрал namespace из файла — вылезла опять ошибка:

Assets/Standard Assets/Effects/ImageEffects/EdgeDetectEffect.cs(9,33): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?

Радует, что сейчас она одна, 6 других пропали. Может надо через using добавить? Но как именно?

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение samana 31 окт 2016, 20:26

Peccator.es писал(а):Может надо через using добавить? Но как именно?

Подсмотреть в других скриптах, где прописан using для ImageEffectBase. Но почему вы не пользуетесь рефакторингом? Конечно я не знаю в какой программе вы пишите код, но если это MonoDevelop или VisualStudio, то ПКМ по слову, которое подчёркнуто или выделено как-то (там где указывается ошибка в классе) и выберите «рефакторинг» или подсказки будут какие-то.

Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Ошибки компилятора

Сообщение Peccator.es 31 окт 2016, 20:35

samana писал(а):

Peccator.es писал(а):Может надо через using добавить? Но как именно?

Подсмотреть в других скриптах, где прописан using для ImageEffectBase. Но почему вы не пользуетесь рефакторингом? Конечно я не знаю в какой программе вы пишите код, но если это MonoDevelop или VisualStudio, то ПКМ по слову, которое подчёркнуто или выделено как-то (там где указывается ошибка в классе) и выберите «рефакторинг» или подсказки будут какие-то.

Я до кода еще не добрался даже ) расставлял модельки + экспериментировал с камерой на фпс контроллере. Пытался подсмотреть как в других проектах эти скрипты оформлены (где не было проблем с игровым режимом), но они там аналогичны слово в слово…

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение Peccator.es 31 окт 2016, 21:27

Какая-то жесть жесткая, удалил папку Effects, импортнул через Ассеты, вылезло сразу 18 ошибок о несовпадении классов…

Вернул на место папку со старыми эффектами, ошибки пропали и осталась только предыдущая одна. Получается что эффекты сильно отличаются от стандартных, как так если я их не трогал (вот реально совсем ничего не менял в скриптах)

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение Peccator.es 01 ноя 2016, 13:48

Осталось исправить одну ошибку:

Assets/Standard Assets/Effects/ImageEffects/EdgeDetectEffect.cs(8,33): error CS0246: The type or namespace name `ImageEffectBase’ could not be found. Are you missing a using directive or an assembly reference?

В чем здесь проблема может быть?

Peccator.es
UNец
 
Сообщения: 25
Зарегистрирован: 22 окт 2016, 21:50

Re: Ошибки компилятора

Сообщение ewoera 02 ноя 2016, 16:34

сделай копию проекта
удали ВСЕ эффекты вообще
проверь чтоб не было ошибок
проверь какие эффекты тебе нужны действительно
импортирую весь пакет Assets->Import Package->Effects
поставь на нужную камеру нужные эффекты и радуйся

второй вариант если все еще будут ошибки по эффектам
создай новый проект
импортни Assets->Import Package->Effects
если в пустом проекте будут ошибки с нетронутым пакетом эффектов, значит проблема с в исходнике
закачай еще раз нужную версию юнити

ну не кто не может тебе помочь если ты говаришь что не чего не трогал и при этом у тебя все равно ошибки в стандартном пакете эффектов
либо скидывай проект с этими твоими ошибками, либо ковыряйся сам, не должно быть проблем на ровном месте

если что у меня не 14 сообщений на этом форуме, мой основной акк забанили на две недели

__immeasurability

skype elseway
youtube.com/user/immeasurability/videos

ewoera
UNец
 
Сообщения: 32
Зарегистрирован: 27 окт 2016, 13:55


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 22



Понравилась статья? Поделить с друзьями:
  • Как исправить ошибки когда делаешь пропуск на мкад
  • Как исправить ошибки клавиатуры ноутбука
  • Как исправить ошибки кадастра и картографии
  • Как исправить ошибки интернет эксплорер
  • Как исправить ошибки для яндекс маркета