Je suis a l'épisode 18 et j'ai un problème dans mon script en voulant mettre un System d’amélioration en place:
Voici le fichier BuildManager
Code : Tout sélectionner
using UnityEngine;
public class BuildManager : MonoBehaviour
{
#region Singleton
public static BuildManager instance;
private void Awake()
{
if (instance != null)
{
Debug.LogError("il y a deja un BuildManager dans la scène !");
return;
}
instance = this;
}
#endregion
public GameObject standardTurretPrefab;
public GameObject missileLauncherPrefab;
public GameObject buildEffect;
private TurretBP turretToBuild;
private Node selectedNode;
//true suis on peut construire sur l'emplacement
public bool canBuild{get { return turretToBuild != null; }}
public bool haveMoney { get { return PlayerStats.money >= turretToBuild.cost; } }
public void buildTurretOn(Node node)
{
if (PlayerStats.money < turretToBuild.cost)
{
Debug.Log("Pas assez d'argent pour cette article");
return;
}
PlayerStats.money -= turretToBuild.cost;
GameObject turret = (GameObject)Instantiate(turretToBuild.prefab, node.getBuildPosition(), Quaternion.identity);
node.turret = turret;
GameObject effect = (GameObject)Instantiate(buildEffect, node.getBuildPosition(), Quaternion.identity);
Destroy(effect, 1.5f);
Debug.Log("L'objet a été acheté, il vous reste " + PlayerStats.money);
}
public void SelectTurretToBuild(TurretBP turret)
{
turretToBuild = turret;
selectedNode = null;
}
public void SelectNode(Node node)
{
selectedNode = node;
turretToBuild = null;
}
}
Voici le fichier Node
Code : Tout sélectionner
using UnityEngine.EventSystems;
using UnityEngine;
public class Node : MonoBehaviour
{
public GameObject turret;
public Vector3 positionOffset;
public Color hoverColor;
private Color startColor;
public Color CantBuildColor;
private Renderer rend;
private BuildManager buildManager;
private void Start()
{
rend = GetComponent<Renderer>();
startColor = rend.material.color;
buildManager = BuildManager.instance;
}
public Vector3 getBuildPosition()
{
return transform.position + positionOffset;
}
private void OnMouseDown()
{
if (EventSystem.current.IsPointerOverGameObject())
{
return;
}
if (turret != null)
{
BuildManager.SelectNode(this);
return;
}
if (!buildManager.canBuild)
{
return;
}
buildManager.buildTurretOn(this);
}
private void OnMouseEnter()
{
if(!buildManager.canBuild|| EventSystem.current.IsPointerOverGameObject())
{
return;
}
if (buildManager.haveMoney)
{
rend.material.color = hoverColor;
}
else
{
rend.material.color = CantBuildColor;
}
}
private void OnMouseExit()
{
rend.material.color = startColor;
}
}
Je n'est pas suivit les 3 épisode sur l'ajout de la tourelle laser et je me demande si ce n'est pas dut a ça, mais je ne pense pas car mon code me parait quand même bon.
Merci de m'aider car je vous avoue que ça fait 2 jour que j'essaye de résoudre l’erreur en vains