[RESOLU][JS]Incrémentation dans une boucle

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Hoslety
Messages : 25
Inscription : 11 Juin 2015 00:27

[RESOLU][JS]Incrémentation dans une boucle

Message par Hoslety » 23 Juil 2015 02:54

Bonjour,
Ceci n'est pas tres évident de donné les informations dans le sujet ;)

Voiçi mon probleme lorsque j ouvre mon inventaire cela crée toute une série de boutons en fonction du NB de slot voulu:
Jusque la aucun soucis....

Par contre j ai un probleme pour identifier les slots...
J'aimerais que le 1er slots soit le N° 1 seconde 2 3eme 3 etc

Voiçi mon code actuel

Code : Tout sélectionner

				for(var y = 0; y < 5; y++)
				{
					for(var x = 0; x < 5 ; x++)
					{
						for(var j = 0; j < 5 ; j++)
							{
							if(GUI.Button(Rect(12.5 + (55*x),25 + (50*j), 50, 50), "" + Inventory[y].name))
								{
									if(ClickLeft == true)
										{
											//equipe l objet a son emplacements
											if(Inventory[y].typeOfEquipe == Inventory[x].typeOfEquipe.Pantalon)
												{
													if(EquipeMenu[0] == null)
													{								
														EquipeMenu[0] = Inventory[y];
														Inventory.RemoveAt(y);
													}
													else
													{
														Inventory.Add(EquipeMenu[0]);
														EquipeMenu[0] = Inventory[y];
														Inventory.RemoveAt(y);
													}
												}
											else if(Inventory[y].typeOfEquipe == Inventory[x+j].typeOfEquipe.Veste)
												{
													if(EquipeMenu[1] == null)
													{
														EquipeMenu[1] = Inventory[y];
														Inventory.RemoveAt(y);
														InventorySlotIsEmpty ();
													}
													else
													{
														Inventory.Add(EquipeMenu[1]);
														EquipeMenu[1] = Inventory[y];
														Inventory.RemoveAt(y);
														InventorySlotIsEmpty ();
													}
												}
											else if(Inventory[y].typeOfEquipe == Inventory[y].typeOfEquipe.Chaussures)
												{
													if(EquipeMenu[2] == null)
													{								
														EquipeMenu[2] = Inventory[y];
														Inventory.RemoveAt(y);
														InventorySlotIsEmpty ();
													}
													else
													{
														Inventory.Add(EquipeMenu[2]);
														EquipeMenu[2] = Inventory[y];
														Inventory.RemoveAt(y);
														InventorySlotIsEmpty ();
													}
												}
										}
									if(ClickRight == true)
										{
											Debug.Log("affiche un menu pour" + Inventory[y].name); //todo
										}

								}
							}
					}
				}
Le probleme actuel est que j'ai fais une nouvelle boucle mais ceci crée de nouveau slots au dessu des autres... Logique effectivement.
J'ai voulus testé avec une incrémentation ... Probleme nous somme dans un OnGUI donc constament mis a jours

J'ai voulu testé avec :

Code : Tout sélectionner

					for(var x = 0; x < 5 ; x++)
					{
					if(CanCreateSlots == true && NbSlotsCreate !=NbSlots)
						{
						NbSlotsCreate++;
						for(var j = 0; j < 5 ; j++)
							{
							if(GUI.Button(Rect(12.5 + (55*x),25 + (50*j), 50, 50), "" + Inventory[NbSlotsCreate].name))
								{
									if(ClickLeft == true)
										{
											//equipe l objet a son emplacements
											if(Inventory[NbSlotsCreate].typeOfEquipe == Inventory[x].typeOfEquipe.Pantalon)
												{
													if(EquipeMenu[0] == null)
													{								
														EquipeMenu[0] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
													else
													{
														Inventory.Add(EquipeMenu[0]);
														EquipeMenu[0] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
												}
											else if(Inventory[NbSlotsCreate].typeOfEquipe == Inventory[NbSlotsCreate].typeOfEquipe.Veste)
												{
													if(EquipeMenu[1] == null)
													{
														EquipeMenu[1] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
													else
													{
														Inventory.Add(EquipeMenu[1]);
														EquipeMenu[1] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
												}
											else if(Inventory[NbSlotsCreate].typeOfEquipe == Inventory[NbSlotsCreate].typeOfEquipe.Chaussures)
												{
													if(EquipeMenu[2] == null)
													{								
														EquipeMenu[2] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
													else
													{
														Inventory.Add(EquipeMenu[2]);
														EquipeMenu[2] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
												}
										}
									if(ClickRight == true)
										{
											Debug.Log("affiche un menu pour" + Inventory[NbSlotsCreate].name); //todo
										}

								}
							}
						}
					}
mais la le probleme c est qu'une foi que mon if n est plus ok il supprime tout...

et avec :

Code : Tout sélectionner

					for(var x = 0; x < 5 ; x++)
					{
					if(CanCreateSlots == true && NbSlotsCreate !=NbSlots)
						{
						NbSlotsCreate++;
						for(var j = 0; j < 5 ; j++)
							{
							if(GUI.Button(Rect(12.5 + (55*x),25 + (50*j), 50, 50), "" + Inventory[NbSlotsCreate].name))
								{
									if(ClickLeft == true)
										{
											//equipe l objet a son emplacements
											if(Inventory[NbSlotsCreate].typeOfEquipe == Inventory[x].typeOfEquipe.Pantalon)
												{
													if(EquipeMenu[0] == null)
													{								
														EquipeMenu[0] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
													else
													{
														Inventory.Add(EquipeMenu[0]);
														EquipeMenu[0] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
												}
											else if(Inventory[NbSlotsCreate].typeOfEquipe == Inventory[NbSlotsCreate].typeOfEquipe.Veste)
												{
													if(EquipeMenu[1] == null)
													{
														EquipeMenu[1] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
													else
													{
														Inventory.Add(EquipeMenu[1]);
														EquipeMenu[1] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
												}
											else if(Inventory[NbSlotsCreate].typeOfEquipe == Inventory[NbSlotsCreate].typeOfEquipe.Chaussures)
												{
													if(EquipeMenu[2] == null)
													{								
														EquipeMenu[2] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
													else
													{
														Inventory.Add(EquipeMenu[2]);
														EquipeMenu[2] = Inventory[NbSlotsCreate];
														Inventory.RemoveAt(NbSlotsCreate);
													}
												}
										}
									if(ClickRight == true)
										{
											Debug.Log("affiche un menu pour" + Inventory[NbSlotsCreate].name); //todo
										}

								}
							}
						}
					else
						{
							NbSlotsCreate = 0;
						}
					}
la j'ai ma dernière ligne qui s affiche disparaît puis recommence ... du a la régénération je suppose....

Merci de votre aide
Dernière édition par Hoslety le 30 Juil 2015 03:41, édité 1 fois.

Hoslety
Messages : 25
Inscription : 11 Juin 2015 00:27

Re: [JS]systeme d inventaire position de l objet dans l inv

Message par Hoslety » 30 Juil 2015 03:40

Petit up car le problème est résolu ...
Je devais juste faire une petite formule qui me donnais un emplacement différent selon les lignes...

J explique :
avant

Code : Tout sélectionner

if(GUI.Button(Rect(12.5 + (55*x),25 + (50*j), 50, 50), "" + Inventory[y].name))
apres

Code : Tout sélectionner

if(GUI.Button(Rect(12.5 + (55*x),25 + (50*y), 50, 50), "" +  Inventory[(y*ColsCount)+x].name))
ainsi que inverser les

Code : Tout sélectionner

				
for(var x = 0; x < ColsCount ; x++)

for(var y = 0; y < RowCount ; y++)
En detaile:
L item est séléctionné suivant ce calcule:
(Y*Le nombre de colone) + x

Si besoin de plus d explication vous pouvez toujours me contacter :)

ps: je viens d édité le titre qui semble plus correcte en cas de recherche dans le forum...
Je ne le trouve pas vraiment adéquat mais bon..

Répondre

Revenir vers « Scripting »