Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Necesito mandar llamar una funcion C# a mi JavaScript

Iniciado por ochoag, Marzo 19, 2016, 01:00:38 AM

Tema anterior - Siguiente tema

He estado intentando llamar una función de mi GameState:
 esta función:
con estas variables:
 bool _isWon;
 bool _isLost;  void Update ()
        {
            if (LevelManager.Instance.IsLevelRunning && (_isWon || _isLost))
            {
                Assert.IsTrue(LevelManager.IsActive, "Please ensure that you have a LevelManager component added to your scene.");
                Assert.IsTrue(GameOver.IsActive, "Please ensure that you have a GameOver component added to your scene, or are using one of the default GameOver prefabs.");                LevelManager.Instance.LevelFinished();
                GameOver.Instance.Show(_isWon);
            }
        }or  void Update ()
        {
            if (LevelManager.Instance.IsLevelRunning && (_isWon || _isLost))
            {
                Assert.IsTrue(LevelManager.IsActive, "Please ensure that you have a LevelManager component added to your scene.");
                Assert.IsTrue(GameOver.IsActive, "Please ensure that you have a GameOver component added to your scene, or are using one of the default GameOver prefabs.");                LevelManager.Instance.LevelFinished();
                GameOver.Instance.Show(_isLost);
            }
        }Todo para llamar que el juego se ha perdido o ganado pero en mi funcion Javascript GameState yo solo lo que quiero es agregar esto: function Update ()
{
   
    if(vida <=0)
    {
    aqui con se ha perdido
    }    if(timer <=0 && puntos >= 50)
    {
        aqui cuando se ha ganado
  
    }
    if(timer <=0 && puntos <  50)
    {
   
  aqui cuando se ha perdido
    }
    print("Puntuacion: "+puntos);
    print ("Vidas: "+vida);
   
}Alguien me puede ayudar en esa parte???...He estado investigando pero no he encontrado una solución para mi problema.

Marzo 19, 2016, 01:48:13 AM #1 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Eremyr
Si no entendi mal el problema que tienes es que estas intentando llamar una funcion de un script en UnityScript(Javascript) desde un script C#. Si eso es asi y no estoy malinterpretando tu problema. Creo que yo lo haria por SendMessage directamente ya que es una funcion que llamas una sola ves y que no generara un overhead. Si por alguna razon no te funciona llamarla por SendMessage ni tampoco por instancia, tendrias que hacer algo mas complicado y que yo no entiendo muy bien como es.Creo que en ese caso tendrias que crear una funcion static, pero como no soy un experto en ni en javascript ni en C# si con el SendMessage no te funciona mejor que alguien mas heche luz aqui.Un saludo y ojala te funcione!

[quote author=ochoag" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35429" data-ipsquote-contentcommentid="128354">
He estado intentando llamar una función de mi GameState:
 esta función:
con estas variables:
 bool _isWon;
 bool _isLost;  void Update ()
        {
            if (LevelManager.Instance.IsLevelRunning && (_isWon || _isLost))
            {
                Assert.IsTrue(LevelManager.IsActive, "Please ensure that you have a LevelManager component added to your scene.");
                Assert.IsTrue(GameOver.IsActive, "Please ensure that you have a GameOver component added to your scene, or are using one of the default GameOver prefabs.");                LevelManager.Instance.LevelFinished();
                GameOver.Instance.Show(_isWon);
            }
        }or  void Update ()
        {
            if (LevelManager.Instance.IsLevelRunning && (_isWon || _isLost))
            {
                Assert.IsTrue(LevelManager.IsActive, "Please ensure that you have a LevelManager component added to your scene.");
                Assert.IsTrue(GameOver.IsActive, "Please ensure that you have a GameOver component added to your scene, or are using one of the default GameOver prefabs.");                LevelManager.Instance.LevelFinished();
                GameOver.Instance.Show(_isLost);
            }
        }Todo para llamar que el juego se ha perdido o ganado pero en mi funcion Javascript GameState yo solo lo que quiero es agregar esto: function Update ()
{
   
    if(vida <=0)
    {
    aqui con se ha perdido
    }    if(timer <=0 && puntos >= 50)
    {
        aqui cuando se ha ganado
  
    }
    if(timer <=0 && puntos <  50)
    {
   
  aqui cuando se ha perdido
    }
    print("Puntuacion: "+puntos);
    print ("Vidas: "+vida);
   
}Alguien me puede ayudar en esa parte???...He estado investigando pero no he encontrado una solución para mi problema.[/quote]creo que esto te puede servirpublic float vida;
    public float maxVida;
    public void gameOver()
    {
        if(vida <= 0)
        {
            //Has Perdido
        }
    }
    public int puntos;
    public int puntosParaGanar;
    public void Ganar()
    {
        if (puntos >= puntosParaGanar)
        {
            //Has Ganado
        }
    }void Update ()
        {
            if (LevelManager.Instance.IsLevelRunning && (_isWon || _isLost))
            {              if(puntos >= puntosParaGanar){
                Assert.IsTrue(LevelManager.IsActive, "Please ensure that you have a LevelManager component added to your scene.");
              }else{                 if(vida <= o){              Assert.IsTrue(GameOver.IsActive, "Please ensure that you have a GameOver component added to your scene, or are using one of the default GameOver prefabs.");                LevelManager.Instance.LevelFinished();
                GameOver.Instance.Show(_isLost);                  }
           }                    }
  }



jamas he podido hacer eso akkaka gracias por el link,como no podia llamar una funcion de js desde C#, lo hice mediante animation , jajajajaGracias revisa esto, ahi esta un ejemplo de como resolver tu problemahttp://forum.unity3d.com/threads/calling-a-c-function-from-javascript.34061/ date=1458604807]http://forum.unity3d.com/threads/calling-a-c-function-from-javascript.34061/ [/quote]

Etiquetas: