Возвращение значения к родителю родительского объекта - PullRequest
0 голосов
/ 29 апреля 2020

enter image description here

Я должен создавать экземпляры дочерних объектов во время выполнения, и эти объекты также создают свои собственные дочерние объекты:

Существует объект A, который содержит скрипт, который создает префабы "i" B внутри своего OnEnable (). Каждый объект B содержит скрипт, который также создает префабы "j" C внутри OnEnable (). Каждый из C объектов содержит кнопку и скрипт - идея состоит в том, чтобы нажать указанную кнопку и, в результате, отправить значение в пределах заданного C [j] объекту A.

Зная, что ни один из C содержат ссылку на своего прародителя (объект A) или родителя (объект B [i]), и ни один из B не содержит ссылку на своего родителя (объект A) - есть ли способ передать значение типа из заданного C [j] в A без использования ScriptableObjects?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Давайте предположим, что А - ваш игрок, и в нем есть переменная здоровья. Тогда скажем, C ваш миньон. Поэтому, когда один из ваших миньонов умирает, ваше общее здоровье игрока должно уменьшаться.

На основе этого примера лучшее решение - иметь ссылку на переменную здоровья в C.

Другое решение может быть задана переменная здоровья stati c или функция stati c, которая может изменить значение здоровья. Так что вы можете добраться до него из любого места.

0 голосов
/ 29 апреля 2020

Не уверен на 100%, что я понимаю, что вы подразумеваете под «скриптами», но если мы говорим о компонентах MonoBehaviour, прикрепленных к GameObjects в иерархии объектов, то вы можете сделать что-то подобное изнутри C:

transform.root.GetComponent<A>.someFunction(this.value_to_pass_from_C_to_A)

Если мы не говорим о компонентах, прикрепленных к GameObjects, то вы можете рассмотреть возможность генерации c# событий из C объектов и сделать так, чтобы ваши объекты A подписывались на них. Или вы можете передать функцию обратного вызова из A в B, когда A создает экземпляр B, а затем ту же самую функцию из B в C, когда B создает C. C может вызвать эту функцию, когда хочет передать объект обратно в A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...