Good evening, everyone.
I’m stuck with a problem, let’s see if you can help me.
As you can see I’m making a game, in which you have to manage supplies and resources, advance in your planet and improve it, both in resources and creating defenses and attack. In it, I want to simplify the code as much as possible, making that from the same manager, I can control each element of it, obviously, differentiating each section of each planet, that is to say, if it belongs to resources (mines and warehouses. If it belongs to defences, to the defences, etc.). Honestly, I have never done something like this, I would like to know what you think about it, if you see it right or if it is better to do it in another way. My idea is that with this script, I can manage all the resources in this script, adding all the resources I want.
But I’m stuck and my problem is that I have upgrade buttons, in almost all the resources, stores, etc. My problem is that I want to recognise, which button is being pressed, if it belongs to a stone store, to a food mine, since you share script, that’s my main problem. I give you the code so you can have a look at it. I am Spanish, in case you find it hard to read the translated text. If you have any doubt, please let me know. Thanks in advance!
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class CaracteristicasMinas : MonoBehaviour
{
public Mejora mejora;
public GameObject panelSeguro;
public TextMeshProUGUI panelMejora;
public string strin;
[System.Serializable]
public class Minas
{
public Sprite image;
public string nombre;
public Button button;
public float produccion, almacen, multi;
public bool mejora;
public int habitantes, mejorasuma, nMejora;
public TextMeshProUGUI panelTexto;
public InputField cntHabitantes;
public List<Mejora> mejorarMina = new List<Mejora>();
public GameObject panelInfo;
}
[System.Serializable]
public class Mejora
{
public List<int> materiales;
}
public List<Minas> recursos = new List<Minas>();
public void FuncionamientoMinas()
{
for (var i = 0; i < recursos.Count; i++)
{
recursos[i].habitantes = int.Parse(recursos[i].cntHabitantes.text);
recursos[i].produccion = recursos[i].produccion + (recursos[i].multi * recursos[i].habitantes);
recursos[i].produccion = Mathf.Ceil(recursos[i].produccion);
recursos[i].panelTexto.text = recursos[i].produccion.ToString();
if(recursos[i].produccion > 10000 && recursos[i].produccion < 1000000)
{
recursos[i].panelTexto.text = Mathf.Round(recursos[i].produccion / 1000).ToString()+"K";
}
if (recursos[i].produccion > 1000000)
{
recursos[i].panelTexto.text = Mathf.Round(recursos[i].produccion / 1000000).ToString() + "M";
}
if (recursos[i].almacen < recursos[i].produccion)
{
recursos[i].produccion = recursos[i].almacen;
recursos[i].panelTexto.color = Color.red;
recursos[i].panelTexto.text = recursos[i].produccion.ToString();
}
/* if (recursos[i].produccion <= recursos[i].subMejoras[recursos[i].mejorasuma])
{
recursos[i].botonMejora.interactable = false;
}
else
recursos[i].botonMejora.interactable = true;*/
/* if (recursos[i].produccion >= recursos[i].subMejoras[recursos[i].mejorasuma] && recursos[i].mejora == true)
{
recursos[i].produccion = recursos[i].produccion - recursos[i].subMejoras[recursos[i].mejorasuma];
recursos[i].mejorasuma = recursos[i].mejorasuma + 1;
recursos[i].mejora = false;
}*/
}
}
public void PanelMejorar()
{
panelSeguro.SetActive(true);
//EventSystem.current.currentSelectedGameObject.gameObject.transform.parent.name;
/* for (var i = 0; recursos[i].button.i; i++)
{
// if (recursos[i].button.GetComponent<Button>().onClick == true)
//panelMejora.text = "¿Quieres mejorar por " + recursos[recursos[1].nMejora].mejorarMina[recursos[i].nMejora].materiales[recursos[i].nMejora].ToString() + "?";
//PROBAR ESTO
usando UnityEngine ;
usando System.Collections ;
utilizando UnityEngine.EventSystems ;
public class MyButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
public bool buttonPressed ;
public void OnPointerDown ( PointerEventData eventData ) {
buttonPressed = verdadero ;
}
public void OnPointerUp ( PointerEventData eventData ) {
buttonPressed = falso ;
}
}
}*/
}
public void setupBtn()
{
for (var i = 0; i < recursos.Count; i++)
{
string param = "bar";
// recursos[i].button.GetComponent<Button>().onClick.AddListener(delegate {btnClicked(param); });
}
}
public void btnClicked()
{
Debug.Log(EventSystem.current.currentSelectedGameObject.name);
}
public void CancelarMejor()
{
panelSeguro.SetActive(false);
}
public void mejorarBoton()
{
for (var i = 0; i < recursos.Count; i++)
{
recursos[i].mejora = true;
}
}
public void infoBoton()
{
for (var i = 0; i < recursos.Count; i++)
{
recursos[i].panelInfo.SetActive(true);
}
}
}
