Хоть я и 12 лет программирую под web, не могу переварить UnityScript. В могилу меня сведет.
Подскажите, где я не прав или это мегаглюки Unity (он глючит или я?????).
Вопрос первый
Имеем родительский класс:
Синтаксис:
Используется javascript
class CardZone {
var userSide : String; // my or opponent
var zoneX = 0.0f; // coordinates of zone
var zoneZ = 0.0f;
function CardZone(side : String, x:float, z:float) {
this.userSide = side;
this.zoneX = x;
this.zoneZ = z;
} // constructor
} // class
var userSide : String; // my or opponent
var zoneX = 0.0f; // coordinates of zone
var zoneZ = 0.0f;
function CardZone(side : String, x:float, z:float) {
this.userSide = side;
this.zoneX = x;
this.zoneZ = z;
} // constructor
} // class
Есть еще класс, который расширяет CardZone:
Синтаксис:
Используется javascript
class Support extends CardZone {
function Support(side : String, x:float, z:float) {
super(side, x, z);
} // constructor
} // Support
function Support(side : String, x:float, z:float) {
super(side, x, z);
} // constructor
} // Support
Создаем в главном скрипте объект:
var foo = new Support("my", 10.46, -11.73);
При создании, значение "my" записывается как надо в this.userSide и доступно. Далее в коде, при вызове методов объекта foo переменная this.userSide оказывается ПУСТОЙ!!! Ну никак я не могу это понять!
В точно таком же соседнем объекте все ок, а в этом обнуляется. Хотя раньше работало.
Причем я отлаживаю работу в WebPlayer, и это страшная головная боль.
Сейчас пока это писал, подумал, может мне эти костыли ставит мегадолбанный инспектор (Inspector) из самого Unity? Как этого паршивца заставить не залазить куда его не просят (в переменные моих классов)???
Вопрос второй
В главном скрипте есть переменная:
Синтаксис:
Используется javascript
var myObjects = new Dictionary.<int,Transform>();
В одном скрипте я отлично к переменой добираюсь:
Синтаксис:
Используется javascript
var mainGameObject = GameObject.Find("MainGameObject");
var mainScript = mainGameObject.GetComponent(mainscript);
var obj : Transform;
obj = mainScript.myObjects[ id ];
var mainScript = mainGameObject.GetComponent(mainscript);
var obj : Transform;
obj = mainScript.myObjects[ id ];
а в другом, эта же конструкция не работает! Не срабатывает строчка obj = mainScript.myObjects[ id ]; хотя вывод mainScript.myObjects работает, и показывает правильный тип. Не работает даже mainScript.myObjects.ContainsKey(id)
Друзья, я уже просто плачу. 10 минут пишу код и часами его отлаживаю, так как перестает работать даже то, что вчера работало и после этого ни кто его не трогал. Скопированный код в соседнюю функцию перестает работать - это жесть! Как можно программировать в таких условиях.
Подскажите, где я не прав. Что я делаю не так.
Спасибо!