Jump to content
UnitySpain
kalm97

Quiero crear una lista de objetos buscables

Recommended Posts

Muy buenas tengo una duda sencilla quiero crear como un buscador que cuando ponga una palabra el sistema busque a ver si esta existente y si existe que haga una acción esto tengo al momento 

using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class Sistema : MonoBehaviour
{
    public void Start()
    {
        Items();
    }

    public void Items()
    {
        List<string> items = new List<string>();
        items.Add("Obj1"); ---------------------------------------Los objetos son palabras q aun no defino
        items.Add("Obj2"); ---------------------------------------

        foreach (string learn in items)
        {
            Debug.Log(learn);
            
        }
    }
}

como aria para hacer que digamos en un texto en el programa ponga Obj1 y diga existe y cuando ponga Obj3 diga no existe

o en ves de pones existe o no existe que haga una acción cualquiera------- y por ultimo como pregunta secundaria hay una forma mas sencilla para el código es que voy a utilizar muchas palabras 

Share this post


Link to post
Share on other sites

Ya mas o menos lo tengo pero ahora tengo un error que sabia solucionar pero no me acuerdo tengo esto

using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class Sistema : MonoBehaviour
{

    public List<string> items = new List<string>();
    public List<string> HowMuchThinksYouHave = new List<string>();

    public string WritedItem;
    public bool WritedItemIs = false;
    void Start()
    {
        Items();
    }

    void Update()
    {
        if(WritedItem == "")
        {
            WritedItemIs = false;
        }
        else
        {
            WritedItemIs = true;
        }
        if (Input.GetKey(KeyCode.Space) && WritedItemIs)
        {
            HowMuchThinksYouHave.Add(WritedItem);
            WritedItem = "";
        }

        foreach(string on in items)
        {

            if (WritedItem == on)
            {

            }
        }
        
    }

    void Items()
    {
        items.Add("Obj1");
        items.Add("Obj2");

    }
}

 

lo que esta pintado de rojo es el problema, esque cuando aplico el espacio por la velocidad de los frames me sale como 4 obj1 o obj2 a la vez como ago para que solo sea uno

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites
using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class Sistema : MonoBehaviour
{

    public List<string> items = new List<string>();
    public List<string> HowMuchThinksYouHave = new List<string>();

    public string WritedItem;
    public string YouCanDo;
    public bool WritedItemIs = false;

    public bool touched = false;

    public bool can;
    void Start()
    {
        Items();
    }

    void Update()
    {
        if(WritedItem == "")
        {
            WritedItemIs = false;
        }
        else
        {
            WritedItemIs = true;
        }

        if (touched && WritedItemIs && can)
        {
            HowMuchThinksYouHave.Add(WritedItem);
            WritedItem = "";
            touched = false;
        }

        CompliteItem();
    }

    void Items()
    {
        items.Add("Obj1");
        items.Add("Obj2");

    }
    public void CompliteItem()
    {
        foreach (string on in HowMuchThinksYouHave)
        {

            if (on == "Obj1" && on == "Obj2")
            {
                YouCanDo = "Obj3";
            }
        }
    }
}

 

ultima pregunta ya termine, esto es solo por añadido, en la parte ultima estoy utilizando mal el código foreach como hago que lo que estoy intentando hacer sirva, osea identificar objetos o palabras dentro de la lista y si las palabras existen diga en el YouCanDo el obj que se puede hacer en este caso Obj3.???? 

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;


public class Sistema : MonoBehaviour
{

        List<string> items = new List<string>();
    public void Start()
    {
        Items();
    }

    public void Items()
    {
        items.Add("Obj1"); ---------------------------------------Los objetos son palabras q aun no defino
        items.Add("Obj2"); ---------------------------------------

        foreach (string learn in items)
        {
            Debug.Log(learn);
            
        }
    }

    public bool BuscarPalabra(string palabras){

        return items.Contains(palabras)

    }


}

así lo haría yo, hago la lista items global, y luego con el método buscar verifico si tengo la palabra

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites

no entiendo lo que me quieres decir, con todo ahora tengo un error que me saca de quicio y es de la misma cosa tengo esto

using System.Collections.Generic;
using UnityEngine;


public class Sistema : MonoBehaviour
{

    public List<string> items = new List<string>();

    public List<string> HowMuchThinksYouHave = new List<string>();
    public List<int> HowMuchThinksYouCanDo = new List<int>();

    public string WritedItem;
    public string YouCanDo;
    public string txtt;

    
    public bool WritedItemIs = false;

    public bool touched = false;

    public bool dubletouched = false;


    void Start()
    {
        Items();
    }

    void Update()
    {
        if(WritedItem == "")
        {
            WritedItemIs = false;
        }
        else
        {
            WritedItemIs = true;
        }
        if (touched && WritedItemIs)
        {
            HowMuchThinksYouHave.Add(WritedItem);
            touched = false;
        }
        
        if (dubletouched)
        {

            ItemforDo();
            learnItems();
            //dubletouched = false;
            

        }

    }

    void Items()
    {
        items.Add("arroz");
        items.Add("atun");
        items.Add("pasta");
        items.Add("fideo");
        items.Add("zanahoria");
        items.Add("pimiento");
        items.Add("col");
        items.Add("huevo");
        items.Add("piña");
        items.Add("cerveza");
        items.Add("a");
        items.Add("b");
    }

    public void ItemforDo()
    {
        if (dubletouched)
        {
                foreach (string A in HowMuchThinksYouHave)
                {
                    foreach (string B in HowMuchThinksYouHave)
                    {
                        foreach (string C in HowMuchThinksYouHave)
                        {
                            foreach (string D in HowMuchThinksYouHave)
                            {
                                foreach (string E in HowMuchThinksYouHave)
                                {
                                    if (A == "a" && B == "b")
                                    {
                                        HowMuchThinksYouCanDo.Add(1);
                                    }

                                    if (A == "b")
                                    {
                                        HowMuchThinksYouCanDo.Add(2);
                                    }
                                dubletouched = false;

                            }
                            }
                        }
                    }
                }
            
        }
    }
    public void learnItems()
    {

        foreach (int learn in HowMuchThinksYouCanDo)
        {

            if (learn == 1)
            {
                txtt += "papa";
            }

        }
    }

}

 

tengo múltiples errores que vienen de lo mismo, al aplicar todo se repite 30 veces cuando pongo que tengo "a" y "b"  y busco que puedo hacer me sale pero todo sale repetido muchas veces porfavor ayudenme

Edited by pioj
Por favor, usa el <> para pegar el código. Ya es la 3ª vez en este post que te lo tengo que hacer...

Share this post


Link to post
Share on other sites

Antes yo siempre recomendaba aprender programacion antes de querer programar un videojuego ... pero como me di cuenta que eso era una ofensa (no entiendo porque pero bueno), en vez de eso te recomendaria que no aprendas programacion pero si que como minimo aprendas como funcionan las funciones que mas se utilizan.

Teniendo en cuenta que la funcion Update se utiliza en el 99.9999% de los scripts, no estaria mal que por lo menos te informaras sobre esta funcion (para que se utiliza, y sobretodo cada cuanto tiempo se ejecuta) y tal vez asi veas porque se produce ese "error" que mencionas. Suerte.

Share this post


Link to post
Share on other sites
hace 7 horas, Arthure said:

Antes yo siempre recomendaba aprender programacion antes de querer programar un videojuego ... pero como me di cuenta que eso era una ofensa (no entiendo porque pero bueno), en vez de eso te recomendaria que no aprendas programacion pero si que como minimo aprendas como funcionan las funciones que mas se utilizan.

Teniendo en cuenta que la funcion Update se utiliza en el 99.9999% de los scripts, no estaria mal que por lo menos te informaras sobre esta funcion (para que se utiliza, y sobretodo cada cuanto tiempo se ejecuta) y tal vez asi veas porque se produce ese "error" que mencionas. Suerte.

Respecto a esto, yo recomiendo lo que hacía Arthure antes. Aprende a programar antes de querer crear un juego, y si no te gusta programar búscate otro campo. 

 

@Arthure A la gente le molesta la manera en el que le hablas, no lo que le dices. 

Share this post


Link to post
Share on other sites

@leocub58 en la frase "antes de querer programar un videojuego, siempre recomiendo aprender programacion y empezar por lo mas basico" (es la frase que mas he escrito en este foro) donde ves las formas de decirlo que puedan molestar ? No pone ningun insulto, ofensa o cualquier palabra mal sonante, es un consejo que si quieres lo tomas y si no lo dejas y encima es algo que de sentido comun ... otra cosa es que para decir eso hubiera llamado tonto a alguien por no saber programar, pero no es el caso.

Lo anterior es solo una pregunta a modo de reflexion, no espera contestacion (mas que nada para no abrir un debate en este hilo) ... pero tengo la seguridad, aunque es posible que me equivoque, que lo que ofende no es la forma si no el hecho de que alguien te diga que deberias molestarte en aprender programacion empezando por las cosas mas basicas y no por la programacion de videojuegos directamente sin tener una minima base. Somos asi las personas, queremos las cosas sin esfuerzo y cuando nos dan un consejo el cual no queremos aceptarlo ... en lugar de pasar del susodicho consejo, somos mas propensos a ofendernos (hay una diferencia bastante clara entre consejo y orden).

No obstante, y para tranquilidad en el foro hace mucho que deje de aconsejar en segun que casos que deberian aprender programacion (siempre como consejo, porque contra mas desarrolladores indies mejor) ... en este caso no le he aconsejado que aprenda programacion, si no que se moleste solo en buscar informacion sobre el funcionamiento de la funcion Update y vera porque se produce el "error" que comenta.

Un cordial saludo

Share this post


Link to post
Share on other sites

×
×
  • Create New...