Equivalence délégué multicast C# pour javascript

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
detoubetx
Messages : 2
Inscription : 31 Oct 2016 13:11

Equivalence délégué multicast C# pour javascript

Message par detoubetx » 31 Oct 2016 13:54

Hello à tous,

J'ai récupéré une librairie de particules sur l'asset store codé en C#, mon projet est en JS.
Le problème vient d'une ligne de code totalement isotérique pour moi et cherche un coup de main pour l'adapter en JS.
Cette ligne retourne le nom du GameObject touché par des particules instanciées.

Code : Tout sélectionner

effectSettings.CollisionEnter += (n, e) => { if(e.Hit.transform!=null) Debug.Log(e.Hit.transform.name); };
Réécrite de façon plus lisible et dans son contexte C# ça donne :

Code : Tout sélectionner

 
  private void InstanceEffect(Vector3 pos)
  {
    currentGo = Instantiate(Prefabs[current], pos, Prefabs[current].transform.rotation) as GameObject;
    effectSettings = currentGo.GetComponent<EffectSettings>();
    // ligne réécrite que je cherche à adapter en JS, un délégué multicast apparemment
    effectSettings.CollisionEnter += CollisionEnterEvent ; 
  }

void CollisionEnterEvent(object sender, CollisionInfo e)
 {
	if (e.Hit.transform != null) Debug.Log("object name is " + e.Hit.transform.name);
	else Debug.Log("Projectile flew 'moveDistance'");
}
J'ai contacté le dev du package sans succès. En utilisant la méthode OnParticleCollision cela fonctionne au détriment d'une grosse modification de mes assets... ça c'est fini par un gros foutoir :(

Si le C# et le JS inspire quelqu'un passant par là, je suis preneur de toute aide car je cale sérieux sur ce coup T_T

Un grand merci par avance. ++

Ci dessous le code JS :

Code : Tout sélectionner

var tmp : GameObject = Instantiate(effect[0],transform.position,transform.rotation);
var scriptEffectSettings : EffectSettings = tmp.GetComponent("EffectSettings");
 scriptEffectSettings.CollisionEnter = // là je cale T_T

Avatar de l’utilisateur
Titan
Messages : 582
Inscription : 12 Sep 2011 13:54
Contact :

Re: Equivalence délégué multicast C# pour javascript

Message par Titan » 07 Nov 2016 19:20

Avec une semaine de retard,
tu n'a pas d'event built-in avec unityscript tel que tu les retrouve en C#. Il est possible de reproduire ce comportement avec un tableau ou tu défini tes fonction, tu t'inscris en ajoutant ta fonction au tableau, tu te désinscris en la supprimant et tu "déclenche ton event" en appelant toutes les fonction du tableau. C'est certainement ce que fait le compilateur C#.

Encore une preuve que commencer en apprenant unityscript est une perte de temps, autant se lancer directement avec le C#. Maintenant tu n'a pas besoin de convertir un plugin en C#, les deux langages peuvent coexister dans ton projet tant que les références ne se font que dans un sens
____________________________________________
Hop Boy

Répondre

Revenir vers « Scripting »