#pragma strict и Array() ?

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

#pragma strict и Array() ?

Сообщение Battou 13 фев 2011, 15:14

Скажите пожалуйста, как правильно исспользовать Array() вместе с #pragma strict? У меня есть массив объектов моего класса, и каждый раз когда я обращаюсь к переменным объекта в массиве у меня выдаёт ошибку

BCE0019: 'имя переменной' is not a member of 'Object'.

Вот код класса:

Синтаксис:
Используется javascript
class buildD{
        var id:int;
        var lvl:int;
        var desc:String;
        var name:String;
        function buildD(a:int,b:int,c:String,d:String){
                id=a;
                lvl=b;
                desc=c;
                name=d;
        }
}


Например если сделать так:

Синтаксис:
Используется javascript
#pragma strict
var x:Array=new Array();
x.Add(new buildD(1,1,"ff","ff"));
var i:int;
i=x[0].id
 


То выдаст ошибку.

Как тут быть?( Перерыл инет, но пока не нашёл решения.(
Последний раз редактировалось Battou 13 фев 2011, 15:36, всего редактировалось 1 раз.
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: #pragma strict и Array() ?

Сообщение Neodrop 13 фев 2011, 15:26

Так ваша функция ничего не возвращает. Как же вы чего то в массив хотите добавить? :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: #pragma strict и Array() ?

Сообщение Battou 13 фев 2011, 15:35

Всмысле не возвращает?? Она записывает объект с 4 переменными в массив. Без #pragma strict это работает, а вот сним он похоже не может понять что за тип объекта и переменной я там присвоить пытаюсь.
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: #pragma strict и Array() ?

Сообщение Battou 13 фев 2011, 15:36

Ой, опечатался. x.Add(new buildD(1,1,"ff","ff")); разумеется. Поправил в первом посте.
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: #pragma strict и Array() ?

Сообщение Neodrop 13 фев 2011, 15:54

И тем не менее, она ничего не возвращает, поэтому ставить её параметром массива, бессмысленно.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: #pragma strict и Array() ?

Сообщение Battou 13 фев 2011, 16:25

Эмм.... может я конечно чего не понимаю. Но вообще-то функция Add записывает новую позицию в массив, как и Push. А функция в классе описывает переменные объекта, и этот объект записывается в массив с помощью Add. Что именно тут безсмысленно? Функция расчётов проводить и н должна, она лишь для хранения данных, например объект с id=1 имеет описание такое-то, уровень такой-то и тп. И вот такие объекты со своими параметрами записываются в массив. И без #pragma strict всё работает.

Я кстати таки нарыл как обращаться к таким переменным. надо уточнять тип или конструктор, хз как правильно. Примерно вот так:

Синтаксис:
Используется javascript

#pragma strict
 var x:Array=new Array();
 x.Add(new buildD(1,1,"ff","ff"));
 var i:int;
 i=(x[0] as buildD).id;
 
 


Но осталась проблема если в массив Array() записан объект с переменной которая тоже массив Array(). пытался через "as int" например читать оттуда, но тоже как Object видит.( Пока не пойму как с этим побороться.
Battou
UNIт
 
Сообщения: 116
Зарегистрирован: 24 ноя 2010, 18:08

Re: #pragma strict и Array() ?

Сообщение DbIMok 14 фев 2011, 14:53

Синтаксис:
Используется javascript
#pragma strict

function Start() {
        var arr2: Array = new Array();
        arr2.Add("test2");
       
        var arr1: Array = new Array(); 
        arr1.Add("test1");
        arr1.Add(arr2);
       
        for (var i = 0; i < arr1.length; i++ ) {
                if (arr1[i].GetType() == String) {
                        Debug.Log(arr1[i]);
                }
                if (arr1[i].GetType() == Array) {
                        for (var j = 0; j < (arr1[i] as Array).length; j++ ) {
                                Debug.Log((arr1[i] as Array)[j]);                              
                        }              
                }
        }
}

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


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

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

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