je cherche depuis quelques à jour à développer un menu de sélection de personnages.
J'ai pour le moment réussi à coder la phase de pré-sélection des personnages avec leur attribution à un joueur.
Mais rencontre des soucis lors de l'instance des images dans le menu.
J'aimerai que lorsque j'utilise " Instantiate(nomdelimage, transform.position, transform.rotation ); " l'image soit directement instancié dans mon canvas et (si possible) encore mieux : dans mon panel.
Pour mieux comprendre :
Lorsque je clique sur un personnage(image) ( dans le panel "sélection des personnages" ) je voudrai que celui-ci soit cloné dans le panel (personnages sélectionnés). Or pour l'instant l'image est cloné direct dans la hiérarchie sans objets parents (et donc ne s'affiche pas)Vous me suivez ?
Voici le code que j'utilise :
Code : Tout sélectionner
public GameObject hero1j1;
void Start()
{
hero1j1.GetComponent<Image>();
}
public void InstanceHero1j1()
{
Debug.Log("Hero 1 est joueur 1(1j1)");
Instantiate(hero1j1, transform.position, transform.rotation );
}
J'utilise 2 scripts pour l'instant, dans le premier sont présentes toutes mes variables, le second est lié directement au canvas et traite en partie les boutons (cliquer sur un perso).
Les scripts complets :
Le premier
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class guicontrol : MonoBehaviour
{
public bool hero1;
public bool hero2;
public bool joueur1;
public bool joueur2;
public bool joueur1s;
public bool joueur2s;
public GameObject hero1j1;
void Start()
{
joueur1s = false;
joueur2s = false;
hero1 = false;
hero2 = false;
hero1j1.GetComponent<Image>();
}
public void InstanceHero1()
{
Debug.Log("Hero 1 selectionné");
}
public void InstanceHero1j1()
{
Debug.Log("Entant que joueur 1(1j1)");
Instantiate(hero1j1, transform.position, transform.rotation );
}
public void InstanceHero1j2()
{
Debug.Log("Entant que joueur 2(1j2)");
}
public void InstanceHero2()
{
Debug.Log("Hero 2 selectionné");
}
public void InstanceHero2j1()
{
Debug.Log("Entant que joueur 1(2j1)");
}
public void InstanceHero2j2()
{
Debug.Log("Entant que joueur 2(2j2)");
}
}
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class guicontrole : guicontrol // Herite de guicontrol
{
// Phase de Selection des personnages
public void Hero1Selection()
{
if (joueur1s == false) // Première selection, donc on lui assigne joueur 1 par défaut.
{
hero1 = true; // Hero 1 est validé
joueur1s = true; // Joueur 1 selectionné
InstanceHero1(); // Fonction D'instance du hero IG
InstanceHero1j1();// Fonction d'instance du hero entant que j1
return;
}
if (joueur2s == false && joueur1s == true) // Utilisé si le joueur 1 a déjà été assigné et que le joueur 2 est dispo
{
hero1 = true;
joueur2s = true; // Le joueur 2 est donc selectionné
InstanceHero1();
InstanceHero1j2();
return;
}
if (joueur2s == true && joueur1s == true) // Si le nombre de selection de joueur est atteind
{
Debug.Log("nbre hero max atteind");
}
}
public void Hero2Selection()
{
if (joueur1s == false)
{
hero2 = true;
joueur1s = true;
InstanceHero2();
InstanceHero2j1();
return;
}
if (joueur2s == false && joueur1s == true)
{
hero2 = true;
joueur2s = true;
InstanceHero2();
InstanceHero2j2();
return;
}
if (joueur2s == true && joueur1s == true)
{
Debug.Log("nbre hero max atteind");
}
}
}
En vous remerciant