Я пытаюсь создать процедурно созданное подземелье в Unity.У меня есть это создание подземелья, и у меня есть сценарий, прикрепленный к каждому сборному зданию, который предназначен для создания стен, пола и т. Д. Каждый из них прикреплен к одному родителю, чтобы можно было легко удалить и перестроить все подземелье.Скрипт содержит подробности:
public class WallPrefab
{
public bool use;
private int roomId;
public WallTypes type; //enum = torch, switch, item etc
public WallDirections direction; //direction wall is facing
public GameObject myPrefab; //nested
}
В префабе также есть пустой игровой объект, используемый в качестве точки монтирования для факелов, переключателей и т. Д.
myPrefab
prefab //prefab for the actual 3d object
wallmount //empty game object to store location and rotation details
....
Мои вопросы: 1. Как мнеполучить тип стены?
int childs = transform.childCount;
for (var i = childs - 1; i >= 0; i--)
{
c = transform.GetChild(i).gameObject;
Debug.Log("child:" + c.name);
//WallTypes g = c.GetComponentInChildren<WallPrefab>().type;
WallTypes g = c.transform.GetComponentInChildren<WallSettings>().type;
(отредактировано для вставки рабочего решения этой части моей проблемы!) Этот код не работает, потому что Unity жалуется, что:
ArgumentException:GetComponent требует, чтобы запрошенный компонент «WallPrefab» был производным от MonoBehaviour или Component или являлся интерфейсом.
Как получить преобразование точки монтирования?
Я знаю, как получить местоположение и поворот, как только я получу точку монтирования, но как на самом деле получить точку монтирования?