Пятница, 19 Апреля 2024, 21:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема при загрузке обьектов на сцену
Проблема при загрузке обьектов на сцену
student1603Дата: Среда, 28 Ноября 2018, 16:57 | Сообщение # 1
уже был
Сейчас нет на сайте
Добрый день! Делаю сохранение/загрузку для своей программы в юнити. С сохранением все отлично, возникла проблема с загрузкой. Сначала мне необходимо создать несколько однотипных объектов (памятников) - метод LoadStellas(), затем к ним нужно добавить(при необходимости) дочерние объекты: фото, надписи, цветник с плитой, стэнд - метод SetStellas(). Если раскидать эти методы на две разных кнопки, то оба работают корректно. Если же назначить оба метода на одну кнопку, то дочерние объекты создаются с неправильными локальными свойствами position, rotation, scale так далее. Важный момент, для загрузки дочерних объектов я использую те же самые методы, что и для создания, только передаю другие параметры. Суть вопроса - почему возникает такая проблема, и как все-таки назначить оба метода на одну кнопку, но чтобы они корректно работали?
мой код для загрузки объектов:

Код

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()));
            }
        }
    }


также пример метода для создания обьекта:
Код

public void AddEpitaphy(GameObject gObj, Vector3 position, Quaternion quaternion, string value, Vector3 scale)
    {
        textMeshPro = Instantiate(Epitaphy, gObj.transform);

        textMeshPro.text = value;
        textMeshPro.transform.localPosition = position;
        textMeshPro.transform.localRotation = quaternion;
        textMeshPro.transform.localScale = scale;
    }
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема при загрузке обьектов на сцену
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг