0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 3
1

Проблема при загрузке обьектов

28.11.2018, 17:08. Показов 517. Ответов 2

Добрый день! Делаю сохранение/загрузку для своей программы в юнити. C сохранением все отлично, возникла проблема с загрузкой. Сначала мне необходимо создать несколько однотипных объектов (памятников) - метод LoadStellas(), затем к ним нужно добавить(при необходимости) дочерние объекты: фото, надписи, цветник с плитой, стэнд - метод SetStellas(). Если раскидать эти методы на две разных кнопки, то оба работают корректно. Если же назначить оба метода на одну кнопку, то дочерние объекты создаются с неправильными локальными свойствами position, rotation, scale так далее. Важный момент, для загрузки дочерних объектов я использую те же самые методы, что и для создания, только передаю другие параметры. Суть вопроса - почему возникает такая проблема, и как все-таки назначить оба метода на одну кнопку, но чтобы они корректно
работали? мой код для загрузки объектов:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public void LoadStellas()
    {
        stellasName = SaveSystem.GetString("stellasName");
        List<string> Names = stellasName.Split('|').ToList();
 
        GameObject[] stellasModel = Resources.LoadAll<GameObject>("Prefabs/PivotPrefabs/Pamitniki/Models/");
        foreach (var name in Names)
        {
            for (int i = 0; i < stellasModel.Length; i++)
            {
                if (name == stellasModel[i].name)
                {
                    stellasModel[i].GetComponent<ObjectScript>().Create();
                }
            }
        }  
    }
 
    public void SetStellas()
    {
        Debug.Log(GameObject.Find("CenterPoint"));
        TouchManager touchManager = GameObject.Find("CenterPoint").GetComponent<TouchManager>();
        Debug.Log(GameObject.Find("CenterPoint").GetComponent<TouchManager>());
        AddText addText = GameObject.Find("CenterPoint").GetComponent<AddText>();
 
        stellas = FillStellasList();
 
        foreach (var stella in stellas)
        {
            stella.transform.position = SaveSystem.GetVector3(stella.name + "position");
            stella.transform.rotation = SaveSystem.GetQuaternion(stella.name + "rotation");
 
            touchManager.ChangeMaterial(stella, SaveSystem.GetString(stella.name + "material"));
 
            if (SaveSystem.GetBool(stella.name + "parterre"))
            {
                touchManager.gameObject = stella;
                touchManager.AddParterre(stella);
            }
 
            if (SaveSystem.GetBool(stella.name + "plate"))
            {
                touchManager.gameObject = stella;
                touchManager.AddPlate(stella);
            }
 
            for (int i = 0; i < SaveSystem.GetInt(stella.name + "countOfImage"); i++)
            {
                addText.AddImage(stella, SaveSystem.GetVector3(stella.name + "imagePosition" + i.ToString()), 
                    SaveSystem.GetQuaternion(stella.name + "imageRotation" + i.ToString()), SaveSystem.GetVector3(stella.name + "imageScale" + i.ToString()));
            }
 
            for (int i = 0; i < SaveSystem.GetInt(stella.name + "countOfText"); i++)
            {
                addText.AddName(stella, SaveSystem.GetVector3(stella.name + "textPosition" + i.ToString()), SaveSystem.GetQuaternion(stella.name + "textRotation" + i.ToString()), 
                    SaveSystem.GetString(stella.name + "textContaint" + i.ToString()), SaveSystem.GetVector3(stella.name + "textScale" + i.ToString()));
            }
 
            for (int i = 0; i < SaveSystem.GetInt(stella.name + "countOfDate"); i++)
            {
                addText.AddDate(stella, SaveSystem.GetVector3(stella.name + "datePosition" + i.ToString()), SaveSystem.GetQuaternion(stella.name + "dateRotation" + i.ToString()), 
                    SaveSystem.GetString(stella.name + "dateContaint" + i.ToString()), SaveSystem.GetVector3(stella.name + "dateScale" + i.ToString()));
            }
 
            for (int i = 0; i < SaveSystem.GetInt(stella.name + "countOfEpitaphy"); i++)
            {
                addText.AddEpitaphy(stella, SaveSystem.GetVector3(stella.name + "epitaphyPosition" + i.ToString()), SaveSystem.GetQuaternion(stella.name + "epitaphyRotation" + i.ToString()), 
                    SaveSystem.GetString(stella.name + "epitaphyContaint" + i.ToString()), SaveSystem.GetVector3(stella.name + "epitaphyScale" + i.ToString()));
            }
        }
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2018, 17:08
Ответы с готовыми решениями:

Проблема при загрузке
Добрый день Собственно сабж. При загрузке пишет и дальше никакой реакции. что можно сделать?

проблема при загрузке
включаю комп и после загрузки виндовс появляется последняя программа которую установил...

Проблема при загрузке ОС
Всем привет! Ноутбук Dell latitude e6320, недавно появилась проблема с очень долгой загрузкой ОС....

Проблема при загрузке сайта
При загрузке сайта bestrusfishing.ru выдает ошибку: Firefox не может установить соединение с...

2
3047 / 1588 / 909
Регистрация: 26.10.2018
Сообщений: 4,518
29.11.2018, 00:31 2
Возможно порядок вызова методов неправильный.
0
0 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 3
01.12.2018, 19:45  [ТС] 3
Вообщем, если кому интересно, я так и не понял в чем конкретно проблема. Единственное, что я смог сделать - вызывать метод SetStellas() через Invoke с задержкой в 2 секунды. Получилось Invoke("SetStellas", 2). Тогда методы выполняются так, как я ожидаю
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2018, 19:45
Помогаю со студенческими работами здесь

Проблема при загрузке COM контрола
Добрый день! На одной из форм в макросе Excel использую контрол SpreedSheet 11 из коллекции...

Проблема при загрузке с SSD
Здравствуйте. Подскажите, пожалуйста, в чем может быть проблема, если при запуске пк появляется...

Проблема при загрузке Windows XP
Возникла проблема, подумала, может, кто из вас поможет. С недавнего времени Windows у меня стал...

Проблема при загрузке биоса
когда грузится биос на черном экране пишет--- DISCK BOOT FAILURE, INSERT SYSTEM DICK AND PRESS...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru