Tags

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

Tags

Сообщение EvgeniyT 09 фев 2011, 14:17

Ситуация следующая: создал сцену на Unity, протэгил нужные объекты, сохранил сцену, загрузил ее в другом приложении (сохранение и загрузка через BuildPipeline и "WWW.assetBundle"). Сцена загрузилась нормально, всё хорошо. Но если я пытаюсь после метода LoadScene() написать нечто вроде "GameObject[] castles = GameObject.FindGameObjectsWithTag("Castle");", то массив castles после этого имеет размер 0! Хотя тут же я захожу в запущеную сцену, кликаю на объектах и вижу, что они действительно имеют тэг "Castle".
В чём моя ошибка? Может быть метод LoadScene() не успевает загрузить сцену, а я уже лезу к ее объектам?
Последний раз редактировалось EvgeniyT 09 фев 2011, 21:17, всего редактировалось 1 раз.
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: Tags

Сообщение EvgeniyT 09 фев 2011, 20:37

Да, действительно, так и есть. Нужно просто немного подождать, пока объекты не загрузятся. После этого всё есть.
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: Tags

Сообщение alexz 09 фев 2011, 20:44

EvgeniyT писал(а):GameObject[] castles = GameObject.FindGameObjectsWithTag("Castle");", то массив castles после этого имеет размерность 0!

Размер 0, а размерность у него 1.
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: Tags

Сообщение discouraged_one 09 фев 2011, 20:47

Да, действительно, так и есть. Нужно просто немного подождать, пока объекты не загрузятся. После этого всё есть.

хм. А это reproducible? скрипт в котором эту штуку делаете не покажете?
Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Tags

Сообщение EvgeniyT 09 фев 2011, 21:11

На консоле получаю 2 раза 0, потом, когда объекты подгрузятся, выводятся 5ки. Ну так и правильно - замков же 5 штук!

Синтаксис:
Используется csharp
public class Loader : MonoBehaviour
{
  private bool loaded;
  private void Start()
  {
    WWW downloader = new WWW("file://D:/Scene.unity3d");
    AssetBundle assetB = downloader.assetBundle;
    Application.LoadMap("Scene");
    this.loaded = true;
  }
  private void Upload()
  {
    if(this.loaded)
    {
      GameObject[] castles = GameObject.FindGameObjectsWithTag("Castle");
      print(castles.Length);  
    }
  }
}
 
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: Tags

Сообщение EvgeniyT 09 фев 2011, 21:14

alexz писал(а):
EvgeniyT писал(а):GameObject[] castles = GameObject.FindGameObjectsWithTag("Castle");", то массив castles после этого имеет размерность 0!

Размер 0, а размерность у него 1.


Для меня главное - он не содержит ни одного замка!
Вы правы. Не совсем тут уместно слово размерность. Точнее даже совсем не уместно. Изменил на размер.
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ

Re: Tags

Сообщение discouraged_one 09 фев 2011, 21:21

Unity Technologies
Аватара пользователя
discouraged_one
Unity Technologies
 
Сообщения: 197
Зарегистрирован: 19 май 2010, 15:56

Re: Tags

Сообщение EvgeniyT 09 фев 2011, 21:27

discouraged_one писал(а):http://unity3d.com/support/documentation/ScriptReference/WWW-assetBundle.html


Может быть. Как-нибудь проверю на досуге.
Спасибо!
EvgeniyT
UNIт
 
Сообщения: 142
Зарегистрирован: 14 дек 2010, 19:06
  • ICQ


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

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

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