Меню

Что делать если юнити выдает ошибку all compiler errors have to be

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.

Содержание

  1. Unity error all compiler errors
  2. Comments (1)
  3. Compiler errors
  4. 3 Ответов
  5. Troubleshooting
  6. Error messages in the Package Manager window
  7. System-wide issues
  8. Package-specific issues
  9. Package Manager missing or window doesn’t open
  10. Problems after upgrading Unity to new version
  11. Resetting your project’s package configuration
  12. Resetting a clone of your project
  13. Package installation fails
  14. Packages not recognized
  15. Unable to add package from Git URL
  16. No ‘git’ executable was found
  17. git-lfs: command not found
  18. Repository not found
  19. Could not read Username: terminal prompts disabled
  20. Solutions for HTTPS
  21. Solutions for SSH
  22. Setting up OpenSSH for Windows
  23. Adding SSH keys to your SSH Agent for macOS
  24. Can’t update Git version
  25. ‘Failed to parse Http response’ in My Assets context
  26. Missing ‘My Registries’ in the Package Manager window
  27. Missing MonoBehaviour errors

Unity error all compiler errors

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.

Источник

Compiler errors

When I get on unity and try to play the fps prefab it says all compiler errors must be fixed first, but I don’t know what a compiler error is and don’t know how to fix them. I can’t find where the errors are either. Please Help

3 Ответов

Ответ от skovacs1 · 07/12/10 22:51

In the bottom-left corner of Unity, you will see some bright red text-That’s a collapsed version of the console and the red text is the error message. If double click on that or you go to Window/Console (or Ctrl+S$$anonymous$$ft+C in Windows) the full console should be visible. If you cannot find it, you may need to reset your layout first with Window/Layouts.

Compiler errors are generated by a script that has erroneous code. By double clicking on the error message or opening the script directly, you must open the script in a text editor and fix the error described. If you double clicked on the error in the console (maybe twice) it should even take you to the line where the error was generated. Errors w$$anonymous$$ch indicate a script will also indicate the (line, column) of the error. I don’t know what your error is so that is all the help that I can provide for that. Once you have fixed the error, save the script and click on Unity. Unity will compile it and write any errors to the console. Continue to fix errors until there are none.

Ответ от Max koke · 08/02/13 07:37

Wow you must be new but thats fine all those long answers people put might be confusing ok so i want you to look at the bottom of unity you should see red text right ok so you first click on the error or red text it will open the cosole tab click on a error and it will or should $$anonymous$$gh light a object you can click the object an just delete it or read the error and see what it is saiding ok you still have a problem you can email me back at maxkoke24@yahoo.com or you could look on youtube. How to fix complier errors in unity. Ok good luck bud

Ответ от BananaBanshi · 22/02/12 21:59

I downloaded Unity yesterday, so after messing about a bit, I thought I’d run through a couple of tutorials. The Lerpz Console Game seemed like a good place to start, but the game won’t run — right out of the box! It’s probably safe to assume that anyone else who has t$$anonymous$$s problem is also running the tutorial because they want to learn Unity and have no idea what’s going on yet either. Anyway, blind leading blind here, but t$$anonymous$$s is what I tried, and it seemed to help:

1) At the top of the main window, select Window->Console. A new window will open in the middle of your screen.

2) Drag the tab at the top of the inner window until its ghost appears next to the tab on the bottom left that says «Heirarchy» and drop it there. You should have 2 tabs at the bottom left now. Now you can see errors — very helpful!

3) Click the «Console» tab to make it active. You should see that there is an error on line 125 of the script «FadeoutLineOfSight».

4) Click on the script called (Scripts->Camera) «FadeoutLineOfSight» in the «Project» tab in the window to the right of the one with the «Heirarchy» and «Console» tabs.

5) The script will open in the «Inspector» tab on the top right of your screen. As far as I can tell you can’t edit the script there, so click the «Open» button at the top right of the «Inspector» tab. T$$anonymous$$s will open the script in a new program called «MonoDevelop — Unity».

6) I have no experience with t$$anonymous$$s language, but it looks like the variable «newMaterial» — w$$anonymous$$ch already exists — is being redeclared here. I’m just guessing, but the script seems to want to modify the original variable, so it should be safe to delete the declaration «var». I could be wrong, but at least the game will compile now, and if we broke the script we can fix it later — once we know what we’re doing!

Original line: for (var newMaterial in fade.alphaMaterials) New line: for (newMaterial in fade.alphaMaterials)

7) Save the script. The error will magically disappear in the Unity IDE, and the game should compile. GL!

Источник

Troubleshooting

This section provides information on the following issues:

Type of error: Error message:
General startup issues — Error messages in the Package Manager window
— Package Manager missing or window doesn’t open
— Problems after upgrading Unity to new version
— Resetting your project’s package configuration
Package installation issues — Package installation fails
— Packages not recognized
— Unable to add package from Git URL
Problems installing git dependencies — No ‘git’ executable was found
— git-lfs: command not found
— Repository not found
— Could not read Username: terminal prompts disabled
— Can’t update Git version
Asset Store A growing library of free and commercial assets created by Unity and members of the community. Offers a wide variety of assets, from textures, models and animations to whole project examples, tutorials and Editor extensions. More info
See in Glossary packages (My Assets)
— ‘Failed to parse Http response’ in My Assets context
Scoped registries — Missing ‘My Registries’ in the Package Manager window
Issues when building packages — Missing MonoBehaviour errors
— Loading error for hostfxr.dll on Windows

You can also run the Unity Package Manager Diagnostics tool if you are experiencing problems that might be network-related. For more information, see Diagnose network issues.

Error messages in the Package Manager window

The Package Manager displays error indicators in the Package Manager window when it encounters problems.

System-wide issues

Network connection issues

Error messages appear in the status bar when the Package Manager has detected an issue that isn’t related to a specific package. For example, if the Package Manager can’t access the package registry server, it displays this message in the status bar:

Network error message

Error refreshing assets (or Error refreshing packages)

If your network can’t reach the package registry server, it’s probably because there is a connection problem with the network. When you or your system administrator diagnose and fix the network error, the status bar clears.

If your network connection is working, but you aren’t signed into your Unity account, the Package Manager doesn’t display any Asset Store packages. When you try to use the My Assets context, the Package Manager displays an error in the status bar:

Logged out of Unity account

Click the Sign in button inside the list view to sign into your Unity account through the Unity Hub.

Package-specific issues

If a specific package has a problem when loading or installing (for example, when determining which package versions to load), the error icon ( ) appears in the package list next to the compromised package (A). To find out what the problem is, open the compromised package’s details view to see the detailed error message (B):

Dependency error message

Package Manager missing or window doesn’t open

The Package Manager window might get moved offscreen or hidden by another window. When this happens, it looks like the Package Manager window failed to open. In this case, you can try to reset the window layout (Window > Layouts > Default) and reopen the Package Manager window again.

If the Package Manager window still doesn’t appear, check your Unity Console window A Unity Editor window that shows errors, warnings and other messages generated by Unity, or your own scripts. More info
See in Glossary :

This error message indicates that your manifest.json file is malformed. It also tells you the line number where the Package Manager failed to parse the file, so you can fix the JSON. There are a number of online validators that you can use to try to correct the problem. Once you save the corrected file, Unity reloads the Package Manager window.

If you upgraded from an early version of the Unity Editor, there may be other problems with your package manifest Each package has a manifest, which provides information about the package to the Package Manager. The manifest contains information such as the name of the package, its version, a description for users, dependencies on other packages (if any), and other details. More info
See in Glossary file:

As of 2019.3, your manifest.json file should not contain any references to the com.unity.package-manager-ui package. You can either reset your project’s package configuration or remove the following line from the manifest’s dependencies list:

Check to see if your project manifest Each Unity project has a project manifest, which acts as an entry point for the Package Manager. This file must be available in the

/Packages directory. The Package Manager uses it to configure many things, including a list of dependencies for that project, as well as any package repository to query for packages. More info
See in Glossary uses “exclude” as a package version. This is an obsolete value for the dependencies property. If you find any lines like these, remove the entire line. Package Manager only installs packages that are explicitly included as a dependency in your project, so once you remove that entry, Package Manager ignores the package and doesn’t install it.

If the Package Manager still fails to load, follow the procedures under Packages not recognized and Resetting your project’s package configuration.

Problems after upgrading Unity to new version

When you upgrade a project to a newer Unity version, the Package Manager automatically updates incompatible packages to newer compatible versions. However, if your package doesn’t compile, the Package Manager displays error messages in the Console.

To correct these messages, read the error messages and fix any problems you can. For example, a package might be missing a dependency on another package or version. In that case, you can try and install the package yourself.

You can also try the following sequence of solutions until you find something that works:

  • Back up and then delete the Packages folder under your project.
  • Back up and then delete the package sources in your project’s Packages folder, leaving only the manifest.json file. Then try to reload the project.
  • Create a new empty project. If the Package Manager window loads successfully, replace the Library/PackageCache/com.unity.package-manager-ui@ folder in the failing project with the same folder from the newly created project.
  • As a last resort, you can reset your project to the default package Unity automatically pre-installs a select number of default packages (for example, the Analytics Library, Unity Timeline, etc.) when you create a new project. This differs from a bundled package because you don’t need to install it and it differs from a built-in package because it extends Unity’s features rather than being able to enable or disable them.
    See in Glossary configuration and add back packages one at a time until it works.

Resetting your project’s package configuration

If a project has too many package issues, you can reset your project back to the default package configuration for the Editor’s version of Unity. This operation resets all packages in your project. This might not fix the source of the problem, but it can help you figure out what the problem is.

Note: You can’t undo resetting your package configuration, so make sure you back up the manifest.json file first or make sure your project is under source control. You can also take extra precautions by cloning your project and testing out the operation on the clone before proceeding.

To return to the default package configuration, select Reset Packages to defaults from the Help menu.

Reset Packages to defaults»> Help > Reset Packages to defaults

Resetting a clone of your project

You can also test the return to the default packages before you perform the final change:

Clone your project by copy-pasting your project folder and renaming it so that it is easy to find (for example, if your project is called MyProject then you could use something like clone_MyProject ).

Load your newly cloned project.

From the Help menu, select Reset Packages to defaults.

Depending on the size of your project, this might take a few minutes.

Check that it successfully reset the packages. If so, you can perform the operation safely on the original project.

Package installation fails

If you are trying to install a new package from the registry and it is not working, it might be due to permission problems.

You must have full permissions on the cache folder:

  • Windows: C:UsersyournameAppDataLocalUnitycache
  • macOS:

It might be a problem with the network. Check your firewall and proxy settings.

Sometimes institutional environments, such as schools, government offices, or network-protected workplaces set up proxy servers to control traffic between the network and the Internet, and use their own server certificates which are not recognized by Unity or the Package Manager. Talk to your network administrator.

Packages not recognized

If you see a lot of compilation errors, this might indicate that Unity is not recognizing the packages in your existing project. In this case, you might be missing a .NET component.

  1. Download and install Visual Studio 2017 version 15.9.0 or higher with the .NET Core cross-platform development workload selected under Other Toolsets.
  2. Download and install the .NET SDK v2.2.101 component.

Download and install the .NET SDK v2.2.101 component.

Install any recommended updates in Visual Studio

Use homebrew to brew and install mono:

If necessary, delete the Library/obj/temp folder under your project and restart Unity.

If you are still experiencing difficulties, try rebooting your computer as well.

Unable to add package from Git URL

No ‘git’ executable was found

If you try to install a package from a git URL, a message similar to this appears:

git-lfs: command not found

If you are trying to download a package that uses Git LFS (Large File Storage), you might see this error message:

This indicates that Git LFS is probably not installed on your machine. To make sure, you could test it on the command line:

If you see something like this, Git LFS is installed:

Otherwise, you can install it by following the Bitbucket GitHub instructions.

Repository not found

If you specify a location that does not exist, a message similar to this one appears in the Unity Console:

Check your spelling. To make sure you are using the correct URL, go to the repository’s page and copy the URL from the Clone button:

Where to copy the URL on GitHub (A) and GitLab (B)

Click the button to the right of the URL on GitHub (A) or GitLab (B) to copy the URL to your clipboard.

If the location of the repository is correct, there may be another problem with the URL:

  • If you are targeting a specific revision, make sure your revision comes last. For example:
    https://github.example.com/myuser/myrepository1.git#revision
  • If you are targeting a revision and the package is not at the root, make sure the path query parameter precedes the revision anchor. For example:
    https://github.example.com/myuser/myrepository.git?path=/example/folder#v1.2.3

Could not read Username: terminal prompts disabled

If you are trying to install a package from a private repository that requires authentication, a message similar to this one appears in the Unity Console:

This message is likely due to the fact that Package Manager does not provide an interactive terminal or dialog where you can enter your username and password for HTTP, or your passphrase to unlock your SSH key:

With HTTP(S), every time you log onto BitBucket, GitHub or GitLab you need to enter your username and password in a terminal or a dialog box. However, the Package Manager does not provide an interactive terminal or dialog where you can enter your username and password for HTTP(S).

To bypass this, use one of the workarounds suggested in Solutions for HTTPS.

SSH uses a pair of public and private SSH keys. You can add your public SSH key to Bitbucket, GitHub or GitLab and then access repositories without having to enter a username and password.

However, if you have set up a passphrase to keep your SSH key safe, you still have to enter that passphrase in a terminal or a dialog box in order to authorize your key. In that case, you can use an SSH agent that can unlock your SSH key to authenticate with the Package Manager on your behalf.

Solutions for HTTPS

The Package Manager does not provide an interactive terminal or dialog where you can enter your HTTP(S) username and password. To bypass this, use one of these workarounds:

  • Use a credential manager (Git Credential Manager for Windows or OSXKeyChain). Credential managers handle sending the password without having to use a terminal or a command prompt.
  • Use git-credentials from a terminal or command prompt. Then launch the Hub from the same terminal so that Unity has access to the cached or stored credentials.
  • Use SSH to authenticate instead. If you set up your SSH key without a passphrase, the Package Manager doesn’t have to decrypt it in order to authenticate with the Git server. If you decide to use a passphrase for added security, you can still get around the authentication problem by using the ssh-agent on either macOS or Windows.

Solutions for SSH

If you are using the SSH protocol to install a package by Git URL, you might get an authentication error from Git. This typically happens when you set up a private SSH key on your local machine that is protected by a passphrase.

The solution to this problem is to set up an SSH agent that can unlock your SSH key to authenticate with the Package Manager on your behalf. Follow the instructions in the section that corresponds to your operating system:

Setting up OpenSSH for Windows

The native Windows OpenSSH version of the ssh-agent works better than the version available by default with Git for Windows. This procedure explains how to set up the OpenSSH client and add your key to its ssh-agent. If you are using Git for Windows, you can also prioritize the native Windows OpenSSH over the Git for Windows SSH agent:

Make sure the OpenSSH Client is installed by searching for it in the Windows Settings Optional features window (Start > Settings, then search for “Optional features”). This applies to Windows 10+.

Check your %PATH% environment variable to make sure the native Windows OpenSSH location appears (for example, C:WINDOWSSystem32OpenSSH ).

Note: If you are already using Git for Windows, make sure the native Windows OpenSSH location appears before the Git for Windows SSH location in your %PATH% variable. This ensures that Windows uses the native Windows OpenSSH agent over the Git for Windows SSH agent.

In a PowerShell terminal, start the ssh-agent process and make sure it starts automatically:

Import your key into the ssh-agent by running ssh-add on the command line and then following the instructions. By default, the agent adds the %USERPROFILE%.sshid_rsa key and prompts you for the password.

To use a different key, you can specify it as an argument:

If you can’t remember the name of your key, you can ask the agent to list them:

If you installed Git for Windows, reset the %GIT-SSH% environment variable to make sure that Git always uses the native Windows OpenSSH version of the ssh-agent:

Adding SSH keys to your SSH Agent for macOS

Use the ssh-add command to add your SSH keys to the ssh-agent running on your macOS system. The command parameter you use depends on your version of macOS:

Prior to macOS 12, use:

Starting with macOS 12, use:

After you run this command, the terminal asks for the password to unlock your SSH key and then adds it to the macOS keychain. However, once you restart your system, every key stored in the ssh-agent is reset.

To prevent re-entering your password after restarting your system, open the

/.ssh/config file (or create one if you don’t find it), and add the following:

Restart your machine to apply these changes.

Can’t update Git version

If you are trying to update your Git dependency The Package Manager retrieves Git dependencies from a Git repository directly rather than from a package registry. Git dependencies use a Git URL reference instead of a version, and there’s no guarantee about the package quality, stability, validity, or even whether the version stated in its package.json file respects Semantic Versioning rules with regards to officially published releases of this package. More info
See in Glossary to a newer version from the repository, but it’s not working, it’s probably because your Git dependency is locked. If you want to update your Git dependency to a newer version from the repository, use the Add package from git URL button and enter a Git URL. For more information, see Locked Git dependencies.

‘Failed to parse Http response’ in My Assets context

If you see the following message in the Console window when trying to download an Asset Store package, there might be a problem with your Asset Store cache:

[PackageManager] Error Failed to parse response. UnityEditor.AsyncHTTPClient![:D](https://forum.unity.com/styles/default/xenforo/clear.png)one(State, Int32)

To solve this problem, delete all downloaded assets from the Asset Store package directory and then try downloading the assets again.

Warning: If your project contains a lot of asset data, this might take a lot of time and bandwidth to re-download everything.

Missing ‘My Registries’ in the Package Manager window

Not all registry providers are compatible with Unity’s Package Manager. If the package registry server you added does not implement the /-/v1/search or /-/all endpoints, your scoped registry is not compatible with Unity’s Package Manager, and doesn’t appear in the My Registries context in the Package Manager window.

Missing MonoBehaviour errors

While building, if there are a lot of errors about Missing Behavior, the UnityLinker might be mistakenly stripping out a component that it thinks is unreferenced. It often does this because the stripping level is too aggressive. For example, if you have a prefab An asset type that allows you to store a GameObject complete with components and properties. The prefab acts as a template from which you can create new object instances in the scene. More info
See in Glossary in an AssetBundle that references the SpriteShape component in the 2D SpriteShape package, the object might be missing and might generate compiler warnings.

To fix this, you can either lower the stripping level for the UnityLinker or declare the package’s assemblies inside the link.xml file in order to preserve them from being stripped:

For more information on stripping levels and the UnityLinker, see Managed code stripping.

Источник

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

Aaleks

0 / 0 / 0

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

Сообщений: 11

1

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

07.10.2020, 21:09. Показов 5619. Ответов 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



591 / 434 / 195

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

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

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



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

  • Почему именно 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().

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Что делать если эмулятор выдает ошибку
  • Что делать если электронный дневник выдает ошибку