Pour les scripts écrits en Javascript (UnityScript).
Obsolète
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
-
cortoh
- Messages : 159
- Inscription : 22 Nov 2014 23:05
Message
par cortoh » 21 Mars 2015 09:50
Bonjour,
Pour vérifier une variable d'un autre script j'ai suivi les instructions trouvés sur ce forum
viewtopic.php?f=7&t=3653#p22274 mais rien y fait ça ne fonctionne pas, y a t-il une méthode autre mis à part une Static bien sûr ?
Je me suis basé sur cet exemple de code trouvé sur ce forum.
Code : Tout sélectionner
var monScriptB : ScriptB;
function Start()
{
monScriptB = GameObject.Find("ObjetB").GetComponent("ScriptB");
}
function Update()
{
print("valeur: " + monScriptB.maVariable);
}
-
LudlowFx
- Messages : 1367
- Inscription : 19 Sep 2013 05:50
Message
par LudlowFx » 21 Mars 2015 09:59
Code : Tout sélectionner
private MaClassB maClassB;
private void Start()
{
maClassB = new MaClassB();
}
private void Example()
{
Debug.Log(maClassB.uneValeurDistantePublic);
}
Après si la class distante est de type scriptableObject il veut mieux préférer CreateInstance...
-
cortoh
- Messages : 159
- Inscription : 22 Nov 2014 23:05
Message
par cortoh » 21 Mars 2015 22:52
Bonjour LudlowFx,
Alors c'est déjà beaucoup mieux, j'arrive désormais à lire la variable "action", cela dit il apparaît un problème c'est que la variable "action" est modifié pendant le Update le temps qu'un objet bouge en fait, et donc pendant l'action la variable n'est plus captée !?
J'ai également ce message d'avertissement, je ne sais pas si c'est en relation ?:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
MoveBloc1:.ctor() (at Assets/Scripts/MoveBloc1.js:1)
SelecCube:Start() (at Assets/Scripts/SelecCube.js:16)
-
giyomuSan
- Messages : 1799
- Inscription : 09 Déc 2009 14:52
- Localisation : Japon
Message
par giyomuSan » 22 Mars 2015 04:59
Si ton script est dans la scene sur un object , n'utilise pas "new Monscript", car ce que tu fais la c instancier le script et pas recuperer l'instance du script dans la scene.
Si tu veux recuperer la reference d'un script sur un objet dans la scene Utilise GetComponent<MonScript>().taVariable.
Si ca marche pas c'est que tu te trompe quelque part pour cibler l 'object dans la scene qui contient le script ( le plus souvent c'est ca ).
-
LudlowFx
- Messages : 1367
- Inscription : 19 Sep 2013 05:50
Message
par LudlowFx » 22 Mars 2015 05:33
giyomuSan a écrit :Si ton script est dans la scene sur un object , n'utilise pas "new Monscript", car ce que tu fais la c instancier le script et pas recuperer l'instance du script dans la scene.
En effet autant pour moi, à force bosser sur les EditorWindow je n'ai pas pensé à ce détail en répondant
-
cortoh
- Messages : 159
- Inscription : 22 Nov 2014 23:05
Message
par cortoh » 23 Mars 2015 07:20
Dommage que les statics ne soit pas recommandées, c'est tellement plus rapide, Merci à vous pour votre aide.
-
F@B
- Messages : 1844
- Inscription : 01 Août 2013 10:41
-
Contact :
Message
par F@B » 23 Mars 2015 10:04
c'est pas plus rapide une Static, c'est que ça ne sert pas du tout a la même chose!!! si tu met une Static lorsque tu modifieras ta valeur elle se modifiera pour toutes les instances qui ont le component!
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ
Merci de lire et de prendre en considération
la Nétiquette des Forums avant de poster un sujet !
-
cortoh
- Messages : 159
- Inscription : 22 Nov 2014 23:05
Message
par cortoh » 23 Mars 2015 21:10
Tout fonctionne correctement mais concernant le message d'avertissement il faut le zappé ou voir à le corrigé ?
Message d'avertissement:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
SelecCube:.ctor() (at Assets/Scripts/SelecCube.js:1)
MoveBloc1:Start() (at Assets/Scripts/MoveBloc1.js:21)
-
LudlowFx
- Messages : 1367
- Inscription : 19 Sep 2013 05:50
Message
par LudlowFx » 23 Mars 2015 21:43
cortoh a écrit :Tout fonctionne correctement mais concernant le message d'avertissement il faut le zappé ou voir à le corrigé ?
Message d'avertissement:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
SelecCube:.ctor() (at Assets/Scripts/SelecCube.js:1)
MoveBloc1:Start() (at Assets/Scripts/MoveBloc1.js:21)
Il serait bien de ne pas lire les réponses à son propre sujet de travers. Surtout que giyomuSan, et seulement cinq messages au dessus explique pourquoi...
Et par ailleurs ta question est vraiment osé. Demander si un programmeur doit zapper un message d'avertissement ou le corriger
-
ZJP
- Messages : 5748
- Inscription : 15 Déc 2009 06:00
Message
par ZJP » 24 Mars 2015 00:13
LudlowFx a écrit :
Et par ailleurs ta question est vraiment osé. Demander si un programmeur doit zapper un message d'avertissement ou le corriger
La Next (New?!) Gen. Pas assez "puissante" donc ça rabote...