Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/29: Рейтинг темы: голосов - 29, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.06.2021
Сообщений: 2

Как сделать спавн объекта на координатах вызывающей его кнопки?

12.06.2021, 08:25. Показов 5776. Ответов 1

Студворк — интернет-сервис помощи студентам
У меня есть стена, которая поделена на 6 столбцов(красный, жёлтый, зелёный, синий, голубой, оранжевый) На каждом из столбцов по 6 кнопок. Мне нужно чтобы при нажатии на кнопку, на ней появлялся префаб (если кнопка на красном столбце, то появляется красный префаб, и т. д.), а при повторном нажатии он удалался.
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
 public GameObject RedPrefab; //Префаб
    public Transform[] spawnPos; //Привязка кнопки
    bool b = false; //Переключатель
    public void red1()
    {
        b = !b;
        if (b)
            Instantiate(RedPrefab, spawnPos[0].transform.position, Quaternion.identity);
        else
            Destroy(RedPrefab);
    }
    public void red2()
    {
        b = !b;
        if (b)
            Instantiate(RedPrefab, spawnPos[1].transform.position, Quaternion.identity);
        else
            Destroy(RedPrefab);
    }
    public void red3()
    {
        b = !b;
        if (b)
            Instantiate(RedPrefab, spawnPos[2].transform.position, Quaternion.identity);
        else
            Destroy(RedPrefab);
    }
    public void red4()
    {
        b = !b;
        if (b)
            Instantiate(RedPrefab, spawnPos[3].transform.position, Quaternion.identity);
        else
            Destroy(RedPrefab);
    }
    public void red5()
    {
        b = !b;
        if (b)
            Instantiate(RedPrefab, spawnPos[4].transform.position, Quaternion.identity);
        else
            Destroy(RedPrefab);
    }
    public void red6()
    {
        b = !b;
        if (b)
            Instantiate(RedPrefab, spawnPos[5].transform.position, Quaternion.identity);
        else
            Destroy(RedPrefab);
    }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2021, 08:25
Ответы с готовыми решениями:

Спавн объекта в координатах pivot point другого объекта
Привет, помогите новичку плиз) Как через код узнать pivot спрайта? Хочу в этой точке заспавнить предмет. Добавлено через 32...

Спавн 2D обьекта в заданных координатах
Помогите новичку, как написать код чтобы 2д обьект появлялся в заданных координатах. Спасибо.

Как сделать невидимым консольное окно в программе, вызывающей диалог?
Простая тестовая программа#include <Windows.h> int main(int argc, char* argv) { MessageBox(NULL, "Окно", "Заголовок...

1
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
12.06.2021, 09:26
Лучший ответ Сообщение было отмечено CoolYet как решение

Решение

Добавьте этот скрипт на удобный объект в сцене.
Заполните в инспекторе три массива с данными в одинаковом порядке по цветам. Например массив префабов - красный, жёлтый, зелёный, значит и массив точек спавна в таком же порядке (по цвету). А так же массив кнопок.

Кнопкам больше не надо назначать никаких методов на Click. Скрипт автоматически всё создаст.

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
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
    public GameObject[] ColoredPrefabs; // цветные префабы
 
    public GameObject[] SpawnPositions; // позиции спавна префабов
    public Button[] ColoredButtons;     // цветные кнопки
 
 
 
    private GameObject[] _existingObjects;
 
    private void Start()
    {
        _existingObjects = new GameObject[ColoredPrefabs.Length];
 
        for (int i = 0; i < ColoredButtons.Length; i++)
        {
            int index = i;
            ColoredButtons[i].onClick.AddListener(() => ButtonClick(index));
        }
    }
 
    public void ButtonClick(int index)
    {
 
        if (_existingObjects[index] == null)
        {
            _existingObjects[index] = Instantiate(ColoredPrefabs[index], SpawnPositions[index].transform.position, Quaternion.identity);
        }
        else
        {
            Destroy(_existingObjects[index]);
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2021, 09:26
Помогаю со студенческими работами здесь

Не знаю как сделать спавн объектов
Не могу придумать как сделать спавн объектов по точкам, так чтобы они не спавнились друг на друге, с редкостью чтобы коробки спавнились...

спавн объекта
есть такой вопрос. У меня есть игрок, который всегда двигается вправо, это 2д игра. и мне нужно сделать так, что бы при нажатии на клавишу...

Спавн объекта
Хочу сделать скрипт, для спавна объекта по нажатию мыши в координатах нахождения мыши. А проблема в том, что я не понимаю перевод экранных...

Как "снять" текст с вызывающей кнопки?
Пишу оконное приложение калькулятор. Ясно, что кнопки с цифрами ведут себя одинаково, поэтому есть смысл написать один метод для всех. В...

Как сделать спавн объектов разного размера?
Есть префаб, этот префаб это камета, от камет надо уварачиваться, нужно сделать, так чтобы они спавнились разного размера. Есть вот такой...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 09.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 31.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru