Creare Videogiochi - Game Developer

Versione completa: Strumenti di selezione dell'inventario
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Ora che ho capito come creare un inventario sto cercando di creare uno script che permetta di cliccare uno slot e di far apparire una finestra di selezione (ovviamente solo quando lo slot è pieno). Per adesso sto solo cercando di far funzionare il void OnPointerClick

Codice:
using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections;
using System;

public class ItemActions : MonoBehaviour, IPointerClickHandler {

    public Item items;

    private Inventory_ToolTip tool;

    private GameObject tooltip;

    void Start ()
    {
        tool = GetComponent<Inventory_ToolTip> ();
        tooltip = GameObject.Find ("InvActions");
    }

    void Update ()
    {
    
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        if (tooltip.activeSelf == false)
        {
            tool.Activate (items);
        }
        else
        {
            tool.Deactivate ();
        }
    }
}

purtroppo non funziona: lo script è attaccato al prefab dell'icona dello slot, quindi una volta aperto l'inventario si dovrebbe avere la possibilità di cliccarci sopra, ma questo non avviene

per caso nello script c'è qualcosa di errato? se no, allora cosa potrebbe essere?
Codice:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Inventory_ToolTip : MonoBehaviour {

    private string nameData;

    public Item item;
    private GameObject tooltip;

    void Start ()
    {
        tooltip = GameObject.Find ("InvActions");
        tooltip.SetActive (false);
    }

    void Update ()
    {
    
    }

    public void Toggle(Item item)
    {
        if (tooltip.activeSelf == false)
        {
            this.item = item;
            tooltip.SetActive (true);
            DataString ();
        }
        else
        {
            tooltip.SetActive (false);
        }
    }

    public void DataString ()
    {
        nameData = item.Name;
        tooltip.transform.GetChild (0).GetComponent<Text> ().text = nameData;
    }
}

Questo è il nuovo script che adesso funziona parzialmente, infatti lo ho fatto in modo che, dopo aver premuto il tasto, spunti una casella di testo... il testo dovrebbe essere nameData, e cosi è, tuttavia quando devo uguagliare nameData = item.Name, dove item.Name richiama il nome dell'oggetto, allora la casella di testo non avrà il testo nameData, ma quello di default.
Ho capito che il problema sia in questo script, ma non ho capito cosa c'è che non va:

Codice:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
using System;

public class SelectionTool : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler {

    public Item item;

    private Inventory_ToolTip invTool;

    private Inventory_System inv;

    void Start ()
    {
        inv = GameObject.Find ("Inventory").GetComponent<Inventory_System> ();
        invTool = inv.GetComponent<Inventory_ToolTip> ();
    }

    void Update ()
    {
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        invTool.ActionsToggle (item);
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        invTool.ShowName (item);
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        invTool.HideName ();
    }
}
Risolto Big Grin