[RESOLVIDO] Lista e ativar e desativar funções do script
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Lista e ativar e desativar funções do script
Eu estou tendo problemas com a lista pois eu coloco o caminho dos arquivos e ele não abre nenhum.
E também tem uma função que fecha o jogo. Mas eu não preciso dela toda hora então gostaria de saber como se faz uma caixa da qual eu posa marcar quando eu quiser a função ativa.
E também tem uma função que fecha o jogo. Mas eu não preciso dela toda hora então gostaria de saber como se faz uma caixa da qual eu posa marcar quando eu quiser a função ativa.
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
StartCoroutine(CloseGame());
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (FileName);
proc.Start();
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame() {
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
Boa noite bro não é que nao esta abrindo, é que vc esta usando um array de string[] e como voce nao referenciou nenhum item do array o programa simplesmente ignora ou algo do tipo, use o foreach ou for para percorrer o array e fazer uma ação por vez
o "for" e o "foreach" ajudam muito em tais situaçoes, recomendo estudar e aprender mais sobre eles,
https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/iteration-statements
- Código:
//..
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//..
o "for" e o "foreach" ajudam muito em tais situaçoes, recomendo estudar e aprender mais sobre eles,
https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/iteration-statements
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
Bem eu realmente perdi o sono tentando entender isso...FelipeSouza11 escreveu:Boa noite bro não é que nao esta abrindo, é que vc esta usando um array de string[] e como voce nao referenciou nenhum item do array o programa simplesmente ignora ou algo do tipo, use o foreach ou for para percorrer o array e fazer uma ação por vez
- Código:
//..
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//..
o "for" e o "foreach" ajudam muito em tais situaçoes, recomendo estudar e aprender mais sobre eles,
https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/iteration-statements
Agora o script apenas executa o primeiro item da lista e ignora todo o resto.
E a função de fechar o jogo meio que quebrou...
Vou por o script aqui e se vc puder me dizer oque estou fazendo de errado eu agradeço.
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
StartCoroutine(CloseGame());
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//proc = new Process();
http://proc.StartInfo.Arguments = "start";
http://proc.StartInfo.FileName = Dir + (FileName);
http://proc.Start();
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
AGAMENOM escreveu:Bem eu realmente perdi o sono tentando entender isso...FelipeSouza11 escreveu:Boa noite bro não é que nao esta abrindo, é que vc esta usando um array de string[] e como voce nao referenciou nenhum item do array o programa simplesmente ignora ou algo do tipo, use o foreach ou for para percorrer o array e fazer uma ação por vez
- Código:
//..
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//..
o "for" e o "foreach" ajudam muito em tais situaçoes, recomendo estudar e aprender mais sobre eles,
https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/iteration-statements
Agora o script apenas executa o primeiro item da lista e ignora todo o resto.
E a função de fechar o jogo meio que quebrou...
Vou por o script aqui e se vc puder me dizer oque estou fazendo de errado eu agradeço.
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
StartCoroutine(CloseGame());
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//proc = new Process();
//proc.StartInfo.Arguments = "start";
//proc.StartInfo.FileName = Dir + (FileName);
//proc.Start();
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
não vejo nada de errado bro, voçe quer que quando o player entrar nesse trigger2d abra arquivos? , que tipo de arquivos ? .bat , .exe ou algum outro , ou tipo de documento, deixe mais informaçoes , como exemplo para testar eu usei 2 arquivos .bat dentro de uma pasta "bat_file" ou fora e funcionou os 2, foi o que entendi no post
no caso de caixinha para ativar a opcao de quando sair do jogo quando quiser ,mas nao toda hora , no caso vc pode criar uma bool "podeSair" , ou UI Toggle -> Botao direito no Canvas-> UI -> Toggle
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
public bool podeSair=false; //marcar ,desmarcar via editor
public Toggle togglePodeSair; //objeto UI no canvas, arraste o objeto Toggle para este campo, marcar , desmarcar dentro do jogo
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
//se algum das duas caixinhas estiver marcada/true ,este objeto collidi com o player o jogo fecha,
if(podeSair ||togglePodeSair.isOn){
StartCoroutine(CloseGame());
}
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
FelipeSouza11 escreveu:AGAMENOM escreveu:Bem eu realmente perdi o sono tentando entender isso...FelipeSouza11 escreveu:Boa noite bro não é que nao esta abrindo, é que vc esta usando um array de string[] e como voce nao referenciou nenhum item do array o programa simplesmente ignora ou algo do tipo, use o foreach ou for para percorrer o array e fazer uma ação por vez
- Código:
//..
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//..
o "for" e o "foreach" ajudam muito em tais situaçoes, recomendo estudar e aprender mais sobre eles,
https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/statements/iteration-statements
Agora o script apenas executa o primeiro item da lista e ignora todo o resto.
E a função de fechar o jogo meio que quebrou...
Vou por o script aqui e se vc puder me dizer oque estou fazendo de errado eu agradeço.
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
StartCoroutine(CloseGame());
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
//proc = new Process();
//proc.StartInfo.Arguments = "start";
//proc.StartInfo.FileName = Dir + (FileName);
//proc.Start();
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
não vejo nada de errado bro, voçe quer que quando o player entrar nesse trigger2d abra arquivos? , que tipo de arquivos ? .bat , .exe ou algum outro , ou tipo de documento, deixe mais informaçoes , como exemplo para testar eu usei 2 arquivos .bat dentro de uma pasta "bat_file" ou fora e funcionou os 2, foi o que entendi no post
no caso de caixinha para ativar a opcao de quando sair do jogo quando quiser ,mas nao toda hora , no caso vc pode criar uma bool "podeSair" , ou UI Toggle -> Botao direito no Canvas-> UI -> Toggle
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
public bool podeSair=false; //marcar ,desmarcar via editor
public Toggle togglePodeSair; //objeto UI no canvas, arraste o objeto Toggle para este campo, marcar , desmarcar dentro do jogo
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
//se algum das duas caixinhas estiver marcada/true ,este objeto collidi com o player o jogo fecha,
if(podeSair ||togglePodeSair.isOn){
StartCoroutine(CloseGame());
}
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
aBem esta assim na unity.
Eu estou tentando iniciar os arquivos enquanto estou na unity e depois que a build foi feita.
E sobre o pode sair oque eu tentei dizer é que quando a ele estive-se ativo e quando o jogador encontrar o jogo fecha caso contrário não.
Sem esse negocio de Ui eu devia ter sido mais especifico eu sinto muito.
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
É claro que nem todos os arquivos são carregados, vc tá chamando a rotina de fechar o jogo antes de completar a ação do foreach.
Recomendo q vc chame a rotina de fechar o jogo após o loop, e não antes.
Recomendo q vc chame a rotina de fechar o jogo após o loop, e não antes.
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
na verdade não pois se eu eliminar a função de fechar não funciona direito do mesmo jeito.MayLeone escreveu:É claro que nem todos os arquivos são carregados, vc tá chamando a rotina de fechar o jogo antes de completar a ação do foreach.
Recomendo q vc chame a rotina de fechar o jogo após o loop, e não antes.
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
boa noite brow , bom vou deixar aqui o teste que fiz ,
fiz uma mudança no script ,para nao seguir aquele caminho de toda hora fazer build para ver se funciona , dependendo se esta no editor ou build o script verifica é se tiver no editor ira usar os arquivos contido na pasta documento, se executou o app da build ira usar os arquivos que estao na pasta do build do jogo
fiz uma mudança no script ,para nao seguir aquele caminho de toda hora fazer build para ver se funciona , dependendo se esta no editor ou build o script verifica é se tiver no editor ira usar os arquivos contido na pasta documento, se executou o app da build ira usar os arquivos que estao na pasta do build do jogo
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
using UnityEngine.UI;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
private void Start()
{
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
#if UNITY_STANDALONE_WIN //se eu estou usando na build .exe, os arquivos estarao na pasta na build
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
#endif
#if UNITY_EDITOR //se eu estou usando editor,os arquivos estao na pasta documentos, dentro da pasta q escolhi
var user = System.Environment.UserName; //armazenando o nome de usuario do windows ex: c:/users/meunome/...
Dir = $"C:/Users/{user}/Documents/";
#endif
//StartCoroutine(CloseGame());
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file); //diretorio + nomearquivo
proc.StartInfo.CreateNoWindow = false; //exibir ou nao o propt cmd
proc.Start();
}
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
#if UNITY_STANDALONE_WIN //se estou uando a build vai sair do jogo
Application.Quit();
#endif
#if UNITY_EDITOR //se estou no editor vai sair do playMode
EditorApplication.ExitPlaymode();
#endif
}
}
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
Cara eu agradeço seu esforço mas nada funciona. Nenhum dos scripts está abrindo os arquivos como deveriaFelipeSouza11 escreveu:boa noite brow , bom vou deixar aqui o teste que fiz ,
fiz uma mudança no script ,para nao seguir aquele caminho de toda hora fazer build para ver se funciona , dependendo se esta no editor ou build o script verifica é se tiver no editor ira usar os arquivos contido na pasta documento, se executou o app da build ira usar os arquivos que estao na pasta do build do jogo
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
using UnityEngine.UI;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
private void Start()
{
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
#if UNITY_STANDALONE_WIN //se eu estou usando na build .exe, os arquivos estarao na pasta na build
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
#endif
#if UNITY_EDITOR //se eu estou usando editor,os arquivos estao na pasta documentos, dentro da pasta q escolhi
var user = System.Environment.UserName; //armazenando o nome de usuario do windows ex: c:/users/meunome/...
Dir = $"C:/Users/{user}/Documents/";
#endif
//StartCoroutine(CloseGame());
foreach (string file in FileName)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file); //diretorio + nomearquivo
proc.StartInfo.CreateNoWindow = false; //exibir ou nao o propt cmd
proc.Start();
}
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
#if UNITY_STANDALONE_WIN //se estou uando a build vai sair do jogo
Application.Quit();
#endif
#if UNITY_EDITOR //se estou no editor vai sair do playMode
EditorApplication.ExitPlaymode();
#endif
}
}
e nem saindo do jogo corretamente.
Eu agradeço mesmo por tudo o tempo e esforço que vc dedicou para tentar me ajudar mas bem é isso...
Eu sinto muito pelo inconveniente que eu causei.
Re: [RESOLVIDO] Lista e ativar e desativar funções do script
Bem, recentemente encontrei uma solução para isso, então, se alguém quiser usá-lo, estou disponibilizando aqui.AGAMENOM escreveu:Eu estou tendo problemas com a lista pois eu coloco o caminho dos arquivos e ele não abre nenhum.
E também tem uma função que fecha o jogo. Mas eu não preciso dela toda hora então gostaria de saber como se faz uma caixa da qual eu posa marcar quando eu quiser a função ativa.
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
public class OpenFile : MonoBehaviour
{
public string[] FileName;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
StartCoroutine(CloseGame());
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (FileName);
proc.Start();
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
}
}
IEnumerator CloseGame() {
yield return new WaitForSeconds(1f);
Application.Quit();
}
}
- Código:
using System;
using UnityEngine;
using System.Diagnostics;
using System.Collections;
using UnityEditor;
public class ObjectOpenFile2D : MonoBehaviour
{
public string[] FileNameInUnity;
public string[] FileNameInBuild;
[Header("Warning Exit In Collider does not work if Destroy Object is active.")]
public bool ExitInCollider;
public new bool DestroyObject;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
print("OpenFile");
Process proc = null;
try
{
string Dir = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/") + 1);
#if UNITY_EDITOR
foreach (string file in FileNameInUnity)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
#else
foreach (string file in FileNameInBuild)
{
proc = new Process();
proc.StartInfo.Arguments = "start";
proc.StartInfo.FileName = Dir + (file);
proc.Start();
}
#endif
}
catch (Exception ex)
{
print(ex.StackTrace.ToString());
}
if (ExitInCollider == true)
{
StartCoroutine(CloseGame());
}
if (DestroyObject == true)
{
Destroy(gameObject);
}
}
}
IEnumerator CloseGame()
{
yield return new WaitForSeconds(1f);
#if UNITY_EDITOR
EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
}
Tópicos semelhantes
» [RESOLVIDO] script para ativar e desativar um objeto,animação,etc...
» [RESOLVIDO] Não consigo ativar/desativar um script através de outro
» [Ajuda]Script Ativar Desativar
» [RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
» SCRIPT desativar/ativar partícula pressionando tecla
» [RESOLVIDO] Não consigo ativar/desativar um script através de outro
» [Ajuda]Script Ativar Desativar
» [RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
» SCRIPT desativar/ativar partícula pressionando tecla
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos