- Home /
Can't click or highlight a button.
I follow brackeys tutorial ON how to make a Tower Defense game in unity E19,However when I hit play the buttons are highlightable for a second and after you they won't and can't select them.These are my scripts: NodeUI:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class NodeUISript : MonoBehaviour {
private Node target;
public GameObject uii;
public void SetTarget(Node _target){
target = _target;
transform.position = target.GetBuildPosition ();
uii.SetActive (true);
}
public void Hide(){
uii.SetActive (false);
}
public void Upgrade(){
target.UpgradeTurret ();
BuildManager.instance.DeselectNode ();
}
}
Node Code: using UnityEngine; using UnityEngine.EventSystems;
public class Node : MonoBehaviour {
public Color hoverColor;
public Vector3 positionOffset;
public Color NotEnoughMoneyColor;
[Header("Optional")]
public GameObject turret;
public TowerLoopScript towerloopscript;
[HideInInspector]
public bool isUpgraded = false;
private Renderer rend;
private Color startColor;
BuildManager buildManager;
void Start ()
{
rend = GetComponent<Renderer>();
startColor = rend.material.color;
buildManager = BuildManager.instance;
}
public Vector3 GetBuildPosition ()
{
return transform.position + positionOffset;
}
void OnMouseDown ()
{
if (turret != null)
{
buildManager.SelectNode(this);
return;
}
if (!buildManager.CanBuild)
return;
BuildTurret (buildManager.GetTurretToBuild());
}
void BuildTurret (TowerLoopScript blueprint){
if (PlayerStats.Money < blueprint.Cost) {
Debug.Log("Not enought Money");
return;
}
PlayerStats.Money -= blueprint.Cost;
Destroy (turret);
GameObject _turret = (GameObject)Instantiate(blueprint.Prefab, GetBuildPosition(), Quaternion.identity);
turret = _turret;
towerloopscript = blueprint;
GameObject effect = (GameObject)Instantiate(buildManager.BuildEffect,GetBuildPosition(), Quaternion.identity);
Destroy (effect, 4f);
isUpgraded = true;
Debug.Log ("Turret Build! Money Left:" + PlayerStats.Money);
}
void OnMouseEnter ()
{
if (!buildManager.CanBuild)
return;
if (buildManager.HasMoney)
rend.material.color = hoverColor;
else {
rend.material.color = NotEnoughMoneyColor;
}
}
public void UpgradeTurret(){
if (PlayerStats.Money < towerloopscript.upgradeCost) {
Debug.Log("Not upgrade Money");
return;
}
PlayerStats.Money -= towerloopscript.upgradeCost;
Destroy (turret);
GameObject _turret = (GameObject)Instantiate(towerloopscript.upgradedPrefab, GetBuildPosition(), Quaternion.identity);
turret = _turret;
GameObject effect = (GameObject)Instantiate(buildManager.BuildEffect,GetBuildPosition(), Quaternion.identity);
Destroy (effect, 4f);
isUpgraded = true;
Debug.Log ("Turret Upgarded! Money Left:" + PlayerStats.Money);
}
void OnMouseExit ()
{
rend.material.color = startColor;
}
}
Comment