- Home /
How to find a transform with name in prefab
Title says what i mean. I need to find a certain transform. Just take a look at my script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyAI : MonoBehaviour {
public Transform Player; //Cant connect player to prefab it wont work and my script realize on spawning in the object wich has this script attached to it wich is a prefab.
void Start()
{
}
void Update () {
transform.GetComponent<UnityEngine.AI.NavMeshAgent>().destination = Player.position; //Cant do this because the script is connected to a prefab! It wont allow me to add a player to it
}
}
I need the "Player.position" to be something like FindObjectWithTag("Player"); , but i dont know how to do that. Anyone have any clue how to do this?
Answer by Lost_Syndicate · Feb 07, 2018 at 12:40 AM
Found out how. Here is how i did it.
GameObject.FindWithTag("Player").transform.position;
Answer by URself · Feb 07, 2018 at 12:48 AM
There are multiple solutions to your problem
Place the EnemyAI in the scene, that way you can add reference to Player Gameobject in the scene.
If the Player gameobject has a script of type say "Player", then you could try (LH is the transform Player here ) Player = Object.FindObjectOfType(typeof(Player)).gameObject.Transform;
You could create a static reference or Singleton like GameManager, this would then have the reference to the Player and then the Player tranform could be updated accordingly
Additional Tip: For the solution 2 and 3 you dont have to have reference to be Public* , also for the solution 1 you could use serializable attribute and the Public keyword is not needed any more