Jump to content
Unity Insider Forum

Externe Application starten


Captian Hook

Recommended Posts

Hi,

 

schau dir mal System.Diagnostics an.. damit müsste es gehn... hab damit zwar selbst nur google im standart Webbrowser geöffnet aber alle anderen Programme sollten auch irgendwie funktionieren!

 

Hier mal zum testen mit google:

using UnityEngine;
using System.Collections;
using System.Diagnostics;
public static class CallExternProgramm  {

public static void CallGoogle(string t)
{
	Process.Start("http://google.com/search?q=" + t);
}
}

 

Aufruf dann von egal wo:

CallExternProgramm.CallGoogle("Unity3D");

Gruß Stephan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier hab ich ein kleines Script erstellt am Beispiel von Hearts. Es startet die Anwendung gleich in der Start Funktion, aber wenn du es als eigene Klasse/ Funktion definierst, kannst es ja dann überall starten wo du möchtest. Ich habe Kommentare hinzugefügt, die es erklären :)

 

using UnityEngine;
using System.Collections;
using System.Diagnostics;

public class StarteExterneApp : MonoBehaviour {

// Use this for initialization
void Start () {

		// Anwendungen die gestartet werden müssen, benötigen eine Instanz der Process Klasse
		// In diesem Fall speichern wir sie als "Anwendung"
 		Process Anwendung = new Process();

	        //Funktioniert mit "mshearts.exe" da es sich im Systemverzeichnis befindet, willst du hingegen
		//eine spezielle Anwendung starten musst du natürlich auch den Pfad dazu eingeben
		Anwendung.StartInfo.FileName = "mshearts.exe";

		// wie bei jeder Anwendung die man normal startet kann man auch diese Argumente übergeben
		// Ich hab es hier jetzt auskommentiert, da es kein Sinn gibt bei Hearts Argumente zu übergeben
		//Anwendung.StartInfo.Arguments = "Argumente etc.";

		// Und schließlich starten wir die Anwendung
		Anwendung.Start();

}

// Update is called once per frame
void Update () {

}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das Beispiel war in C# :)

Wenn du z.b die Position des Players ( oder generell eines GameObjects das eine Rigidbody Komponente hat) überprüfen willst, dann macht es wirklich Sinn ein Trigger zu verwenden. Andernfalls muss sich der Player an exakt der Position befinden die du überprüfst, was manchmal nicht leicht sein könnte für den Player wenn du exakt die X,Y und Z Werte überprüfst. Um eine einfachere Lösung zu haben, erstell einfach ein unsichtbares Objekt (z.b. Cube mit MeshRender deaktivieren) aktiviere "isTrigger" im Editor und kannst das Script das ich geschrieben hab einfach an dem dran hängen, mit einer einzigen Veränderung: ersetze Start() mit OnTriggerEnter(Collider other) der Rest kann gleich bleiben. Das funktioniert nur wenn der Player (oder sonstiges GameObject) das diesen unsichtbaren "Würfel" berührt, eine Rigidbody Komponente hat. Das dürfte meistens der Fall sein. Der Vorschlag es in der Update() Funktion aufzurufen ist auch machbar, aber dann funktioniert es nur wenn der Player sich wirklich genau in der Position befindet und je nach Player (je nach Form) kann es vorkommen, dass du dann denkst es funktioniert nicht obwohl es doch der Fall ist. Deswegen ist wohl ein Trigger Event zu benutzen sinnvoller.

Kannst auch statt OnTriggerEnter auch OnTriggerExit benutzen was das gleiche auslöst wenn du den Trigger verlassen hast. OnTriggerStay wär auch ne Möglichkeit aber dann würde es immer wieder die Anwendung starten solang der Player dort steht, früher oder später würde sich dann der PC beschweren^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...