|
18.12.2010, 19:22
|
#16
|
ПроЭктировщик
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
1. Возможно ли создавать объекты и присваивать им переменные в ручную?
2. Как будет выглядеть на Юнити простенький блитз код типа:
Graphics3D 640,480
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
RotateEntity light,90,0,0
cube=CreateCube()
PositionEntity cube,0,0,5
While Not KeyDown( 1 )
RenderWorld
Flip
Wend
End
Ну или примерно чтото типо этого, но без расставления объектов в ручную.
|
(Offline)
|
|
18.12.2010, 19:30
|
#17
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
1. Да
2. Все описанное можно создать в редакторе (сцена). Подробнее можно почитать в моем первом уроке.
Кодом C#:
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
void Start() { // Graphics3D 640,480 Screen.SetResolution(640, 480, false);
// camera=CreateCamera() Camera myCamera = new GameObject("Camera").AddComponent<Camera>();
// light=CreateLight() Light myLight = new GameObject("Light").AddComponent<Light>();
//RotateEntity light,90,0,0 myLight.transform.rotation = Quaternion.Euler(90, 0, 0);
//cube=CreateCube() GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
//PositionEntity cube,0,0,5 cube.transform.position = new Vector3(0,0,5);
}
void Update() { //While Not KeyDown( 1 ) //RenderWorld //Flip //Wend //End if(Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); }
} }
Повесить такой компонент на пустой объект в сцене.
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
18.12.2010, 19:42
|
#18
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Добавил кодом
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.12.2010, 19:45
|
#19
|
ПроЭктировщик
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Сообщение от pax
1. Да
2. Все описанное можно создать в редакторе (сцена). Подробнее можно почитать в моем первом уроке.
Кодом:
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { void Start() { // Graphics3D 640,480 Screen.SetResolution(640, 480, false); // camera=CreateCamera() Camera myCamera = new GameObject("Camera").AddComponent<Camera>(); // light=CreateLight() Light myLight = new GameObject("Light").AddComponent<Light>(); //RotateEntity light,90,0,0 myLight.transform.rotation = Quaternion.Euler(90, 0, 0); //cube=CreateCube() GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); //PositionEntity cube,0,0,5 cube.transform.position = new Vector3(0,0,5); } void Update() { //While Not KeyDown( 1 ) //RenderWorld //Flip //Wend //End if(Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); } } }
|
Премного благодарен, теперь я понял что Юнити не такой уж и монстр, каким мне показался после блитца)))
П.с. А все команды действий над объектами пишутся в таком духе "cube.transform.действие"?
|
(Offline)
|
|
18.12.2010, 19:57
|
#20
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Сообщение от Crayzi
П.с. А все команды действий над объектами пишутся в таком духе "cube.transform.действие"?
|
Это объектно-ориентированное программирование.
У объекта cube, типа GameObject есть свойство transform типа Transform, которое отвечает за трансформации объекта в 3d. У компонента Transform есть так же свойства отвечающие каждое за свое. Например свойства rotation типа Quaternion отвечает за вращение.
Т.е.
myLight.transform.rotation = Quaternion.Euler(90, 0, 0);
можно понимать как
[Объект Light].[Свойство transform].[Свойство rotation] = [Создать новый объект вращения на основе углов Эйлера (Quaternion.Euler(90, 0, 0)]
т.е. любой объект имеет свойства и методы. Свойства могут быть другими объектами, которые так же могут иметь свойства и методы и т.д.
Если представить что типы(Type) в Blitz3D это объекты, то ихние поля - это свойства, которые могут иметь как свои свойства, так и методы. В проем как и внутри типа могут быть созданы методы.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
18.12.2010, 20:23
|
#21
|
ПроЭктировщик
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Вопрос, а почему нельзя сразу после создания переменной изменить ее значение(я эксперементировал с тем кодом какой ты перевел с блитца)? У мну компиллер ругается чёто, зато если в "подфункции" менять значение RS то все ок.
public float RS=5;
RS=50;
П.с. Я так понял что "public" означает что я создал глобальную переменную или же это не так? Как создать локальную/глобальную переменную?
|
(Offline)
|
|
18.12.2010, 20:31
|
#22
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Это от привычки к тому, что везде можно писать команды. Когда описывается объект - определяются его свойства и методы, а выполняются действия только в методах и конструкторах. Правда на JS можно писать код вне методов, он выполняется на старте (вместо функции Start). В C# этого нельзя сделать. Для этого у каждого компонента имеются функции Awake и Start. Awake выполняется после инициализации компонента, Start - перед первым Update.
Например нужно объекту объявить переменную life и на старте присвоить ей значение:
using UnityEngine;
public class ExampleScript : MonoBehaviour { public float life = 0f; // можно только проинициализировать //life = 100f; - здесь будет ошибка
public void Start() { life = 100f; // тут все OK, т.е. выполнение присвоения выполняется в теле метода Start() }
}
В данном случае переменная life является полем объекта ExampleScript. Поля отличаются от свойств тем, что свойства при назначении значения и при считывании значения могут выполнять какие-то действия.
Например присвоение свойству rotation нового значения:
myLight.transform.rotation = Quaternion.Euler(90, 0, 0);
Вызовет внутри объекта transform пересчет матрицы трансформаций, на основе которой объект будет визуализироваться, т.к. rotation - это свойство.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
18.12.2010, 20:44
|
#23
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
pax а ооп везде одинаковое? нанпример название свойств и т.д.
если например взять с++ и какойнить двиг к нему
|
(Offline)
|
|
18.12.2010, 20:47
|
#24
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Свойств на С++ нет(есть на CLR - C++.Net но я практически на нем не программировал). С точки зрения С++ это две функции. Например свойство rotation на С++ было бы записано двумя функциями
void set_rotation(Quaternion newRotation)
{
выполняемое действие
}
и
Quaternion get_rotation()
{
выполняемое действие
return значение;
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.12.2010, 20:51
|
#25
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
дауж после блитца неудобно былобы привыкать наверно)) на с# еще куда нишло..
|
(Offline)
|
|
18.12.2010, 20:52
|
#26
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
У каждого языка свои задачи. У С++ свои преимущества, у С# свои.
В unity можно использовать функции из библиотек, написанных на С++ импортировав их в C#. Но тогда проект будет платформозависимым.
|
(Offline)
|
|
18.12.2010, 21:05
|
#27
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
кстати юнити всегда выдает заставка с выбором разрешения(если с компа запускать) . есть функция выключения ее. или она по умолчанию компилится?
|
(Offline)
|
|
18.12.2010, 21:09
|
#28
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Можно отключчть в настройках:
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
18.12.2010, 21:15
|
#29
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
Сообщение от pepel
на с# еще куда нишло..
|
На самом деле на C# не намного проще. Объявление свойства выглядит так:
public Quaternion rotation { get { // действие return значение; } set { //действие с входным значением value } }
Потом можно им пользоваться как полем.
|
(Offline)
|
|
18.12.2010, 21:18
|
#30
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Переход с Blitz3D на Unity3D.
ок спасибо. пока конешь не собираюсь переходить, но когданибудь это может случится)
просто столько движков всяких разных, и языков, что боишься куда либо сунуться, т.к. если осваивать, то основательно
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:54.
|