Creare Videogiochi - Game Developer
Script cambio immagine - 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: Script cambio immagine (/thread-Script-cambio-immagine)



Script cambio immagine - Aconeron - 06-12-2015

Ciao a tutti.
Sarò veloce, in pratica al cambio dell'arma, di cui si occuperà uno script esterno o comunque lo integrerò dopo, ho bisogno che appaia un'immagine a seconda dell'arma utilizzata.
L'unico problema è che non so come fare! Vi giuro ho provato di tutto, aiutatemi voi, è urgente.
Questo è il codice che per adesso stavo facendo, anche se manca di un po' di roba ditemi solo come si fa questo switch di immagini, al resto ci penso io!
Codice:
using UnityEngine;
using System.Collections;

public class ChangeGun3 : MonoBehaviour
{

    public Texture textureArma;

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
          
        }

    }

    void OnGUI()
    {
        GUILayout.BeginArea(new Rect(700, 100, 500, 500));
        GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma, ScaleMode.ScaleToFit, true);
        GUILayout.EndArea();
    }
}



RE: Script cambio immagine - Zettamax - 07-12-2015

Ciao, io per un problema simile al tuo avevo utilizzato gli sprite che definivo con:

public Sprite nome_sprite1;
public Sprite nome_sprite2;
public Sprite nome_sprite3;

che poi cambiavo con il comando:

GameObject.Find ("nome").GetComponentInChildren<Image> ().sprite = nome_sprite1;

Dove al posto di "nome" metterai il nome del gameobject (es. se si chiama arma metterai GameObject.Find ("arma") ).
Gli sprite gli inserirai dall'inspector di unity.
Ricordati di controllare che le immagini siano definite come sprite.(clicca sull'immagine importata, nell'inspector ci sarà la voce "Texture Type" con a fianco un menu a tendina dove selezionerai "Sprite 2D and UI")

Spero di esserti stato d'aiuto, in caso non esitare a chiedere!Smile


RE: Script cambio immagine - Aconeron - 07-12-2015

(07-12-2015, 11:04 AM)Zettamax Ha scritto: Ciao, io per un problema simile al tuo avevo utilizzato gli sprite che definivo con:

public Sprite nome_sprite1;
public Sprite nome_sprite2;
public Sprite nome_sprite3;

che poi cambiavo con il comando:

GameObject.Find ("nome").GetComponentInChildren<Image> ().sprite = nome_sprite1;

Dove al posto di "nome" metterai il nome del gameobject (es. se si chiama arma metterai GameObject.Find ("arma") ).
Gli sprite gli inserirai dall'inspector di unity.
Ricordati di controllare che le immagini siano definite come sprite.(clicca sull'immagine importata, nell'inspector ci sarà la voce "Texture Type" con a fianco un menu a tendina dove selezionerai "Sprite 2D and UI")

Spero di esserti stato d'aiuto, in caso non esitare a chiedere!Smile

Grazie per la risposta ma non capisco, in che punto dello schermo compaiono le immagini? e quale gameobject devo inserire?


RE: Script cambio immagine - Zettamax - 07-12-2015

Mi sono dimenticato di dirti che io utilizzo il nuovo sistema di UI di unity.
Nel tuo caso credo che sia più facile fare così:
Definisci le immagini delle armi come hai definito la prima ovvero(in questo caso ho fatto per 3 armi ma se tu ne hai di più ne definirai di più):

public Texture textureArma1;
public Texture textureArma1;
public Texture textureArma1;

poi definisci una variabile int:

int arma =1;

poi nella funzione OnGUI() metti:

GUILayout.BeginArea(new Rect(700, 100, 500, 500));
if(arma = 1)
{
GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma1, ScaleMode.ScaleToFit, true);
}
if(arma = 2)
{
GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma2, ScaleMode.ScaleToFit, true);
}
if(arma = 3)
{
GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma3, ScaleMode.ScaleToFit, true);
}
GUILayout.EndArea();

mentre nella funzione Update metti:

if (Input.GetKeyDown(KeyCode.Alpha3))
{
if(arma = 3) //qui come valore metti il numero massimo di armi da switchare
{
arma = 1;
}
else
{
arma +=1;
}
}

Spero di esserti stato d'aiuto Smile


RE: Script cambio immagine - Aconeron - 07-12-2015

(07-12-2015, 08:13 PM)Zettamax Ha scritto: Mi sono dimenticato di dirti che io utilizzo il nuovo sistema di UI di unity.
Nel tuo caso credo che sia più facile fare così:
Definisci le immagini delle armi come hai definito la prima ovvero(in questo caso ho fatto per 3 armi ma se tu ne hai di più ne definirai di più):

public Texture textureArma1;
public Texture textureArma1;
public Texture textureArma1;

poi definisci una variabile int:

int arma =1;

poi nella funzione OnGUI() metti:

GUILayout.BeginArea(new Rect(700, 100, 500, 500));
if(arma = 1)
{
GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma1, ScaleMode.ScaleToFit, true);
}
if(arma = 2)
{
GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma2, ScaleMode.ScaleToFit, true);
}
if(arma = 3)
{
GUI.DrawTexture(new Rect(10, 10, 100, 100), textureArma3, ScaleMode.ScaleToFit, true);
}
GUILayout.EndArea();

mentre nella funzione Update metti:

if (Input.GetKeyDown(KeyCode.Alpha3))
{
if(arma = 3) //qui come valore metti il numero massimo di armi da switchare
{
arma = 1;
}
else
{
arma +=1;
}
}

Spero di esserti stato d'aiuto Smile

Ommio dio era così semplice? Non ci credo. Grazie Grazie Grazie!!