Resources.Load

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Resources.Load

Сообщение Timofeyeff 04 янв 2012, 10:18

Доброго дня уважаемым форумчанам. Недавно наткнулся на такой баг.
Вызываю врагов следующим кодом:

Синтаксис:
Используется javascript
var thisEnemy : GameObject = Instantiate (Resources.Load(Enemyes[i][1]), position, Quaternion.identity) as GameObject;


Вроде все работает нормально, но иногда враг дублируется на поле. В доках вроде приведен такой синтаксис:

Синтаксис:
Используется javascript
 var instance : GameObject = Instantiate(Resources.Load("enemy", GameObject));


Но тогда непонятно как определять позицию. Может это я чего то неправильно двелаю? Помогите пожалуйста.
С уважением, Максим.
Аватара пользователя
Timofeyeff
UNец
 
Сообщения: 8
Зарегистрирован: 21 окт 2011, 05:25

Re: Resources.Load

Сообщение Order 04 янв 2012, 10:44

Строчка вырвана из контекста, не понятно чего у вас там происходит ... что дублируется и как должно работать...
в Resources.Load нет глюков !
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: Resources.Load

Сообщение Timofeyeff 04 янв 2012, 10:52

В общем вот кусок кода.
Синтаксис:
Используется javascript
function Update () {
        var i : int;
        for (i=0;i<Enemyes.length;i++) {
                if ((parseInt(Enemyes[i][4]) - transform.position.z > 0)&&(parseInt(Enemyes[i][4]) - transform.position.z < visibleDistance)&&(parseInt(Enemyes[i][7])==0)) {
                        var position : Vector3 = new Vector3(0, 0, 0);
                        position = Vector3(parseInt(Enemyes[i][2]),parseInt(Enemyes[i][3]),parseInt(Enemyes[i][4]));
                        var thisEnemy : GameObject = Instantiate (Resources.Load(Enemyes[i][1]), position, Quaternion.identity) as GameObject;
                        Enemyes[i][7] = 1;
                }
        }
}
 


Поясняю.
Массив Enemyes грузится при старте игры из файла. Дальше идет проверка виден враг или нет, если видет - отображается, а в массиве напротив врага ставится галочка что он уже отображен и больше вызываться не будет.

Кстати, подбный баг есть и с самим игроком. Раньше я после смерти и дестроя вызывал его префаб через поиск по тегу и отправлял на респ, сейчас гружу из ресурсов. Иногда игрок дублируется на респе. Сразу скажу - у игрока массива нет.
Аватара пользователя
Timofeyeff
UNец
 
Сообщения: 8
Зарегистрирован: 21 окт 2011, 05:25

Re: Resources.Load

Сообщение Golandez 04 янв 2012, 12:20

Добавте проверку на null
Синтаксис:
Используется csharp
GameObject thisEnemy;
if(thisEnemy==null) Instantiate(prefab);
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Resources.Load

Сообщение Timofeyeff 04 янв 2012, 12:52

Непомогло :(
Аватара пользователя
Timofeyeff
UNец
 
Сообщения: 8
Зарегистрирован: 21 окт 2011, 05:25

Re: Resources.Load

Сообщение raul82 04 янв 2012, 13:30

извините не удержался, но это ппц ... не читаемый код
Vector3(parseInt(Enemyes[i][2]),parseInt(Enemyes[i][3]),parseInt(Enemyes[i][4]))
в яве структуры отменили ?
уже представляю себе массив из 50 элементов
45 - угол поворота вокруг X
46 - угол поворота вокруг Y
47 - угол поворота вокруг Z

боюсь даже представить что делает parseInt #:-s
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: Resources.Load

Сообщение Timofeyeff 04 янв 2012, 13:52

Хех, а они в яваскрипте были когда нить? Объекты есть, хэштэйбл есть (спасибо .NET), структур нету...
А parseInt - встроенная функция, пытается строку в число преобразовать, так как все данные из файлов в читаются исключительно как строки. Стыдно аксиом не знать.
Но это к делу не относится, лучше помогите с багом разобраться.
Аватара пользователя
Timofeyeff
UNец
 
Сообщения: 8
Зарегистрирован: 21 окт 2011, 05:25

Re: Resources.Load

Сообщение Левш@ 04 янв 2012, 14:10

Дублироваться и самопроизвольно размножаться обьект никак не может...
Скорее инстанс не один раз срабатывает. Надо заглушки ставить, или выделенные функции использовать для инстансирования.
Синтаксис:
Используется javascript
if (orderBonus == 1) {
        orderBonus = 0;
        Instantiate(bonus[spawnRandom], bonusPos, transform.rotation);
}
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 26