Показать сообщение отдельно
Старый 18.12.2010, 20:31   #22
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 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(9000); 
Вызовет внутри объекта transform пересчет матрицы трансформаций, на основе которой объект будет визуализироваться, т.к. rotation - это свойство.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Crayzi (18.12.2010), pepel (18.12.2010)