Noticias

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

Paso como argumentos a un método

Iniciado por fernando, Abril 09, 2017, 05:38:37 PM

Tema anterior - Siguiente tema
Abril 09, 2017, 05:38:37 PM Ultima modificación: Abril 10, 2017, 03:22:25 PM por pioj
Buenas .
 
Como puedo declarar en una clase uno o mas metodos publicos con los argumentos que quiero?
 
Y como puedo pasar la variable data y imagenes a ese metodo?
 
este es el código que tengo
 

 void Awake()
    {
        if (Directory.Exists(rutasapp))
        {
            foreach (string dataApp in Directory.GetDirectories(rutasapp))
            {
                GameObject button = Instantiate(buttonPrefab) as GameObject;
                button.transform.SetParent(layout);
                button.name = "Button" + layout.childCount;
 
                foreach (string data in Directory.GetFiles(@dataApp).Where(s => s.EndsWith(".exe") || s.EndsWith(".lnk")))
                {
                    if (Path.GetExtension(@data) == ".exe")
                    {
                        button.GetComponent<Button>().onClick.AddListener(() => Process.Start(data));
                    }
                }
               
                foreach (string imagenes in Directory.GetFiles(@dataApp).Where(s => s.EndsWith(".png") || s.EndsWith(".jpg")))
                {
                    if (Path.GetExtension(@imagenes) == ".png")
                    {
                        string imgPath = imagenes;
                       
            }
        }
    }
}

 
 

Hola
 
Cita de: fernando date=1491752317Como puedo declarar en una clase uno o mas metodos publicos con los argumentos que quiero?
   


con public, un Ej del area de un triangulo:
 

public float AreaTri(Vector2 vertice1, Vector2 vertice2, Vector2 vertice3)
{
//...
}

 
 
 
Cita de: fernando date=1491752317Y como puedo pasar la variable data y imagenes a ese metodo?
   


Podes pasar el tipo que quieras como argumento, data e imagenes son strings, entonces tus argumentos seran strings. Si lo que queres pasar es el path de data e imageenesesta bien , aunque no se si es exactamente lo que queres.

Abril 09, 2017, 11:40:22 PM #2 Ultima modificación: Abril 10, 2017, 03:22:37 PM por pioj

public void awake(AppLogic objlogic)
    {
       oblogic = new AppLogic();
        objlogic.data = "dato";
        objlogic.imagenes ="ruta";
   


Hize eso en mi otra clase ,está bien ?
 


Ahora como puedo usar dato y imágenes en esa clase?
 


Cómo puedo hacer una función que ejecute los .Exe?
 


Antes tenía un ejercicio que leía los datos de .Exe y png desde un xml y tenía algo así
 




   
      private void RunApp() {
              string exePath = Application.streamingAssetsPath + (aki tengo que indicar cual es el .exe creo pero no consigo que valla)
              Process.Start(exePath);
          }
   

[/quote]


Cómo puedo hacer algo así con el código que tengo ahora?
 


 


Depende lo que sea AppLogic, si AppLogic ya esta instanciada, por ejemplo tenes un GameObject con dicho componente, estas de nuevo reservando memoria con el new para un nuevo AppLogic, y referenciando a ese nuevo AppLogic, o sea no tendria sentido pasarlo en primer lugar me parece.
 
Porque queres ejecutar un .exe desde Unity? Lo del Process.Start creo que esta bien, usa System.diagnostics o algo asi no recuerdo. Es decir que lo unico que tenes que llevar de un lado a otro es la string esa que posteaste mas arriba en los foreach's
 
Ayudame a entender que es lo que buscas, tu resultado final esperado. O es solo un ejercicio?

Abril 10, 2017, 12:12:01 AM #4 Ultima modificación: Abril 10, 2017, 03:01:01 PM por pioj
El objetivo es crear un menú donde tengas por ejemplo una calculadora,Google Chrome ,un juego los programas que tú quieras 
 
La clase applogíc es esta
 

 System.Diagnostics;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class AppLogic : MonoBehaviour
{
    [SerializeField]
    private Transform layout;
    [SerializeField]
    private GameObject buttonPrefab;
    private Datos data;
    public AspectRatioFitter fitter;
    public GameObject bullet;
    public float timeBetweenShots = 0.3333f;
 
    void Awake()
    {
        string path = Application.dataPath + "/xml/datos.xml";
        string rutasapp = Application.dataPath + "/StreamingAssets/Apps";
        XmlManager xmlMng = new XmlManager(path);
        data = xmlMng.ReadXML();
        if (Directory.Exists(rutasapp))
        {
            foreach (string dataApp in Directory.GetDirectories(rutasapp))
            {
                GameObject button = Instantiate(buttonPrefab) as GameObject;
                button.transform.SetParent(layout);
                button.name = "Button" + layout.childCount;
 
                foreach (string data in Directory.GetFiles(@dataApp).Where(s => s.EndsWith(".exe") || s.EndsWith(".lnk")))
                {
                    if (Path.GetExtension(@data) == ".exe")
                    {
                        button.GetComponent<Button>().onClick.AddListener(() => Process.Start(data));
                    }
                }
               
                foreach (string imagenes in Directory.GetFiles(@dataApp).Where(s => s.EndsWith(".png") || s.EndsWith(".jpg")))
                {
                    if (Path.GetExtension(@imagenes) == ".png")
                    {
                        string imgPath = imagenes;
                         
                        if (!File.Exists(imgPath))
                        {
                            UnityEngine.Debug.LogError("File doesn't exist: " + imgPath);
                            return;
                        }
                        byte[] bytes = File.ReadAllBytes(imgPath);
                        Texture2D texture = new Texture2D(82, 82, TextureFormat.RGB24, false, false);
                        texture.filterMode = FilterMode.Trilinear;
                        texture.LoadImage(bytes);
                        button.transform.GetChild().GetComponent<RawImage>().texture = texture;
                    }
                }
            }
        }
    }

 
 

Etiquetas: