Четверг, 28 Марта 2024, 19:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Ошибка при компилировании
Ошибка при компилировании
mrВладосДата: Понедельник, 02 Марта 2015, 01:00 | Сообщение # 1
был не раз
Сейчас нет на сайте
При компилировании выдает такую ошибку Assets/UnityCarScripts/UnityCar.cs(2,7): error CS0246: The type or namespace name `UnityEditor' could not be found. Are you missing a using directive or an assembly reference?

Сам код

Код

using UnityEngine;
using UnityEditor;

[ExecuteInEditMode()]
//[AddComponentMenu("Physics/UnityCar")]
public static class UnityCar {
   static Drivetrain drivetrain;
   static AxisCarController axisCarController;
   static CarDynamics carDynamics;
   static SoundController soundController;
   static Rigidbody mrigidbody;
   static Axles axles;
   static Wheel wheel;
   static GameObject wheelFL;
   static GameObject wheelFR;
   static GameObject wheelRL;
   static GameObject wheelRR;
   static GameObject model;   
   static BoxCollider boxColliderDown;
   static BoxCollider boxColliderUp;
   static GameObject bodyDown;
   static GameObject bodyUp;
   static GameObject mcollider;
   static GameObject dashBoard;
   static GameObject centerOfMassObject;
     
   [MenuItem("GameObject/Create Other/UnityCar")]
   public static GameObject CreateNewCar(){
      
    GameObject unityCarObj=new GameObject("UnityCar");
          
    if (unityCarObj.rigidbody==null){
     mrigidbody=unityCarObj.AddComponent<Rigidbody>() as Rigidbody;
     mrigidbody.mass=1000;
     mrigidbody.angularDrag=0;
     mrigidbody.interpolation=RigidbodyInterpolation.Interpolate;
    }
    else
     mrigidbody=unityCarObj.GetComponent<Rigidbody>();

    if (unityCarObj.GetComponent<CarDynamics>()==null)
     carDynamics=unityCarObj.AddComponent<CarDynamics>() as CarDynamics;
    else
     carDynamics=unityCarObj.GetComponent<CarDynamics>();
       
    centerOfMassObject=new GameObject("COG");
    centerOfMassObject.transform.parent=unityCarObj.transform;
    centerOfMassObject.transform.localPosition=Vector3.zero;
    centerOfMassObject.transform.localRotation=Quaternion.identity;
      
    carDynamics.centerOfMass=centerOfMassObject.transform;     
        
    if (unityCarObj.GetComponent<Drivetrain>()==null)
     drivetrain =unityCarObj.AddComponent<Drivetrain>() as Drivetrain;
    else
     drivetrain=unityCarObj.GetComponent<Drivetrain>();
       
      
    if (unityCarObj.GetComponent<AxisCarController>()==null)
     axisCarController=unityCarObj.AddComponent<AxisCarController>() as AxisCarController;
    else
     axisCarController=unityCarObj.GetComponent<AxisCarController>();
       
/*   
    if (unityCarObj.GetComponent<SoundController>()==null)
     soundController=unityCarObj.AddComponent<SoundController>() as SoundController;
    else
     soundController=unityCarObj.GetComponent<SoundController>();
       
    soundController.enabled=false; */

    if (unityCarObj.GetComponent<Axles>()==null)
     axles =unityCarObj.AddComponent<Axles>() as Axles;
    else
     axles =unityCarObj.GetComponent<Axles>();
       
    // to avoid car assigned to default layer
    unityCarObj.layer=1;   

    if (unityCarObj.transform.Find("Body")==null){
     bodyDown = GameObject.CreatePrimitive(PrimitiveType.Cube);
     bodyDown.name="Body";
     Object.DestroyImmediate(bodyDown.collider);
     bodyDown.transform.parent=unityCarObj.transform;
     bodyDown.transform.localPosition=Vector3.zero;
     bodyDown.transform.localRotation=Quaternion.identity;
     bodyDown.transform.localScale=new Vector3(1.5f,0.5f,4);
       
     bodyUp = GameObject.CreatePrimitive(PrimitiveType.Cube);
     bodyUp.name="Body";
     Object.DestroyImmediate(bodyUp.collider);
     bodyUp.transform.parent=unityCarObj.transform;
     bodyUp.transform.localRotation=Quaternion.identity;
     bodyUp.transform.localScale=new Vector3(bodyDown.transform.localScale.x,bodyDown.transform.localScale.y*0.666f,bodyDown.transform.localScale.z/2);
     bodyUp.transform.localPosition=new Vector3(0,bodyDown.transform.localScale.y - (bodyDown.transform.localScale.y-bodyUp.transform.localScale.y)/2,0);
    }
    else{
     bodyDown=unityCarObj.transform.Find("Body").gameObject;
    }
      
    if (unityCarObj.transform.Find("Collider")==null){
     mcollider= new GameObject("ColliderDown");
     mcollider.transform.parent=unityCarObj.transform;
     mcollider.transform.localPosition=Vector3.zero;
     mcollider.transform.localRotation=Quaternion.identity;
     boxColliderDown = mcollider.gameObject.AddComponent<BoxCollider>() as BoxCollider;
     boxColliderDown.transform.localScale=new Vector3(1.5f,0.5f,4);

     mcollider= new GameObject("ColliderUp");
     mcollider.transform.parent=unityCarObj.transform;
     mcollider.transform.localRotation=Quaternion.identity;    
     boxColliderUp = mcollider.gameObject.AddComponent<BoxCollider>() as BoxCollider;
     boxColliderUp.transform.localScale=new Vector3(boxColliderDown.transform.localScale.x,boxColliderDown.transform.localScale.y*0.666f,boxColliderDown.transform.localScale.z/2);
     boxColliderUp.transform.localPosition=new Vector3(0,boxColliderDown.transform.localScale.y-(boxColliderDown.transform.localScale.y-boxColliderUp.transform.localScale.y)/2,0);     
    }
    else{
     mcollider=unityCarObj.transform.Find("Collider").gameObject;
     boxColliderDown = mcollider.gameObject.GetComponent<BoxCollider>();
    }
      
     if (unityCarObj.transform.Find("wheelFL")==null){
     wheelFL = new GameObject("wheelFL");
     wheelFL.transform.parent=unityCarObj.transform;
     wheel = wheelFL.gameObject.AddComponent<Wheel>() as Wheel;
     wheelFL.transform.localPosition=new Vector3(-boxColliderDown.transform.localScale.x/2+wheel.width/2, -0.1f, boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8);
     wheelFL.transform.localRotation=Quaternion.identity;
     
     wheel.showForces=false;
     wheel.wheelPos=WheelPos.FRONT_LEFT;
     axles.frontAxle.leftWheel=wheel;

     model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
     model.name="modelFL";
     Object.DestroyImmediate(model.collider);     
     model.transform.parent=wheelFL.transform;
     model.transform.localPosition=Vector3.zero;
     model.transform.localRotation=Quaternion.identity;
     model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
     wheel.model=model;
    }
    else{
     wheelFL=unityCarObj.transform.Find("wheelFL").gameObject;
    }
      
    if (LayerMask.NameToLayer("Wheel")!=-1) wheelFL.gameObject.layer=LayerMask.NameToLayer("Wheel");
      
     if (unityCarObj.transform.Find("wheelFR")==null){
     wheelFR = new GameObject("wheelFR");
     wheelFR.transform.parent=unityCarObj.transform;
     wheel = wheelFR.gameObject.AddComponent<Wheel>() as Wheel;
     wheelFR.transform.localPosition=new Vector3(boxColliderDown.transform.localScale.x/2-wheel.width/2, -0.1f, boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8);
     wheelFR.transform.localRotation=Quaternion.identity;    
       
     wheel.showForces=false;
     wheel.wheelPos=WheelPos.FRONT_RIGHT;
     axles.frontAxle.rightWheel=wheel;

     model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
     model.name="modelFR";
     Object.DestroyImmediate(model.collider);     
     model.transform.parent=wheelFR.transform;
     model.transform.localPosition=Vector3.zero;
     model.transform.localRotation=Quaternion.identity;
     model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
     wheel.model=model;
    }
    else{
     wheelFR=unityCarObj.transform.Find("wheelFR").gameObject;
    }
    if (LayerMask.NameToLayer("Wheel")!=-1) wheelFR.gameObject.layer=LayerMask.NameToLayer("Wheel");
      
     if (unityCarObj.transform.Find("wheelRL")==null){
     wheelRL = new GameObject("wheelRL");
     wheelRL.transform.parent=unityCarObj.transform;
     wheel = wheelRL.gameObject.AddComponent<Wheel>() as Wheel;
     wheelRL.transform.localPosition=new Vector3(-boxColliderDown.transform.localScale.x/2+wheel.width/2, -0.1f, -(boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8));
     wheelRL.transform.localRotation=Quaternion.identity;    
       
     wheel.showForces=false;
     wheel.wheelPos=WheelPos.REAR_LEFT;
     axles.rearAxle.leftWheel=wheel;
       
     model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
     model.name="modelRL";
     Object.DestroyImmediate(model.collider);     
     model.transform.parent=wheelRL.transform;
     model.transform.localPosition=Vector3.zero;
     model.transform.localRotation=Quaternion.identity;
     model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
     wheel.model=model;
    }
    else{
     wheelRL=unityCarObj.transform.Find("wheelRL").gameObject;
    }    
    if (LayerMask.NameToLayer("Wheel")!=-1) wheelRL.gameObject.layer=LayerMask.NameToLayer("Wheel");
      
     if (unityCarObj.transform.Find("wheelRR")==null){
     wheelRR = new GameObject("wheelRR");
     wheelRR.transform.parent=unityCarObj.transform;
     wheel = wheelRR.gameObject.AddComponent<Wheel>() as Wheel;
     wheelRR.transform.localPosition=new Vector3(boxColliderDown.transform.localScale.x/2-wheel.width/2, -0.1f, -(boxColliderDown.transform.localScale.z/2 - boxColliderDown.transform.localScale.z/8));
     wheelRR.transform.localRotation=Quaternion.identity;    
       
     wheel.showForces=false;
     wheel.wheelPos=WheelPos.REAR_RIGHT;
     axles.rearAxle.rightWheel=wheel;
       
     model = GameObject.CreatePrimitive(PrimitiveType.Sphere);
     model.name="modelRR";
     Object.DestroyImmediate(model.collider);     
     model.transform.parent=wheelRR.transform;
     model.transform.localPosition=Vector3.zero;
     model.transform.localRotation=Quaternion.identity;
     model.transform.localScale=new Vector3(wheel.width,wheel.radius*2,wheel.radius*2);
     wheel.model=model;
    }
    else{
     wheelRR=unityCarObj.transform.Find("wheelRR").gameObject;
    }    
    if (LayerMask.NameToLayer("Wheel")!=-1) wheelRR.gameObject.layer=LayerMask.NameToLayer("Wheel");
        
    axles.frontAxle.maxSteeringAngle=33;
    axles.frontAxle.handbrakeFrictionTorque=0;
    axles.rearAxle.maxSteeringAngle=0;
    axles.rearAxle.handbrakeFrictionTorque=1000;
    axles.frontAxle.tires=CarDynamics.Tires.competition_front;
    axles.rearAxle.tires=CarDynamics.Tires.competition_rear;

    axles.SetWheels();
       
/*    dashBoard = (GameObject)Instantiate(Resources.Load("Samples/Prefabs/Cars/DashBoard"));
    if (dashBoard ){
     dashBoard.transform.parent=unityCarObj.transform;
     dashBoard.transform.localPosition=Vector3.zero;
     dashBoard.transform.localRotation=Quaternion.identity;      
    } */

    // These are to avoid warning about "assigned but never used"
    drivetrain.enabled=true;
    axisCarController.enabled=true;
          
    return unityCarObj;
   }
}


Сообщение отредактировал mrВладос - Понедельник, 02 Марта 2015, 01:03
MANMANAДата: Понедельник, 02 Марта 2015, 01:39 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Положи этот скрипт в папочку Editor
ведь он у тебя содержит "using UnityEditor;"

если же ты под компилированием имеешь ввиду сборку проекта под PC, Ведроида и т.д., то забудь про использование "using UnityEditor;".
UnityEditor только для использования в Редакторе Unity.


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
robertonoДата: Понедельник, 02 Марта 2015, 18:14 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
MANMANA, ой, а я по другому всегда делаю biggrin
В начале скрипта
Код
#if UNITY_EDITOR

В конце
Код
#endif


Всё, легко компилируется, по идее просто игнорится. И никаких лишних папок в проекте.
MANMANAДата: Понедельник, 02 Марта 2015, 18:47 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
кроссплатформенные фичи рулят, чё... smile

http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
seamanДата: Понедельник, 02 Марта 2015, 19:10 | Сообщение # 5
старожил
Сейчас нет на сайте
Код
Всё, легко компилируется, по идее просто игнорится. И никаких лишних папок в проекте.

И масса ненужного, не используемого кода.
Скрипты редактора работают только из папки Editor или при наличии атрибута ExecuteInEditMode
robertonoДата: Понедельник, 02 Марта 2015, 19:45 | Сообщение # 6
Чокнутый Кот
Сейчас нет на сайте
Цитата seaman ()
И масса ненужного, не используемого кода.

Т.е. этот код всё равно пихается в билд? Он ведь пару кб весит только
seamanДата: Понедельник, 02 Марта 2015, 19:58 | Сообщение # 7
старожил
Сейчас нет на сайте
Какой билд? Скрипты редактора работают В РЕДАКТОРЕ. В билд, естественно не попадают. Все что в папке Editor в билд не попадает. Все что не удовлетворяет директиве #if в билд не попадает.
Главный вопрос - зачем Вам они нужны вообще, если они не работают?
____________
Еще раз. Срипты редактора работают только из папки Editor или при наличии атрибута ExecuteInEditMode.
____________
Тепрь сравните. Ваши скрипты редактора лежат в одной папочке с ясным именем Editor, или разбросаны по всему проекту с атрибутом ExecuteInEditMode, да еще с #if UNITY_EDITOR (чтобы в билд не попали). Что удобнее?
____________
Дополнение. Иногда нужно, чтобы скрипт исполнялся и в билде и в редакторе. Вот тогда нужен атрибут ExecuteInEditMode...


Сообщение отредактировал seaman - Понедельник, 02 Марта 2015, 20:14
robertonoДата: Понедельник, 02 Марта 2015, 20:29 | Сообщение # 8
Чокнутый Кот
Сейчас нет на сайте
seaman, У меня скрипты для редактора лежат в Assets/Scripts/EditorExtensions
biggrin
seamanДата: Понедельник, 02 Марта 2015, 20:45 | Сообщение # 9
старожил
Сейчас нет на сайте
И у каждого есть ExecuteInEditMode?
Да! А каким образом Вы выводите окно, например в редакторе?
Совет: изучить статьи:
http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folder
http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html
http://docs.unity3d.com/Manual/SpecialFolders.html


Сообщение отредактировал seaman - Понедельник, 02 Марта 2015, 20:50
robertonoДата: Понедельник, 02 Марта 2015, 20:54 | Сообщение # 10
Чокнутый Кот
Сейчас нет на сайте
seaman, используя примеры из документации. Совсем не обязательно, что бы скрипт находился в папке Editor (что бы там в доках не писали, всё отлично работает).

Код

public class EditorGameColorLoader : EditorWindow


Код

// Add menu named "My Window" to the Window menu
     [MenuItem("Window/GameColor Loader")]
     static void Init()
     {
         // Get existing open window or if none, make a new one:
         EditorGameColorLoader window = (EditorGameColorLoader)EditorWindow.GetWindow(typeof(EditorGameColorLoader));
     }

Добавлено (02 марта 2015, 20:54)
---------------------------------------------

Цитата seaman ()
И у каждого есть ExecuteInEditMode?

зачем?
mrВладосДата: Среда, 04 Марта 2015, 23:20 | Сообщение # 11
был не раз
Сейчас нет на сайте
robertono,
Спасибо, помог твой способ
Цитата robertono ()
В начале скрипта
Код

#if UNITY_EDITOR

В конце
Код

#endif

Добавлено (04 марта 2015, 23:20)
---------------------------------------------
После компилирования такой вид отображения камеры


вместо такого


Список ошибок
NEBRДата: Четверг, 05 Марта 2015, 01:53 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
mrВладос, смени шейдер в Car/Body. Надеюсь, поможет

King Size #Gamiron12
MANMANAДата: Четверг, 05 Марта 2015, 09:58 | Сообщение # 13
почти ветеран
Сейчас нет на сайте
А я вот никОрня не понял
Цитата mrВладос ()
такой вид отображения камеры

теперь камера отображает бибку только слева, вместо того, чтобы отображать ее сзади?

Если дело в том, что машинка выглядит по-другому, то второй скриншот нужно было сделать из-под днища машины - тогда сразу понятно было бы, что не так.
Или с открытым капотом.
Ошибки при компиляции - всего 2-е (меняй шейдер, как сказал NERB, или правь шейдер). остальные - warnings (то ж неплохо было бы подправить. как именно - тебе компилятор подсказывает)

Ты бы сразу вангующих собрал бы smile
Вон NERB решил пованговать, что тебе трэба.


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Ошибка при компилировании
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг