Почему в скрипте он не находит MainCamera? - PullRequest
0 голосов
/ 27 апреля 2020
interactionObjectPickupLocation = thePlayer.transform.Find("MainCamera/ObjectPickupLocation").gameObject;

Основная камера здесь: и проигрыватель является FPEPlayerController

FPEPlayerController

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

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

interactionObjectPickupLocation = thePlayer.transform.Find("mixamorig:Hips/mixamorig:Spine/mixamorig:Spine1/mixamorig:Spine2/mixamorig:Neck/mixamorig:Head/mixamorig:HeadTop_End/MainCamera/ObjectPickupLocation").gameObject;
1 голос
/ 27 апреля 2020

Если ваша основная камера действительно основная камера (помечена MainCamera), то вы можете просто использовать поле Camera.main для получения основной камеры.

Так что вы можете просто попробовать

Camera.main.transform.Find("ObjectPickupLocation");

Я предлагаю вам вызывать эту функцию только один раз, потому что и Camera.main, и Transform.Find() довольно медленные. Одним из способов является кэширование этого в Start(), например:

private GameObject pickupLocaion;

private void Start()
{
    pickupLocation = Camera.main.transform.Find("ObjectPickupLocation");
}

На самом деле лучший способ - просто дать ссылку через инспектора, например:

[SerializeField]
private GameObject objectPickupLocation;

Конечно, там это ситуация, когда вы не можете этого сделать, но я почти уверен (ну, не каждый ), что ситуация, в которой вы должны использовать этот способ, вызвана ошибкой проектирования.

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