Вы пытаетесь получить дочернего элемента hitObject
, например, hitObject.transform.GetChild(0)
, но что, если hitObject
не имеет дочернего элемента, ваша программа выдаст null exception
, поэтому сначала вы должны проверить, чтоВы хотите получить доступ, а затем получить к нему доступ.например:
public void SetHitObjectToActive(GameObject hitObject)
{
if(hitObject.transform.childCount>0){
GameObjectchild = child hitObject.transform.GetChild(0);
if(GameObjectchild.childCount>0 ){
GameObjectchild.GetChild(0).gameObject.SetActive (true);}
}
}
но в целом я думаю, что лучше сначала проверить, является ли объект, с которым вы столкнулись, правильным объектом, а после этого убедиться, что вы делаете то, что хотите
для этого вы можете использовать tags
или names
или layers
, сначала, если вы хотите использовать теги, затем назначьте тег для объекта, который вы хотите указать, например, враг
if (Physics.Raycast (ray, out hit)) {
if( hit.collider.gameObject.tag == "enemy" )
{
SetHitObjectToActive (hit.collider.gameObject);
}
}