Page 1 sur 1

[RÉSOLU]Prefab -> Objet : problème d'attribution d'un script

Publié : 24 Mars 2020 18:22
par Bilu
Bonjour,

Mon problème est assez simple à comprendre mais j'ai du mal à le solutionner :
Quand le personnage (shipPlayer_1) de mon jeu est un prefab, je ne peux pas lui attribuer un script dans la case entourée en rouge :

Image

Lorsque je run, un script fait spawn mon personnage qui est alors maintenant un objet (si j'ai bien compris) et je peux lui attribuer le script que je désir
Image

Mais du coup, je clique sur pause et je lui attribue en cliquant sur le petit rond et je sélectionne le script en question.
Qu'est ce que je dois faire pour que cela se fasse tout seul ? c'est-à-dire que le script lui soit attribué dès que mon personnage spawn ?
Est-il possible de recréer la hiérarchie que j'ai fait avec
EnergyBar
->BackGround ( qui représente le cadre de ma barre d’énergie)
->Bar(qui représente la barre d’énergie même)
->->BarSprite
en tant que prefab ? De cettte façon je pourrai attribuer le script "EnergyBar" à mon shipPlayer_1 (prefab) et en spawnant le personnage aura le script attribué ?


Voici une image de "Project" et" hierarchy" avant et après le lancement du jeu

Image
Image

Bien à vous,

Bilu

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 24 Mars 2020 18:28
par djulio74
Je pense que tu ne peux pas parce que c'est un préfab justement, et non un objet.
En mode édit, tu devrai glisser ton préfab dans la scène, qui sera du coup un objet, lui assigner le script et ensuite en refaire un préfab.

Si ça ne fonctionne pas, tu devrais renseigner un variable script dans ton script qui instantie ton préfab, et modifier ce script pour qu'une foi instantié, il ajoute au player le script dans la variable souhaité.

Je suis peut être pas très clair, la journée à été longue déjà, lol

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 24 Mars 2020 19:54
par Bilu
Bonjour djulio74,
Si ça ne fonctionne pas, tu devrais renseigner un variable script dans ton script qui instantie ton préfab, et modifier ce script pour qu'une foi instantié, il ajoute au player le script dans la variable souhaité.
C'est justerment cela que j'aimerai faire mais je ne vois pas comment. Pourrais tu m'aider ?

Bien à toi,

Bilu

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 24 Mars 2020 23:47
par jmhoubre
Bonsoir,
si tu met ton joueur (le prefab donc) sur la scène, tu peux (clic droit) choisir de "casser" ton prefab (Unpack). Tu devrais alors pourvoir affecter le script au joueur (un simple objet désormais), et une fois l'opération réalisée, en refaire un prefab.

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 25 Mars 2020 17:23
par Bilu
Bonjour,

@jmhoubre, manqué ! Cela n'a pas fonctionné. Une fois redevenu un prefab le script se dissocie.
J'y croyais un peu quand même :P

Quelqu'un a une autre solution ?

Bilu

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 25 Mars 2020 17:33
par boubouk50
Les prefabs sont hors-scène, donc ne peuvent interagir avec quoi que ce soit de la scène. Une fois Instancié dans la scène alors il a accès à la scène, ce n'est pas plus un asset mais un gameObject.
Tu as plusieurs solutions: (je considère EnergyBar dans la scène)
- Lors de l'Instanciation, les scripts monobehaviour de l'instance vont se lancer (si actifs), c’est à dire Awake, Start, Update, etc. Dans l'Awake par exemple, tu peux récupérer ton EnergyBar de la scène. A toi de voir comment tu procèdes (tag, lien, scriptableObjetc, Component, etc)
- Utiliser les scriptableObjects. Un SO peut être référencé par plusieurs objets, ce qui permet un partage de données entre objets sans qu'ils se connaissent.

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 27 Mars 2020 12:16
par Bilu
boubouk50 a écrit :
25 Mars 2020 17:33
Les prefabs sont hors-scène, donc ne peuvent interagir avec quoi que ce soit de la scène. Une fois Instancié dans la scène alors il a accès à la scène, ce n'est pas plus un asset mais un gameObject.
Tu as plusieurs solutions: (je considère EnergyBar dans la scène)
- Lors de l'Instanciation, les scripts monobehaviour de l'instance vont se lancer (si actifs), c’est à dire Awake, Start, Update, etc. Dans l'Awake par exemple, tu peux récupérer ton EnergyBar de la scène. A toi de voir comment tu procèdes (tag, lien, scriptableObjetc, Component, etc)
- Utiliser les scriptableObjects. Un SO peut être référencé par plusieurs objets, ce qui permet un partage de données entre objets sans qu'ils se connaissent.
Très bien Merci.
Vous auriez des bon tuto sur le sujet ?

Je reviendrai pour mettre la solution dès que je l'aurai

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 27 Mars 2020 12:52
par boubouk50
Je n'ai rien à te proposer, ces infos sont surtout issues de la compréhension du fonctionnement d'Unity.
Mis à part la documentation ou les learns Unity, il te faudra chercher ton bonheur sans mon aide.

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 27 Mars 2020 12:53
par boubouk50
Je n'ai rien à te proposer, ces infos sont surtout issues de la compréhension du fonctionnement d'Unity.
Mis à part la documentation ou les learns Unity, il te faudra chercher ton bonheur sans mon aide.

Tu peux consulter ce post pour avoir quelques liens utiles également.

Re: Prefab -> Objet : problème d'attribution d'un script

Publié : 27 Mars 2020 13:30
par Bilu
Merci boubouk50 :super: