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

Использование одного скрипта для множества объектов с изменением параметров только данного объекта

28.06.2024, 13:19. Показов 351. Ответов 2

Студворк — интернет-сервис помощи студентам
У меня есть префаб, состоящий из родительского и дочернего объекта (платформа и триггер для нее). На родительском объекте у меня висит скрипт SC_Parent, на дочернем - SC_Child.
При вхождении в триггер я проверяю в родительском скрипте значение логической переменной дочернего объекта и на основании этого изменяю цвет родительского объекта. То есть, я в родительском скрипте я пишу конструкцию SC_Child.(имя_логической_переменной).
Но у меня таких объектов на сцене из префабов сотня, и вхождение в триггер одного объекта изменяет переменную SC_Child.(имя_логической_переменной) для всех объектов на сцене, и при этом скрипт срабатывает сразу на всех экземплярах.
Можно, конечно же, на каждый экземпляр префаба ставить свой именованный скрипт, но это было бы очень долго. Как можно в таком случае использовать один и тот же скрипт (или два) на всех объектах, чтобы изменялись переменные только на том объекте, в триггер которого я вхожу? Есть предположение, что в скрипте на родительском нужно получать доступ к дочернему объекту и к его переменной, но как это можно сделать?
В качестве примера мой неправильный код:
Родительский объект
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SC_Parent : MonoBehaviour
{
    Renderer renderer1;
    void Start()
    {
        renderer1 = GetComponent<Renderer>();
    }
    void Update()
    {
        if (SC_Child.isTrigger == true)
        renderer1.material.color = Color.red;
        if (SC_Child.isTrigger == false)
        renderer1.material.color = Color.white;
    }    
}
Дочерний
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public class SC_Child : MonoBehaviour
{
    public  static bool isTrigger = false;
 
    void OnTriggerEnter(Collider oter)
    {
        isTrigger = true;
    }
    void OnTriggerExit(Collider other)
    {
        isTrigger = false;
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.06.2024, 13:19
Ответы с готовыми решениями:

Создание объекта. Использование объектов в программе. Создание объектов в модулях для программы. Использование объектов
я не могу понять как строить конструктор Создать собственный объект и использовать его в программе. Объект - квадрат. 1. Свойства -...

Свойство объекта в виде массива char заполняется только для одного объекта
Есть два свойства: одно - string, второе - массив char. Если начать заполнять их двум и более объектам, то char заполняется только для...

Задать метод события для множества объектов одного класса
Здравствуйте! Вынужден обратиться к опытным людям за советом. Имеется форма, на которой есть 60 label'ов. Необходимо, чтобы при событии...

2
399 / 308 / 104
Регистрация: 07.05.2017
Сообщений: 2,209
28.06.2024, 17:50
Лучший ответ Сообщение было отмечено iostatTree как решение

Решение

нужно менять не material, а sharedmaterial (материал именно этого объекта, а не того, что лежит в проекте и применен ко всем этим объектам).
Цитата Сообщение от iostatTree Посмотреть сообщение
В качестве примера мой неправильный код:
с кодом вроде все в порядке )

Добавлено через 5 минут
хотя в плане композиции, я бы коллайдер вешал бы на самого родителя и не усложнял бы двумя скриптами с жесткой привязкой, избавившись от лишнего апдейта (ведь триггер - своего рода подобие апдейта, только с другой более узкой задачей).
но это уже детали того, как у тебя все устроено. не обращай внимания на это особо. возможно это необходимость.
1
0 / 0 / 0
Регистрация: 12.02.2024
Сообщений: 4
28.06.2024, 18:34  [ТС]
Спасибо. Установка двух коллайдеров на объекте решает мою проблему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2024, 18:34
Помогаю со студенческими работами здесь

Использование элемента множества для доступа к массиву объекта
Работая с множествами наткнулся на данный интересный момент (комменты к коду) procedure TForm1.Button1Click; var i:...

[iFix в DeltaV] Скрипт на VBA для автоматического заполнения множества текстовых объектов значениями параметров
Доброго времени суток! Нужна помощь, т.к. в VBA очень посредственный программер. Делаю унифицированную мнемосхему в iFix, и надо что бы...

использование FindComponent в циклах для считывания/присвоения параметров существующих объектов
Прошу помочь разобраться как использовать FindComponent для обработки свойств существующих объектов в С++ Buider 2010 Задача: вывести...

Работа с list. Передача объекта из одного в другой, с изменением свойства во втором
Добрый день. Столкнулся с проблемой одной - не пойму как мне сделать так , чтоб купленный Товар принимал в себя значение КОЛИЧЕСТВА...

Передача параметров из одного скрипта в другой. С#
Есть два скрипта. В одном вызываю метод другого, но в чём-то загвоздка... Что-то с типами не так... ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru