Cannot assign variable agents for clicking a button
I have a script which auto generates some buttons and this works fine. When you click on a button the player is meant to move to the location specified by the button. However when clicking on the button nothing happens. The script that does this is:
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.UI;
public class ButtonClick : MonoBehaviour {
private GameObject marker;
private UnityEngine.AI.NavMeshAgent agent;
Vector3 destination;
public GameObject Player;
//public GameObject Floor1;
public GameObject Floor2;
//public GameObject Floor3;
//public GameObject Floor4;
public GameObject blob;
Vector3 lastpos;
Vector3 startingposition;
float Timer = 0.25f;
void Awake(){
lastpos = Player.transform.position;
startingposition = Player.transform.position;
}
void Start() {
agent = gameObject.GetComponent<UnityEngine.AI.NavMeshAgent>();
}
void Update() {
if (Player.transform.position.y < 0.9) {
Floor2.SetActive(false);
}
if (Player.transform.position.y > 0.9) {
Floor2.SetActive(true);
}
Vector3 currpos = Player.transform.position;
Timer -= Time.deltaTime;
if (Timer <= 0f) {
if ((lastpos - currpos).magnitude > 0.001) {
Spawn ();
}
Timer = 0.25f;
}
lastpos = currpos;
}
void Spawn () {
Vector3 spawnpos = Player.transform.position;
Quaternion spawnrot = Player.transform.rotation;
Instantiate (blob, spawnpos, spawnrot);
}
public void markerclick(){
var markername = EventSystem.current.currentSelectedGameObject.name;
//Debug.Log (markername);
var blobs = GameObject.FindGameObjectsWithTag ("blob");
for (var i=0;i< blobs.Length;i++){
Destroy(blobs[i]);
}
marker = GameObject.Find(markername);
destination = marker.transform.position;
//Debug.Log(destination);
agent.destination = destination;
//Debug.Log(agent.destination);
}
}
The error i get is:
UnassignedReferenceException: The variable agent of ButtonClick has not been assigned. You probably need to assign the agent variable of the ButtonClick script in the inspector. UnityEngine.AI.NavMeshAgent.set_destination (Vector3 value) (at C:/buildslave/unity/build/artifacts/generated/common/modules/AI/NavMeshAgentBindings.gen.cs:43) ButtonClick.markerclick () (at Assets/ButtonClick.cs:69) UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:153) UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:634) UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:769) UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:53) UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:35) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:44) UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:52) UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269) UnityEngine.EventSystems.EventSystem:Update()
Any ideas?
Your answer
![](https://koobas.hobune.stream/wayback/20220612105844im_/https://answers.unity.com/themes/thub/images/avi.jpg)