[Résolu][DB-AL] Questions générales - Logique Unity
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
[Résolu][DB-AL] Questions générales - Logique Unity
Bonjour tout le monde !
Je cherche la réponse à ces questions depuis plusieurs jours maintenant, mais rien de concluant pour moi, je pose donc les questions ici, en espérant des retours plus clairs que ce que j'ai pu avoir jusqu'à aujourd'hui.
J'ai des questions sur la logique de Unity, par exemple :
- Si je dois constituer un niveaux de 'blocs', est ce que je dois crée une class bloc qui instantie toute seule le modèle 2D ou 3D associé ou alors je dois instantier des prefab de blocs auquel un script est attaché ?
Je commence doucement avec cette question qui en amènera d'autres ensuite !
Et si ce n'est pas clair, n'hésitez pas, je peux reformuler si besoin,
Merci d'avance !
Je cherche la réponse à ces questions depuis plusieurs jours maintenant, mais rien de concluant pour moi, je pose donc les questions ici, en espérant des retours plus clairs que ce que j'ai pu avoir jusqu'à aujourd'hui.
J'ai des questions sur la logique de Unity, par exemple :
- Si je dois constituer un niveaux de 'blocs', est ce que je dois crée une class bloc qui instantie toute seule le modèle 2D ou 3D associé ou alors je dois instantier des prefab de blocs auquel un script est attaché ?
Je commence doucement avec cette question qui en amènera d'autres ensuite !
Et si ce n'est pas clair, n'hésitez pas, je peux reformuler si besoin,
Merci d'avance !
Dernière édition par Nikow le 18 Avr 2017 08:51, édité 1 fois.
Re: [DB-AL] Questions générales - Logique Unity
Hello.
A moins d'avoir une configuration dynamique de tes GameObjects (depuis un fichier de configuration par exemple), utiliser des Prefabs me semble tout à fait approprié. C'est plus clair et plus pratique à utiliser. Tu crées ton modèle de GameObject selon tes besoins, et ensuite tu les ajoutes dynamiquement sur ta scène via un manager quelconque (un script attaché à un GameObject vide).Nikow a écrit :Si je dois constituer un niveaux de 'blocs', est ce que je dois crée une class bloc qui instantie toute seule le modèle 2D ou 3D associé ou alors je dois instantier des prefab de blocs auquel un script est attaché ?!
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Re: [DB-AL] Questions générales - Logique Unity
Drakulo a écrit :Hello.
A moins d'avoir une configuration dynamique de tes GameObjects (depuis un fichier de configuration par exemple), utiliser des Prefabs me semble tout à fait approprié. C'est plus clair et plus pratique à utiliser. Tu crées ton modèle de GameObject selon tes besoins, et ensuite tu les ajoutes dynamiquement sur ta scène via un manager quelconque (un script attaché à un GameObject vide).Nikow a écrit :Si je dois constituer un niveaux de 'blocs', est ce que je dois crée une class bloc qui instantie toute seule le modèle 2D ou 3D associé ou alors je dois instantier des prefab de blocs auquel un script est attaché ?!
Salut,
Merci de ta réponse, je vais donc utiliser une liste de prefab pour mes objets.
Un autre question : Si j'enregistre une liste comme ça :
Code : Tout sélectionner
listeBlcocs[i] = Instantiate(sols, new Vector3(0,0,0), Quaternion.identity);
Est ce que j'aurais bien le gameObject et ses propriétés dans mon tableau ?
Dernière question, j'ai l'impression de manquer d'outils de débug ?
Merci d'avance.
Re: [DB-AL] Questions générales - Logique Unity
Oui, chaque case de ton tableau sera rempli avec un lien vers le GameObjects instancié correspondant. Par contre, à moins que tu aies besoin d'en faire quelque chose après les avoir créé dynamiquement, ce n'es pas la peine de les stocker dans un tableau. Le simple fait d'appeler Instantiate va créer le GameObject sur la scène.
Pour ce qui est du debug, tu peux écrire dans la console avec ça : https://docs.unity3d.com/ScriptReference/Debug.Log.html.
Sinon, tu peux aussi utiliser l'inspecteur pour afficher des infos.
Pour ce qui est du debug, tu peux écrire dans la console avec ça : https://docs.unity3d.com/ScriptReference/Debug.Log.html.
Sinon, tu peux aussi utiliser l'inspecteur pour afficher des infos.
Dernière édition par Drakulo le 12 Avr 2017 18:00, édité 1 fois.
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Re: [DB-AL] Questions générales - Logique Unity
Ok merci c'était bien le but !Drakulo a écrit :Oui, chaque case de ton tableau sera remplie avec un lien vers le GameObjects instancié correspondant. Par contre, à moins que tu aies besoin d'en faire quelque chose après les avoir créé dynamiquement, ce n'es pas la peine de les stocker dans un tableau. Le simple fait d'appeler Instantiate va créer le GameObject sur la scène.
Pour ce qui est du debug, tu peux écrire dans la console avec ça : https://docs.unity3d.com/ScriptReference/Debug.Log.html.
Sinon, tu peux aussi utiliser l'inspecteur pour afficher des infos.
Maintenant un autre exemple :
Si j'ai besoin d'un objet avec des propriétés spécifiques, je crée une class avec toutes les propriétés dont j'ai besoin, et ensuite je dois accroché cette classe sur un prefab ? ou alors je crée des instances de cette classe dans mon code ? ( et du coup comment j instantie le prefab correspondant ) ?
Merci !
Re: [DB-AL] Questions générales - Logique Unity
Utilise au maximum les Prefabs, ils sont faits pour ça. Donc oui, crée une classe qui va avoir le comportement particulier que tu veux, tu crées un GameObject avec ce script attaché puis tu en fais un Prefab. Tu pourras ensuite l'utiliser comme bon te semble.
Fun Games Maker @TriplArt
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Coach à esprit UNITY : Finissez vos jeux, vivez de votre passion
Enseignant de programmation / Unity3D à Bellecour Ecole
Re: [DB-AL] Questions générales - Logique Unity
Hello et merci pour tes réponses c'est top !
J'ai un problème plus complexe :
J instantie dynamiquement des prefab dans une scène, ces prefab ont un script associé qui à l'aide d'un OnMouseDown doit afficher un menu, mais impossible de faire un lien entre ces prefabs instantiés dynamiquement et le canvas de ce menu ??
Merci
J'ai un problème plus complexe :
J instantie dynamiquement des prefab dans une scène, ces prefab ont un script associé qui à l'aide d'un OnMouseDown doit afficher un menu, mais impossible de faire un lien entre ces prefabs instantiés dynamiquement et le canvas de ce menu ??
Merci
Re: [DB-AL] Questions générales - Logique Unity
Hello,
Si tu instancie dynamiquement, je suppose que tu as qq part dans un script
Il te suffit a cet endroit de récupérer le script de ton prefab et de lui affecter le menu. Ce qui devrai donner qqchose du genre :
Si tu instancie dynamiquement, je suppose que tu as qq part dans un script
Code : Tout sélectionner
Instantiate(myPrefab);
Code : Tout sélectionner
GameObject myMenu;
...
myPrefabScript mps= Instantiate<myPrefabScript>(myPrefab);
mps.setMenu(myMenu);
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”
Re: [DB-AL] Questions générales - Logique Unity
Salut,
J'ai pas bien compris ta solution...
En gros j'ai ça :
Fichier 1 :
Fichier attaché à mon prefab ground :
En fait je n'arrive pas a linker mon menuConstruction dans ce script du coup j'ai cette erreur :
Object reference not set to an instance of an object ground.OnMouseDown ()
Merci de votre aide
J'ai pas bien compris ta solution...
En gros j'ai ça :
Fichier 1 :
Code : Tout sélectionner
Instantiate (ground, new Vector3 (i, 0, j), Quaternion.identity);
Code : Tout sélectionner
menuConstruction = GameObject.Find ("MainLoop").GetComponent<References> ().menuConstruction;
void OnMouseDown(){
menuConstructionVisibily = !menuConstructionVisibily;
menuConstruction.SetActive(menuConstructionVisibily);
}
Object reference not set to an instance of an object ground.OnMouseDown ()
Merci de votre aide
Re: [DB-AL] Questions générales - Logique Unity
Il faut donne la référence de ton menuConstruction à ton fichier1 et l'affecter a tes instances de ton prefab dès leur création.
Ton Fichier1 doit donc devenir :
et dans ton script rattaché a ton prefab ground
Ton Fichier1 doit donc devenir :
Code : Tout sélectionner
public class Fichier1: MonoBehaviour {
[Serializefield] private GameObject menuConstruction;
[Serializefield] private GameObject ground;
void Start() {
instantiateMyPrefab();
}
void instantiateMyPrefab() {
GroundScript myGround = Instantiate<GroundScript>(ground, new Vector3 (0, 0, 0), Quaternion.identity);
myGround.setMenu(menuConstruction);
}
}
Code : Tout sélectionner
...
private GameObject menuConstruction;
...
public void setMenu(GameObject aMenu) {
menuConstruction = aMenu;
}
void OnMouseDown(){
menuConstruction.SetActive(!menuConstruction.activeSelf);
}
}
...
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”