Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - unOOld

#1
General (Antiguo) / Duda sobre Streaming asset
Junio 13, 2016, 08:28:15 PM
Buen Dia, luego de investigar sobre como guardar y poder leer un archivo de texto en  android  finalmente vi que Streaming Asset era la mejor opcion, en relación a este se debia utilizar una clase WWW para que android pudiera leer el archivo, lo hice y puse la ruta indicada para encontrar el archivo en android, sin embargo el juego sigue sin funcionar cuando lo exporto al movil, esto es lo que tengo en la carpeta StreamingAsset 
 
http://imgur.com/EOKdIYm
 
cada archivo pertenece al dialogo de cada escena y asi fue como configure el script 
 
 
 

IEnumerator Startt()
    {
        string file;
        //captura el numero de escena actual
        string sceneNum = SceneManager.GetActiveScene().name;
        sceneNum = Regex.Replace(sceneNum, "[^0-9]", "");
        //ruta donde esta el archivo Dialogue
        string filePath = "jar:file://" + Application.dataPath + "!/assets/" + "Dialogue";
        //sumo Dialogue + el numero de escena para que el resultado finall sea Dialogue1
        filePath += sceneNum;
        //sumo lo anterior para que el resultado final sea Dialogue1.txt y asi detecte que es
        //un archivo de texto
        filePath += ".txt";
        //lo meto en una clase WWW y convierto la clase a un string para que sea detectable
        WWW www = new WWW(filePath) ;
        yield return www;
        file = www.text;
 
        lines = new List<DialogueLine>();
        Debug.Log(file);
        LoadDialogue(file);
    }

 
 
#2
Buen día, quisiera saber  que tipo de ruta y código debería aplicarse para crear un archivo de texto adentro de la SD card de Android que posteriormente pueda ser leído, y de que manera puedo escribir el texto que estará adentro de este archivo 
 
GRACIAS POR LEER 
#3
Buen día a todos mi juego el cual consiste en una novela visual lee los diálogos que va a visualizar de un archivo de texto que cree y metí en una carpeta al programa, anteriormente cuando lo exporte para Windows al ejecutar el juego no mostraba absolutamente nada, al abrir el archivo de texto   output_log.txt  me lanzaba un error que decía 
 



   
       IsolatedStorageException: Could not find a part of the path "C:\Users\exito\Desktop\textbox\Assets\Data\Dialogue1.txt".
   

[/quote]
 
Aparentemente donde sea que sea exportado el juego va a buscar las carpetas Assets, Data, y el archivo de texto Dialogue1.txt, sino lo encuentra entonces el juego no funciona, sin embargo el problema recae en que este juego esta destinado para android y naturalmente al abrirlo en un móvil como no encuentra las carpetas mencionadas anteriormente el juego no se ejecuta, igualmente si yo pasara mi juego a otro com***dor que no sea el mio no se ejecutaría al no encontrar la dirección de esas carpetas, aqui esta el script y yo quisiera saber de que forma puedo configurar la dirección para que las carpetas ya vengan incluidas cuando se descargue el juego en cualquier tipo de plataforma 
 
Gracias por Leer 
 

 void Start()
    {
        string file = "Assets/Data/Dialogue";
        string sceneNum = SceneManager.GetActiveScene().name;
        sceneNum = Regex.Replace(sceneNum, "[^0-9]", "");
        file += sceneNum;
        file += ".txt";
        lines = new List<DialogueLine>();
        LoadDialogue(file);
 
    }

 
 
#4
Bueno alfin logre solucionar el problema, al abrir el archivo de texto  output_log.txt  me lanzo un texto que decia IsolatedStorageException: Could not find a part of the path "C:\Users\exito\Desktop\textbox\Assets\Data\Dialogue1.txt". asi que cree las carpetas que tildaba como faltantes y a el exportar el juego para window corrio perfectamente 
#5
Cita de: Braltor date=1465052172pues eso es! cuando metes codigo en esas condiciones haces q solo se ejecute en el editor, no en el player
   


entiendo!, aunque no se cual puede ser la solución ya que si quito el  #if UNITY_EDITOR   me sale el error the type or namespace name unit***itor' could not be found pero si lo dejo no se me reproduce el juego exportado 
#6
Cita de: pioj date=1465038009¿Puedes hacer mención al hilo dónde explicaste tu problema, por favor?
   



 
es este sin embargo al exportar el juego para pc sigue estando el mismo problema de que el juego no corre por lo que sospecho que no tiene nada que ver con el codigo nose si sera algun problema de configuración en general o si tengo que volver a instalar unity, por otra parte nose si puede ser que me toco poner   #if UNITY_EDITOR  y   #endif  en algunos casos ya que sino me salia un problema al exportar el juego 
 
 
#7
Buen dia a todos, anteriormente habia expresado que tenia problemas con mi juego, el cual es destinado para android y cuando lo exporte a simple vista parecia que el touch no funcionaba y pense que era un problema de codigo, sin embargo lo exporte para window  usando como codigo Input.GetMouseButtonDown(0) para pasar los dialogos y al reproducir el juego exportado el problema sigue estando ahi, en unity el juego me corre perfecto sin ningun problema, pero al exportarlo no sucede nada no se si se trata algun problema de configuración y necesito ayuda, gracias por leer y aqui dejo el video 
 


   
eature=oembed" width="480">

 
 
#8
Cita de: Null date=1464927069Tú lo que necesitas es que cada vez que el jugador toque la pantalla muestre diálogo, no?

      creo que entonces es mejor ponerlo en una condición foreach.


      Tal vez te sirva escribiendo algo así:
   
   

void Update()
{
foreach (Touch t in Input.touches)
{
   if (t.phase == TouchPhase.Ended && playerTalking == false)    // <--- En lugar de .Began utilizé .Ended
   {
      ShowDialogue();
      lineNum++;
        }
}
}

   
       
   


muchas gracias por tu respuesta, aun nada, no sirvió 
#9
Cita de: unOOld date=1464877983muchisimas gracias, como ejemplo  lo podrias usar en una condicion if que sea valida?
   


utilize esto 
 
SIN EMBARGO SIGUE SIN FUNCIONAR 
 

if (Input.touchCount > )
        {
            if (Input.GetTouch().phase == TouchPhase.Began && playerTalking == false)
            {
                ShowDialogue();
                lineNum++;
 
            }
        }

 
 
#10
Cita de: Null date=1464835743Si no me equivoco se usa el TouchPhase.Began,

      que es cuando el usuario toca la pantalla.


      Mira,
http://docs.unity3d.com/ScriptReference/TouchPhase.html
   
   
      esos son los tipos de toques que hay para móvil.
   


muchisimas gracias, como ejemplo  lo podrias usar en una condicion if que sea valida?
#11
Buen Dia a todos, quisiera consultarles una duda que tengo, para que los dialogos de mi juego comienzen a correr yo tenia de condicion Input.GetMouseButtonDown(0) sin embargo claramente al pasar mi juego al cel no me funciona, que tipo de input.touch puedo utilizar que equivalga a cada vez que el jugador haga click pase al siguiente dialogo  y sea valida para ponerla en una condición, intente leerlo en el manual de unity pero poco entiendo
 
Gracias por leer.  
 
esto era lo que tenia 
 

if ( Input.GetMouseButtonDown(0) && playerTalking == false  )
            {
                ShowDialogue();
                lineNum++;
           
            }

 
 
#12
pude resolver mi problema planteandolo de esta forma 
 



   
      string sceneNum = SceneManager.GetActiveScene().name;
   

[/quote]
 
de esta forma me permitio utilizar la escena activa como un string 
#13
BUENOS DIAS A TODOS  
 
al exportar mi juego para android salio incialmente el error the type or name Unit***itor could not be found a lo que solucione con la etiqueta #if UNITY_EDITOR y  #endif, sin embargo al exportar el juego ahora me sale este nuevo error the name editor application does not exist in the current context el cual me dirige a un string que se llama 
 



   
      string sceneNum = EditorApplication.currentScene;   
   

[/quote]
 
esta string toma automaticamente la escena actual en donde esta el jugador y no la puedo cambiar por  
 

SceneManager.LoadScene(SceneManager.GetActiveScene()) ;

 
ya que este codigo no puede ser tomado adentro de un string, que debo hacer para solucionar el error?
 
muchas gracias por leer 
 

using UnityEngine;
using System.Collections;
#if UNITY_EDITOR
using Unit***itor;
#endif
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class DialogueParser : MonoBehaviour
{
    static public int level;
    struct DialogueLine
    {
        public string name;
        public string content;
        public int pose;
        public string position;
        public string[] options;
 
        public DialogueLine(string Name, string Content, int Pose, string Position)
        {
            name = Name;
            content = Content;
            pose = Pose;
            position = Position;
            options = new string[0];
         
           
        }
    }
    List<DialogueLine> lines;
    // Use this for initialization
    void Start()
    {
        string file = "Assets/Data/Dialogue";
        string sceneNum = EditorApplication.currentScene;
        sceneNum = Regex.Replace(sceneNum, "[^0-9]", "");
        file += sceneNum;
        file += ".txt";
        lines = new List<DialogueLine>();
        LoadDialogue(file);
 
    }

 
 
#14
Cita de: Arthure date=1464633100Es un problema de sentido comun ... si utilizas Application.LoadLevel en la funcion Start, estas transformando esta funcion en un bucle.
   


entiendo, quisiera saber como configurarlo de tal forma que al iniciar el juego entre automaticamente a la ultima escena donde lo dejo el jugador 
#15
Buenos Dias utilize el Application.LoadedLevel para que cada ves que el jugador entre al juego quede por la ultima escena que curso y para esto lo puse en el void start sin embargo solo sale la escena y no comienza a correr el dialogo como si se hubiera quedado en un bucle de abrir la escena, probé ponerlo tanto en el start como en el update y sucede lo mismo lo puse en un void creado por mi y no sucede nada, que puede suceder ahi?
 
 Application.LoadLevel(Application.loadedLevel)
 
gracias por leer