Обращение к переменной дочернего объекта.
Здравствуйте. Снова мучаю свой тетрис и никак не могу понять в чём ошибка. На этот раз моя проблема в сообщении скриптов. Скрипт привязанный к кубу фигуры (CubeController) должен изменять переменную скрипта привязанного к самой фигуре (FigureController), предупреждать его о препятствиях.
Я испробовал много способов но самый действенный этот:
public class CubeController : MonoBehaviour 
{
	
	void FixedUpdate()
	{
		transform.parent.GetComponent<FigureController>().rightWall = true; //Предупредим родителя о препятствии справа
	}
	
}
Но проблема в том, что, не смотря на то, что все кубы одинаковы (префаб) и на них одинаковые скрипты, работает из них только один. Вся фигура уходит за край, пока работающий куб в него не упрётся. Если удалить работающий кубик, то начнёт работать один из оставшихся. И мне кажется что это странно - почему бы им не работать всем одновременно?
Помогите мне закончить этот проект, пожалуйста.
:)

Лучший ответ:
Возможно порядок вызова отрабатывает не правильно. Я бы сделал немного иначе. Внутри фигуры запрашивал бы данные от кубов.
	var cubeComponents = GetChildrenComponents<CubComponent>(); // получаем список дочерних компонентов типа CubeComponent
	var isRightCollision = cubeComponents.Any(cube => cube.isRight); // проверяем у каждого флаг isRight и если хотя бы у одного стоит, то возврашаем true
	// .. остальные действия



Просмотров: 1 071

alexprey #1 - 2 года назад (отредактировано ) 1

Возможно порядок вызова отрабатывает не правильно. Я бы сделал немного иначе. Внутри фигуры запрашивал бы данные от кубов.
	var cubeComponents = GetChildrenComponents<CubComponent>(); // получаем список дочерних компонентов типа CubeComponent
	var isRightCollision = cubeComponents.Any(cube => cube.isRight); // проверяем у каждого флаг isRight и если хотя бы у одного стоит, то возврашаем true
	// .. остальные действия
Mangysta #2 - 2 года назад 0
alexprey:
Читал про обращение к компонентам, но не смог до конца разобраться. Вас не затруднит закомментировать строчки?