Страница 1 из 1

Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 04 янв 2020, 09:47
FirstGameMaker
Как реализовать смену персонажа? Нужно чтобы после нажатия кнопок (влево или вправо) по кругу выбирался соответствующий префаб для управления игроком, но проблема в том, что моих скудных знаний не хватает чтобы даже примерно понять как это сделать. Буду рад любой помощи.

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 04 янв 2020, 19:26
Saltant
Instantiate. Потом просто включай/выключай прифаб.

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 05 янв 2020, 13:45
FirstGameMaker
Saltant писал(а):Instantiate. Потом просто включай/выключай прифаб.
Нет, мне нужно чтобы было видно следующий и предыдущий выбор. Что-то вроде этого: Изображение

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 05 янв 2020, 17:56
Saltant
Ну просто меняй местами тогда геймобжекты, Transform.SetParent https://docs.unity3d.com/ScriptReferenc ... arent.html

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 05 янв 2020, 20:30
StupidMoth
Как вариант, можно засунуть все в один EmptyGameObject и двигать влево/вправо интерполяцией или на фиксированный шаг. Вариантов реализации уйма, зависит от конкретных пожеланий.

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 13 янв 2020, 18:15
FirstGameMaker
Вообщем спустя некоторое время лазанья в интернете и ломанья головы нашёл и отредактировал вот такой скрипт:
Синтаксис:
Используется csharp
    private GameObject[] characterList;
    private int index;
    public GameObject Canvas;
    public GameObject Ship1, Ship2, Ship3;
    public Text count_public;




    void Start()
    {
       
            Time.timeScale = 0;
     
        index = PlayerPrefs.GetInt("CharacterSelected");
        characterList = new GameObject[transform.childCount];


        for (int i = 0; i < transform.childCount; i++)
            characterList[i] = transform.GetChild(i).gameObject;


        foreach (GameObject go in characterList)
            go.SetActive(false);

        if (characterList[index])
            characterList[index].SetActive(true);

    }

    public void ToggleLeft()
    {

        characterList[index].SetActive(false);

        index--;
        if (index < 0)
            index = characterList.Length - 1;

        characterList[index].SetActive(true);

    }


    public void ToggleRight()
    {
        characterList[index].SetActive(false);

        index++;
        if (index == characterList.Length)
            index = 0;


        characterList[index].SetActive(true);
    }
    public void ConfirmButton()
    {
        PlayerPrefs.SetInt("CharacterSelected", index);
        Canvas.SetActive(true);
    }
}

Но тут образовалась новая проблема: в игре за каждого убитого противника начисляются очки, и мне бы хотелось чтобы за эти очки можно было открывать новых персонажей, но как это реализовать?

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 13 янв 2020, 19:28
Saltant
FirstGameMaker писал(а):Но тут образовалась новая проблема: в игре за каждого убитого противника начисляются очки, и мне бы хотелось чтобы за эти очки можно было открывать новых персонажей, но как это реализовать?

Создай переменную под очки и проверяй перед открытием хватает или нет, в чем проблема то?

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 14 янв 2020, 15:21
FirstGameMaker
Saltant писал(а):
FirstGameMaker писал(а):Но тут образовалась новая проблема: в игре за каждого убитого противника начисляются очки, и мне бы хотелось чтобы за эти очки можно было открывать новых персонажей, но как это реализовать?

Создай переменную под очки и проверяй перед открытием хватает или нет, в чем проблема то?
С этим всё понятно, но как мне сохранить количество очков(они сбрасываются после перезапуска сцены) и все их изменения после выхода из игры (игра на андроид)

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 14 янв 2020, 15:27
1max1
FirstGameMaker писал(а):
Saltant писал(а):
FirstGameMaker писал(а):Но тут образовалась новая проблема: в игре за каждого убитого противника начисляются очки, и мне бы хотелось чтобы за эти очки можно было открывать новых персонажей, но как это реализовать?

Создай переменную под очки и проверяй перед открытием хватает или нет, в чем проблема то?
С этим всё понятно, но как мне сохранить количество очков и все их изменения после выхода из игры (игра на андроид)

Чо, как там гугл поживает? https://www.google.com/search?sxsrf=ACY ... 39WwDxZ7Xc

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 15 янв 2020, 11:13
nurbolg
FirstGameMaker писал(а):Как реализовать смену персонажа? Нужно чтобы после нажатия кнопок (влево или вправо) по кругу выбирался соответствующий префаб для управления игроком, но проблема в том, что моих скудных знаний не хватает чтобы даже примерно понять как это сделать. Буду рад любой помощи.

напиши мне в вк https://vk.com/id533329770, у меня есть видеоурок по этой теме могу поделиться.

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 15 янв 2020, 11:17
nurbolg
FirstGameMaker писал(а):Как реализовать смену персонажа? Нужно чтобы после нажатия кнопок (влево или вправо) по кругу выбирался соответствующий префаб для управления игроком, но проблема в том, что моих скудных знаний не хватает чтобы даже примерно понять как это сделать. Буду рад любой помощи.


это про Нужно чтобы после нажатия кнопок (влево или вправо) по кругу выбирался
https://www.youtube.com/watch?v=yiUfnrxFPBo&list=PLXuZlbem3dU4iItVdhmJZF9cIuV2qrOFf&index=35&t=0s

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 15 янв 2020, 11:19
nurbolg
FirstGameMaker писал(а):
Saltant писал(а):
FirstGameMaker писал(а):Но тут образовалась новая проблема: в игре за каждого убитого противника начисляются очки, и мне бы хотелось чтобы за эти очки можно было открывать новых персонажей, но как это реализовать?

Создай переменную под очки и проверяй перед открытием хватает или нет, в чем проблема то?
С этим всё понятно, но как мне сохранить количество очков(они сбрасываются после перезапуска сцены) и все их изменения после выхода из игры (игра на андроид)

это про сохранение данных PlayerPrefs
https://www.youtube.com/watch?v=LYJ4tXu0zyk&list=PLXuZlbem3dU4iItVdhmJZF9cIuV2qrOFf&index=64&t=763s

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 17 янв 2020, 17:10
lastbaks
вообще вопрос действительно слишком общий. Нет однозначного ответа на тему "как мне сделать добавление новых персонажей к выбору при наборе очков", поэтому опасаюсь, но любой ответ в данной теме будет натыкаться на встречные вопросы, и я тоже не смогу дать конкретного скрипта, потому что в одном скрипте уложить все это не получится, а если получится, то будет бессмысленно длинная лапша, по которой вопросов будет еще больше.
Поэтому отвечу тоже лишь общими терминами.
Вот один из вариантов.
Для выбора персонажей нужно в канву подгружать не сами объекты, а их копии.
При наведении на каждого сделать срабатывание instantiate нужного префаба.
По хранению данных при выходе - изучи и используй PlayerPrefs
По поводу дополнения персонажей с набором очков - хочешь, закидывай всех возможных вмассив,
а можно просто каждому персонажу дать переменную рейтинга, по которой он будет доступен только в случае.
если у тебя количество очков будет больше, чем эта его переменная.

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 21 янв 2020, 18:00
FirstGameMaker
Такс...я понимаю, что возможно всем надоел, но возникла очередная проблема: как мне после покупки персонажа сохранить информацию о том, что он куплен. Пытался реализовать с помощью PlayerPerfis вроде если int = 1, то корабль куплен.Но PlayerPerfis сохраняет и загружает во всех вариациях скрипта что int = 1, и получается что после покупки одного персонажа, покупаются сразу все. Как это исправить?

Re: Unity2D Выбор персонажа | Как реализовать?

СообщениеДобавлено: 22 янв 2020, 11:50
AngryCat
FirstGameMaker писал(а):Такс...я понимаю, что возможно всем надоел, но возникла очередная проблема: как мне после покупки персонажа сохранить информацию о том, что он куплен. Пытался реализовать с помощью PlayerPerfis вроде если int = 1, то корабль куплен.Но PlayerPerfis сохраняет и загружает во всех вариациях скрипта что int = 1, и получается что после покупки одного персонажа, покупаются сразу все. Как это исправить?

Каждый перс, свой индекс. Например: первый перс = 1, второй = 2 и т.д. А потом смотришь, в префах есть 1, значит первый куплен...