ArgumentException: GetComponent требует, чтобы запрошенный компонент GameObject был производным от MonoBehaviour или Component, или был интерфейсом. - PullRequest
0 голосов
/ 03 мая 2020

Я попытался создать систему, чтобы она анализировала всех детей данного родителя и на основе одного из активных детей решала, какие у этого ребенка права и права:

        Vector3 camF = new Vector3(0,0,0);
        Vector3 camR = new Vector3(0,0,0);
        //Assign active camera to current cam.
        GameObject[] cameras = GetComponentsInChildren<GameObject>();
        foreach (GameObject currentCam in cameras)
        {
            if (currentCam.activeInHierarchy)
            {
                camF = currentCam.transform.forward;
                camR = currentCam.transform.right;
            }
        }

Пока игра загружается, я не могу переместить своего персонажа и продолжаю получать это сообщение об ошибке:

ArgumentException: GetComponent requires that the requested component 'GameObject' derives from MonoBehaviour or Component or is an interface.
UnityEngine.GameObject.GetComponentsInChildren[T] (System.Boolean includeInactive) (at <58a34b0a618d424bb5fc18bb9bcdac20>:0)
UnityEngine.Component.GetComponentsInChildren[T] (System.Boolean includeInactive) (at <58a34b0a618d424bb5fc18bb9bcdac20>:0)
UnityEngine.Component.GetComponentsInChildren[T] () (at <58a34b0a618d424bb5fc18bb9bcdac20>:0)
PerspectiveControls.Update () (at Assets/Scripts/Character/PerspectiveControls.cs:32)

1 Ответ

1 голос
/ 03 мая 2020

Проблема в том, что вы используете GetComponent метод, но GameObject не является компонентом. С другой стороны, преобразование содержит все дочерние элементы. Итак, чтобы получить дочерние Transforms, вы можете использовать это:

foreach (Transform child in transform)

И чтобы добраться до GameObject, вы можете сделать это:

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