Unity ошибка не удается найти

что делать, если при загрузке unity пишет ошибку, что не может найти файл unityhub из какой-то неизвестной папки нигде нету ответа на этот вопрос кто знает помогите 606afdf59a2f1479951271.png


  • Вопрос задан

    более двух лет назад

  • 849 просмотров

I am setting up a new scriptable object in Unity 5 and when I am trying to set up a reference to it an error shows up :’The type or namespace name ‘ES’ could not be found (are you missing a using directive or an assembly reference?’

the scriptable object script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "new ES", menuName = "ES")]

public class LAMP: ScriptableObject {
    public int groupNum;

    void Start() {

        groupNum = 1;

    }

}

the reference in monobehavior script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bout: MonoBehaviour {

    public ES et;

    // Use this for initialization
    void Start() {

    }

    // Update is called once per frame
    void Update() {

    }
}

Lance U. Matthews's user avatar

asked Dec 24, 2018 at 15:43

Mwiak 's user avatar

It is a name space error ,if you are using a collision variable you face this error.

Using My.Players.namespace;

answered Oct 23, 2021 at 17:22

AKASH PATIL's user avatar

1

Just had this error and this is the top SO post about it, so I’ll post my fix here:

We introduced unit tests, which require the .asmdef for each «group» of related scripts. In this particular instance for us, the original developer had the .asmdef file for scripts that were contained in an AutoGenerated folder (ROS messages) that was set to be ignored by Git.

He pushed the code, Git ignored the .asmdef file for the AutoGenerated files, and then because we were using .asmdef files and that folder wasn’t included on MY box, my Unity «couldn’t find» the files there.

This could be your problem, too, but 99 times out of 100 you get this error because you’ve misspelled the class name — capitalization matters! In OP’s case specifically the actual class is LAMP even though it’s called ES in the AssetMenu. Instead of public ES et; OP should have had public LAMP et; and then it would work.

answered Nov 10, 2021 at 19:57

Chuck's user avatar

ChuckChuck

1,9111 gold badge16 silver badges23 bronze badges

In your file Bout.cs you are trying to create the variable ‘et’ of type ES but the type ES doesn’t exist, you may want to create a LAMP?

public class Bout: MonoBehaviour {
public LAMP et;

// Use this for initialization
void Start() {

Creating a scriptable object file named ES (fileName = «new ES») doesn’t mean it’s type is ES, it takes the type of the class i.e LAMP

answered May 28, 2022 at 19:03

Yanis b.'s user avatar

I have encountered the same error while trying to add script component to the gameobject on runtime. Fixed it by following this format:

GameObject.AddComponent(typeof(namespace.className));

RBT's user avatar

RBT

23.8k21 gold badges158 silver badges240 bronze badges

answered Jun 1, 2022 at 3:53

Issatay Sissemali's user avatar

The meaning of The type or namespace name 'xxxx' could not be found is because you are trying to use a class that do not exist or you are not using the namespace where that class is.

The problem that you have is that you are trying to use something that do not exists.

You are trying to create a scriptable object named ES, but it’s totally different to create a class named ES.

If you create the class ES you will see that the error goes away.

answered Dec 24, 2018 at 15:47

Martin Gonzalez's user avatar

Unity Discussions

Loading

#c# #unity3d #scripting

#c# #unity3d #сценарии

Вопрос:

Я следую этому руководству на YouTube: https://youtu.be/HhFoFWjR2WA

И я написал код как есть, и когда я сохранил и перешел в Unity, он сказал эту ошибку: не удалось найти тип или имя пространства имен ‘RaycastHit’ (вам не хватает директивы using или ссылки на сборку?)

Вот копия кода…..

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class PlayerCasting : MonoBehaviour {

    public static float DistanceFromTarget;
    public float ToTarget;


    void Update () {
        RaycastHit Hit;
        if (Physics.Raycast (transform.position, transform.TransformDirection (Vector3.forward), out Hit)) {
            ToTarget = Hit.distance;
            DistanceFromTarget = ToTarget;
        }
    }
}
 

Пожалуйста, помогите!!!

Комментарии:

1. проверьте версию Unity?

2. вы опечатали сообщение об ошибке? поскольку в ошибке указано ‘RaycastHit’, а не ‘RaycastHit’

3. @viveknuna Моя версия Unity — 2018.4.26 и 64-битная

Ответ №1:

Похоже, вы неправильно написали RaycastHit в своем коде, если untiy настроен правильно, вы можете просто дважды щелкнуть сообщение об ошибке, и оно должно открыть код, в котором Unity обнаружила синтаксическую ошибку. В противном случае в сообщении об ошибке также должно быть указано сценарий и строка, в которой произошла ошибка

Комментарии:

1. Спасибо вам за вашу помощь, но я не знаю, почему, когда я перезапустил Unity, мой скрипт работает нормально. Я думаю, это была просто ошибка или что-то в этом роде…

[Unity3d] Как исправить: невозможно добавить компонент скрипта, потому что не удается найти класс скрипта

Вчера обновил unity с unity5 до 2018.2.2f1. Скрипты Unity не загружаются после обновления 2018.2.2f1.

Как только я пытаюсь воспроизвести сцену, сценарии не загружаются, и я не могу добавить сценарий снова, он дает следующую ошибку:

Невозможно добавить компонент скрипта CubeScript, потому что класс скрипта не найден. Убедитесь, что нет ошибок компиляции и что имя файла и имя класса совпадают.

  • 2 unity5 до 2018.2.2f1 — большой скачок. Лучше было бы выполнить unity5 до 2017, а не 2018.2.2f1, чтобы уменьшить вероятность возникновения проблем в обновленном проекте. Где находится «CubeScript» в вашем проекте?
  • @Programmer Это у меня в активах в папке _scripts и я открыл его из ассетов, и скрипт открывается как обычно в monodevelop.
  • Есть флудер Packages следующий на Assets я должен что-то с этим делать? @Программист
  • Это совершенно не профессионально, я хочу другое решение
  • Мой проект настолько велик, что я не могу зайти в каждую папку и сделать это вручную, есть ли что-нибудь лучше, чем это

Если у вас все еще есть старая копия проекта, обновите проект Unity до Единство 2017 сначала потом 2018.2.2f1.

Вот несколько возможных причин, по которым вы можете получить эту ошибку (очень вероятно, заказано)

1Имя .Script не соответствует имени класса.

Если имя скрипта называется MyClass, имя класса должно быть MyClass. Это также чувствительно к регистру. Дважды проверьте, чтобы убедиться, что проблема не в этом. Чтобы убедиться, что проблема не в этом, скопируйте имя класса и вставьте его в качестве имени сценария, чтобы убедиться, что проблема не в этом.

Обратите внимание: если у вас есть несколько классов в одном скрипте, имя класса, которое должно совпадать с именем скрипта, — это класс, производный от MonoBehaviour.


2.В вашем скрипте есть ошибка. Поскольку это обновление, есть вероятность, что вы используете API, который устарел и удален. Откройте свой скрипт в Visual Studio и посмотрите, есть ли там ошибка, а затем исправьте ее. Обычно под кодом есть красная линия, указывающая на ошибку.


3.Плохой импорт с импортером Unity и его скриптом автоматического обновления.

Что стоит попробовать:

А. Первое, что нужно сделать, это перезапустить редактор Unity.

B.Щелкните правой кнопкой мыши вкладку Project, затем щелкните «Импортировать все заново»

C.Если проблема не исчезла, остается только удалить проблемный сценарий и создать новый. Есть более простой способ сделать это, если скрипт прикреплен ко многим GameObject в вашей сцене.

А. Откройте скрипт, скопируйте его содержимое в блокнот.

B.Из редактора и на Проект на вкладке правой кнопкой мыши щелкните скрипт «CubeScript», выберите «Найти ссылки в сцене».

C.Unity теперь будет показывать только все GameObject, к которым прикреплен этот скрипт. Удалите старый скрипт. Создайте новый, затем скопируйте содержимое из блокнота в этот новый скрипт. Теперь вы можете просто перетащить новый скрипт на все отфильтрованные GameObject в сцене. Сделайте это для каждого задействованного сценария. Это ручная работа, но по завершении она должна решить ваши проблемы.

  • Я ценю ваш ответ, но общедоступные типы данных, используемые в FPSController все пропало, и другие сценарии также сбросили данные, которые я ввел в окне инспектора редактора единства.
  • 1 Если №3 — ваше последнее средство, вам придется сделать это вручную. Если у вас нет старого проекта, вы действительно ничего не можете сделать, кроме как воссоздать и переназначить их самостоятельно. Я знаю, что это отстой, но я всегда говорю людям выполнять инициализацию переменных через скрипт, и вот почему. Иногда сцена может сходить с ума из-за обновления или сбоя.Если инициализация, такая как переменные и присоединение скрипта, выполняется через скрипт, все, что вам нужно сделать, это перетащить скрипт в другую папку, а затем перетащить его обратно.
  • 1 Бывает. Для этого вам даже не нужно обновлять Unity. Думаю, вам следует последовать моему совету и начать прикреплять скрипты из скриптов. Это сэкономит вам время, и вы не столкнетесь с той же проблемой в будущем. Всегда делайте копию проекта перед его обновлением. Это обязательно.
  • 2 @ В замешательстве Да. Вместо того, чтобы перетаскивать скрипт на GameObject, что проще. вы должны создать сценарий с именем ComponentInit который прикреплен к пустому проекту. Этот скрипт вы должны использовать для поиска GameObjects, а затем прикрепить к ним необходимые скрипты. Это верно, особенно когда у вас большой проект. Например, GameObject shipObj = GameObject.Find('Ship').AddComponent();.
  • 1 О, спасибо, это важно, я впервые вижу .AddComponent Это было бы очень удобно.

Публикация здесь в исторических целях, и если кто-то из Google окажется здесь, у меня была точно такая же проблема (я на Windows 10), и вот как я ее исправил:

  • Если вы нажмете на Консоль, вы должны увидеть пустую ошибку. Не волнуйтесь, это ошибка редактора, и вы можете увидеть журнал редактора, выбрав раскрывающееся окно консоли и выбрав Открыть журнал редактора.

Для меня проблема заключалась в том, что не удалось найти «Tools Roslyn csc», что Unity использует для компиляции файлов C #.

  • я открыл C:Program FilesUnityHubEditor2019.2.14f1EditorDataToolsRoslynScriptsunity_csc.bat и я добавил «.exe» в строку '%APPLICATION_CONTENTS%ToolsRoslyncsc' /shared %*

(Теперь эта строка должна быть: '%APPLICATION_CONTENTS%ToolsRoslyncsc.exe' /shared %*)

Теперь работает отлично.

  • Это опасно?
  • Этого не должно быть, он только перенаправляет Unity на правильный исполняемый файл для использования, не о чем беспокоиться.

Еще одна вещь, которая может помочь помимо других ответов

  • Сделайте класс, который наследует от MonoBehaviour, первым классом в файле. Это устранило эту проблему для меня.

Проверка ошибок консоли и их исправление — хороший способ решить проблемы «Не удается добавить компонент сценария, потому что класс сценария не найден?», Хотя ошибка кажется несущественной. У меня это работает, когда я исправляю ошибку в другом скрипте.

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

Tweet

Share

Link

Plus

Send

Send

Pin

  • Unity ошибка object reference not set to an instance of an object
  • Unity ошибка all compiler errors have to be fixed before you can enter playmode
  • Unity visual studio code не показывает ошибки
  • Unity standard assets ошибка
  • Unico live не запускается системная ошибка