Cita de: juanma_teso date=1495811414La clase List implementa un método que busca en todos los elementos con las condiciones que tú definas, en otras palabras tu objeto Mezcla tiene una función que busca en todas las listaMezclaClas la que coincida con las condiciones que quieras, esto lo hace haciendo uso de un predicado, un predicado es un tipo de delegado que es como una función que creas para buscar en la lista.
Depende de lo que quieras lograr puedes buscar por elementos que tiene listaMezclaClas o puedes buscar de los 20 elementos los que tengas:
//Busca todos los elementos que contengan "Carbon"
List<listaMezclaClas> primerFiltro = Mezcla.FindAll( x=> x.compBase == "Carbon" || x.compExtra == "Carbon");
//Busca en los elementos que tienen carbon los elementos que contengan "Azufre"
List<listaMezclaClas> segundoFiltro = primerFiltro.FindAll ( x=> x.compBase == "Azufre" || x.compExtra == "Azufre");
//Puedes hacerlo una última vez con la opción "PocionX"
De esta forma puedes crear en tu trigger una función que busca los objetos que tienes y si con los objetos que tienes hay alguna opción o más de una posible simplemente la devuelve, el problema es que si tienes muchos objetos diferentes puedes tener muchas combinaciones, por esto estaría bien que comenzaras por el más restrictivo, por ejemplo si tienes 10 compBase pero solo 4 pociones, busca siempre primero las pociones que tengas.
Igual hay otra forma menos complicada de hacerlo pero así es como yo lo haría. Suerte!
gracias por tu respuesta, ya encontre un sistema parecido, pero m elo guardo como alternativa, gracias de verdad.
Cita de: kingtrase date=1495810844puedes usar lambda:
ListaMesclas lm = Mezcla.Find(o => o.comBase == "nombreObjeto");
//recogera de tu lista la que en comBase tenga "x objeto".
//donde 'o' es una variable de tipo ListaMesclas.
...
o como tu lo quieras usar, esta es una forma de acceso rapido a listas o diccionarios.
-> En una Lista puedes acceder desde un indice de tipo int=> lista[index].propertie...
-> En un diccionario cambia la cosa, si lo declaras con un Key de tipo string puedes acceder al diccionario de esta forma=>
Dictionary<string,string> d = new Dictionary<string,string>();
d.Add("key1","value1");
d.Add("key2","value2");
d["key1"] = "nuevo valor";
puedes buscar referencia sobre lambda o System.Collection.Generic (es el nombre de espacio de List y Dictionary) en internet.
Un Saludo.
si, encontre algo parecido, gracias por el comentario.
Cita de: James Roman date=1495766166no necesitas usar diccionarios en el script imagino que lo que quires hacer es una espcie de sistema de crafting, podrias añadir lo siguiente
public class Inventario
{
public List<string> items;
public List<listaMescla> mezcla;
void OnTriggerEnter(Collider other)
{
for(int n = ; n < mezcla.Count ; n++)
{
if(items.Contains(mezcla[n].compBase) && items.Contains(mezcla[n].compExtra) && items.Contains(mezcla[n].catalizador))
{
Debug.log("El jugador posee los ingrediendes para craftear " + mezcla[n].nombre);
}
}
}
}
gracias por tu respuesta, encontre otro sistema mas principiante, jajaja, pero me inetresa este sistema, loq ue no me queda claro es como declaras que un objeto tiene x xompoennets, seria en listamezca tal como lo tenia?
gracias.