Скрыть объект из Resources

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

Скрыть объект из Resources

Сообщение AlkoTroll 20 сен 2020, 21:21

Здравствуйте. Подскажите пожалуйста, есть скрипт, который из папки ресурсов спавнит префабы в контент ScrollView, на каждом префабе есть кнопка и у меня 2 вопроса:

1. Как из контента ScrollView скрывать префаб по нажатию?
2. Как правильно записывать это все в PlayerPrefs, что бы выбранные префабы не тянулись заного при перезапуске сцены?

Синтаксис:
Используется csharp
public class StudyList : MonoBehaviour
{
    public GameObject[] loadedObjects;
    public RectTransform content;
 
    private void Start()
    {
        loadedObjects = Resources.LoadAll("Lessons").Cast<GameObject>().ToArray(); ;
        for (int i = 0; i < loadedObjects.Length; i++)
        {
            var instance = GameObject.Instantiate(loadedObjects[i]) as GameObject;
            instance.transform.SetParent(content, false);
        }
    }

}
 
AlkoTroll
UNIт
 
Сообщения: 128
Зарегистрирован: 26 сен 2013, 18:55

Re: Скрыть объект из Resources

Сообщение 1max1 20 сен 2020, 21:29

1. Destroy.
2. Запоминай в строку индексы, которые надо будет пропустить, в цикле пропускай их при спавне.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Скрыть объект из Resources

Сообщение AlkoTroll 20 сен 2020, 21:33

1max1 писал(а):1. Destroy.
2. Запоминай в строку индексы, которые надо будет пропустить, в цикле пропускай их при спавне.



Большое спасибо за ответ. По 2 это как?
Можно пример пожалуйста если не затруднит?
AlkoTroll
UNIт
 
Сообщения: 128
Зарегистрирован: 26 сен 2013, 18:55

Re: Скрыть объект из Resources

Сообщение 1max1 20 сен 2020, 22:27

Синтаксис:
Используется csharp
        string s = "";
        s += "1:";
        s += "2:";
        s += "4:";
        s += "9:";
        PlayerPrefs.SetString("key", s);

        var split = PlayerPrefs.GetString("key").Split(new char[] { ':' }, System.StringSplitOptions.RemoveEmptyEntries);

        foreach (var index in split)
        {
            int integ = int.Parse(index);
            print(integ);
        }
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Скрыть объект из Resources

Сообщение AlkoTroll 21 сен 2020, 17:26

1max1 писал(а):
Синтаксис:
Используется csharp
        string s = "";
        s += "1:";
        s += "2:";
        s += "4:";
        s += "9:";
        PlayerPrefs.SetString("key", s);

        var split = PlayerPrefs.GetString("key").Split(new char[] { ':' }, System.StringSplitOptions.RemoveEmptyEntries);

        foreach (var index in split)
        {
            int integ = int.Parse(index);
            print(integ);
        }


Что-то я запутался. Сделал так.

Синтаксис:
Используется csharp
    public GameObject[] loadedObjects;
    public RectTransform content;

    private void Start()
    {
        string s = "";

        loadedObjects = Resources.LoadAll("Lessons").Cast<GameObject>().ToArray(); ;
        for (int i = 0; i < loadedObjects.Length; i++)
        {
            s += i.ToString() + ":";
            PlayerPrefs.SetString("lessonNumber", s);
        }

        var split = PlayerPrefs.GetString("lessonNumber").Split(new char[] { ':' }, System.StringSplitOptions.RemoveEmptyEntries);

        foreach (var index in split)
        {
            int integ = int.Parse(index);
            print(integ);
        }

        foreach(var spawnObjects in loadedObjects)
        {
            var instance = GameObject.Instantiate(spawnObjects) as GameObject;
            instance.transform.SetParent(content, false);
        }
    }


Но как теперь по нажатию кнопки из заспавненного префаба удалять именно его индекс из PlayerPrefs?
AlkoTroll
UNIт
 
Сообщения: 128
Зарегистрирован: 26 сен 2013, 18:55

Re: Скрыть объект из Resources

Сообщение 1max1 21 сен 2020, 17:33

var s = PlayerPrefs.getStr
s = s.Remove("1:");
PlayerPrefs.SetStr(key, s
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Скрыть объект из Resources

Сообщение AlkoTroll 22 сен 2020, 16:27

1max1 писал(а):var s = PlayerPrefs.getStr
s = s.Remove("1:");
PlayerPrefs.SetStr(key, s


Спасибо огромное за помощь.

Поместил в скрипт объекта для кнопки который спавнится
Синтаксис:
Используется csharp
        var s = PlayerPrefs.GetString("lessonNumber");
        s = s.Replace(lessonIndex, ""); - на .Remove жаловался из-за строки
        PlayerPrefs.SetString("lessonNumber", s);
 


И вот я опять в ступоре и непонимании как теперь из этого списка спавнить только те объекты которые в нем остались?

Синтаксис:
Используется csharp
public GameObject[] loadedObjects;
    public RectTransform content;

    private void Start()
    {
        string s = "";
        loadedObjects = Resources.LoadAll("Lessons").Cast<GameObject>().ToArray(); ;
        for (int i = 0; i < loadedObjects.Length; i++)
        {
            s += i.ToString() + ":";
            PlayerPrefs.SetString("lessonNumber", s);
        }

        var split = PlayerPrefs.GetString("lessonNumber").Split(new char[] { ':' }, System.StringSplitOptions.RemoveEmptyEntries);

        foreach (var index in split)
        {
            int integ = int.Parse(index);
        }

       
        foreach(var spawnObjects in loadedObjects)
        {
            var instance = GameObject.Instantiate(spawnObjects) as GameObject;
            instance.transform.SetParent(content, false);
        }
    }
 
AlkoTroll
UNIт
 
Сообщения: 128
Зарегистрирован: 26 сен 2013, 18:55

Re: Скрыть объект из Resources

Сообщение AlkoTroll 22 сен 2020, 17:31

Фух, разобрался. Не знаю конечно на сколько правильно, но работает.

Синтаксис:
Используется csharp
    public GameObject[] loadedObjects;
    public RectTransform content;
    private string s;
    private string[] split;
    private void Start()
    {
        //string s = "";
        loadedObjects = Resources.LoadAll("Lessons").Cast<GameObject>().ToArray();
        PlayerPrefs.GetString("lessonNumber");


        if (PlayerPrefs.GetString("lessonNumber") == "")
        {
            for (int i = 0; i < loadedObjects.Length; i++)
            {
                s += i.ToString() + ":";
                PlayerPrefs.SetString("lessonNumber", s);
                var instance = GameObject.Instantiate(loadedObjects[i]) as GameObject;
                instance.transform.SetParent(content, false);
            }
        }

        split = PlayerPrefs.GetString("lessonNumber").Split(new char[] { ':' }, System.StringSplitOptions.RemoveEmptyEntries);

        if(PlayerPrefs.GetString("lessonNumber") != "")
        {
            foreach (var index in split)
            {
                int integ = int.Parse(index);
                var instance = GameObject.Instantiate(loadedObjects[integ]) as GameObject;
                instance.transform.SetParent(content, false);
            }
        }

    }
 
AlkoTroll
UNIт
 
Сообщения: 128
Зарегистрирован: 26 сен 2013, 18:55


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

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

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 27