import de données externes au webplayer

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
wollfen
Messages : 11
Inscription : 14 Avr 2012 22:12

import de données externes au webplayer

Message par wollfen » 20 Avr 2012 10:57

bonjour,

cela fait 3 jours que je cherche, et la, j'aurai besoin d'un coup de main.

Le but est d'envoyer des données de ma page web vers le webplayer afin de construire un GUI perso.

J'ai fouillé la doc et j'ai trouver ceci :

coté html :

Code : Tout sélectionner

		function transmit()
		{
			var unity = unityObject.getObjectById("obj"); // instantiation  de obj
			unity.SendMessage("obj", "Mycall", ""); // envoie à obj
		
		}

		if (typeof unityObject != "undefined") {
			unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 600, 450);// webplayer chargé
			transmit(); // appel de la fonction d'envoie
		}
coté unity :

j'ai crée un objet vide nommé obj, sur lequel j'ai assigné un script nommé unityphp.

contenu de unityphp :

Code : Tout sélectionner


  	private var textrect = Rect (10, 150, 500, 500); //creation d'un rectangle


    	function OnGUI() {
        
        	GUI.TextArea( textrect, formText );
    	}


    	function Mycall(){

      		formText = "ok";
	}
donc, si j'analyse: la commande unityObject.getObjectById("obj") se réfère à un objet, en locurence mon objet "obj"
c'est dans cette ligne que je pense avoir fait une erreur : unity.SendMessage("obj", "Mycall", ""): je sais pas si c'est l'objet "obj" ou le script unityphp à placer en premier membre.

En tout les cas, ça fonctionne pas.

d'autre part, est-ce la bonne méthode ? ou existe t-il autre chose ( j'ai pensé developper un parser PHP basé sur WWW pour importer des données externes au load ) ?

merci à vous

Avatar de l’utilisateur
darkloy
Messages : 290
Inscription : 23 Mars 2011 09:36
Contact :

Re: import de données externes au webplayer

Message par darkloy » 20 Avr 2012 15:31

Salut ;)

Moi je suis pas très fan de la méthode que t'évoque. Je ne sais pas pourquoi, peut-être parce qu'elle est dépendante du fait que t'exporte en webplayer.

Si tu veux passer des infos, php avec un echo json_encode($tableau_avec_tes_params), et tu récupère très simplement avec le WWW et tu traite avec par exemple la classe MiniJson.cs.

Si c'est deux trois variables, ne sort pas l'artillerie lourde Json, tu mets des séparateurs entre tes variables, et tu splite . Si tu dois passer d'autres variables, fait toi une classe qui gére tes envois/réponses, et traite avec json ;)
Si t'a des soucis avec ça, n'hésite pas j'ai l'habitude ;)

wollfen
Messages : 11
Inscription : 14 Avr 2012 22:12

Re: import de données externes au webplayer

Message par wollfen » 20 Avr 2012 18:38

te remercie !

en effet, c'etait ma deuxième option, le fait de parser les données avec un split () ou un explode ()

Disons que ma volonté était de charger le webplayer au load via JS, mais bon, tu as raison : l'emploie du WWW avec un split sera du meilleur effet.

Sinon, à moins d'une incompréhension de ma part, unity se code en js ou en c++ : tu peux donc faire comme ça ( j'y vais en direct la ) :

Code : Tout sélectionner

        var w = new WWW(URL); //instantiation objet form
        
        yield w; //commande d'attente
		
        if (w.error != null) {
        	Debug.Log(w.error);
        } else {
  
		 
		x = w.text.split(';');
}

@++

Avatar de l’utilisateur
darkloy
Messages : 290
Inscription : 23 Mars 2011 09:36
Contact :

Re: import de données externes au webplayer

Message par darkloy » 20 Avr 2012 20:33

Oui c'est exactement ça.
Les scripts sont en javascript (je comprends pas trop pourquoi on n'appelle ça du javascript, pour moi cela s'apparente plus à de l'as3) ou sinon pas du C++ mais du C#...Que je conseille vivement pour des projets aboutis.

Pour tes splits, je les doublerais, pour avoir un index et une valeur.
Ex:

en php t'envois "index1=valeur1&index2=valeur2&index3=valeur3"

Très brièvement (a tester hein ;))

Code : Tout sélectionner

	
string phpString="index1=valeur1&index2=valeur2&index3=valeur3"; // Ca c'est l'exemple que tu reçois avec ton php
		Dictionary<string, string> phpData = new Dictionary<string, string>();
		foreach(string keyValue in phpString.Split('&')){
				string[] temp = keyValue.Split('=');
				phpData.Add (temp[0],temp[1]);	
		}
Et là, c'est facile tu récupère une valeur comme cela :

Code : Tout sélectionner

print(phpData["index1"]);  
Te donnera "value1"

Bon courage à toi ;)

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: import de données externes au webplayer

Message par sotec » 03 Jan 2013 18:03

unityObject.sendmessage() est très pratique dans le cas où le webplayer est piloté de l'extérieur , par exemple depuis des menu fait en javascript, jquery et autre choses toutes belles et facile à utiliser.
Dans ce cas, la fenêtre unity sert plus comme une vitrine (affichage de la scène + quelques fonctions amusante) ou de jeu interactif avec l'ensemble de la page ( comme des énigmes cachés, des zone à clicker, etc ), pour faire un configurateur d'objet également : on choisit les liste d'équipement dans la partie html, et l'affichage se fait dans unity.

Bref ce n'est pas l'utilisation principal d'unity car peu utilisé pour des jeux, qui reste tout de même l'utilisation principale d'unity mais elle reste intéressante .
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: import de données externes au webplayer

Message par cayou66 » 03 Jan 2013 18:04

ça déterre les posts ! :)

sephitoth
Messages : 495
Inscription : 06 Avr 2012 13:47
Localisation : toulouse

Re: import de données externes au webplayer

Message par sephitoth » 03 Jan 2013 18:39

Mince, ou est ma pelle d'or ? je la retrouve plus, le trophée passe de main en main :lol: :lol:
J'étais athée jusqu’à ce que je découvre que j'étais dieu !

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: import de données externes au webplayer

Message par sotec » 03 Jan 2013 18:42

c'est surtout que je suis en train de créer une vitrine 3d avec unity sur webplayer ^^ et il me semble que c'est le seul post qui parle des échanges de données externes (excepté php évidemment)
quand j'aurais quelque chose de vraiment fini sur le projet je vous donnerais des exemples :D
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Répondre

Revenir vers « Scripting »