Creare Videogiochi - Game Developer
Strumenti di selezione dell'inventario - Versione stampabile

+- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi)
+-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia)
+--- Forum: Richieste di Aiuto per Unity 3D (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-Unity-3D)
+--- Discussione: Strumenti di selezione dell'inventario (/thread-Strumenti-di-selezione-dell-inventario)



Strumenti di selezione dell'inventario - 93sunderland - 09-05-2016

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?


RE: Strumenti di selezione dell'inventario - 93sunderland - 10-05-2016

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.


RE: Strumenti di selezione dell'inventario - 93sunderland - 11-05-2016

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 ();
    }
}



RE: Strumenti di selezione dell'inventario - 93sunderland - 11-05-2016

Risolto Big Grin