JS виртуальные функции

Программирование на Юнити.

JS виртуальные функции

Сообщение ret 23 июн 2010, 15:43

Код: Выделить всё
class Ai {
   function Test() {
      Debug.Log("test Ai!");
   }
}

class BAi extends Ai {
   function Test() {
      Debug.Log("test BAi!");
      super();
   }
}

private var ai: Ai[];

function Awake() {
   ai = new Ai[4];
   ai[0] = new BAi();
   ai[0].Test();
}


собственно проблема в том что когда мы вызываем ai[0].Test(); то получаем только "test Ai!" а я основываясь на опыте в с++ рассчитывал получить "test BAi!" и только потом "test Ai!". попробовал исправить ситуацию с помощью "override". выяснил что он вообще не знает о нем. Хотя у мелкософта есть. Собственно как можно разрулить это все?
И еще на какую доку опираться по языку что бы не постить тут всего этого?
ret
UNец
 
Сообщения: 16
Зарегистрирован: 25 май 2010, 17:50

Re: JS виртуальные функции

Сообщение DbIMok 23 июн 2010, 16:03

ret писал(а):мы вызываем ai[0].Test(); то получаем только "test Ai!"

вполне ожидаемый результат. разве нет?
Синтаксис:
Используется javascript
#pragma strict

class Ai {
   function Test() {
      Debug.Log("test Ai!");
   }
}

class BAi extends Ai {
   function Test() {
      Debug.Log("test BAi!");
      super();
   }
}

function Start() {
        var bai: BAi = new BAi();
        var ai: Ai = new Ai();
        ai.Test();
        bai.Test();
}

вернет
Код: Выделить всё
test Ai!
test BAi!
test Ai!

доки, примеры и прочее по UnityScript конечно есть. но... возможно более простой синтаксис (по сравнению с С#) по началу кажется привлекательным, однако впоследствии накопится множество причин (не буду сейчас перечислять) перейти на С#. на эти грабли наступили многие и теперь пытаетесь вы. пишите сразу на С#. он хорошо документирован, для него есть удобные среды разработки (VS), множество реализаций алгоритмов, библиотек, после него получается более чистый IL код...
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: JS виртуальные функции

Сообщение ret 23 июн 2010, 17:17

Собственно уже это и сделал. Спасибо за ответ!
ret
UNец
 
Сообщения: 16
Зарегистрирован: 25 май 2010, 17:50

Re: JS виртуальные функции

Сообщение Guzyano 23 июн 2010, 20:12

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


примеры C# ложаться на жабу почти все(из нормальных) - я вот комбайн месш на жабу переписал за 20-30 мин пришлось попариться малек с ref(в Жабе такого нету) - и все ровно все сделал.
Но если в голову все-таки пришло сделать извращение в таком духе то можно все это дело реализовать на C#
и через Жабу управлять.

В C# конечно много чего есть - там даже указатели есть, списки, ref и out, интерфейсы по моему есть и многое другое...

Только вот спрашиваеться - оно надо ??? - и да и нет.
Можно ЛЮБУЮ игру на жабе написать - ровно так же как и на C#...

Хотя вот с портированием на iPhone говорят лучше c С# - мол на Жабе себе шею свернешь(На буржуйском форуме прочитал - ничего сказать по етому поводу не могу = не портировал на яФон)
Guzyano
UNец
 
Сообщения: 49
Зарегистрирован: 22 июн 2010, 12:31
Откуда: Минск
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8