Ошибка при компилировании
| |
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, ой, а я по другому всегда делаю В начале скрипта В конце
Всё, легко компилируется, по идее просто игнорится. И никаких лишних папок в проекте.
|
|
| |
MANMANA | Дата: Понедельник, 02 Марта 2015, 18:47 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| кроссплатформенные фичи рулят, чё...
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
|
|
| |
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 ( ) Добавлено (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 (то ж неплохо было бы подправить. как именно - тебе компилятор подсказывает)
Ты бы сразу вангующих собрал бы Вон NERB решил пованговать, что тебе трэба.
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
|