Created
August 3, 2011 13:21
-
-
Save AngryAnt/1122611 to your computer and use it in GitHub Desktop.
WebPlayer - website JavaScript two-way communication example. The goal here is to keep the website JS code handy. Untested.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
public delegate void JSCallback (string value); | |
public class WebsiteCommunication | |
{ | |
public TextAsset stringRequest; | |
public void RequestString (JSCallback callback, string prompt, string defaultValue = "") | |
{ | |
if !(callback.Target is MonoBehaviour) | |
{ | |
throw new System.ArgumentException ("Callback must be on a MonoBehaviour!"); | |
} | |
string evalText = | |
stringRequest.text.Replace ( | |
"%GO_NAME%", ((MonoBehaviour)callback.Target).gameObject.name | |
).Replace ( | |
"%HANDLER_NAME", callback.Method.Name | |
).Replace ( | |
"%PROMPT_STRING%", prompt | |
).Replace ( | |
"%DEFAULT_VALUE%", defaultValue | |
); | |
Application.ExternalEval (evalText); | |
} | |
} | |
/* | |
String request variable is populated with a reference to a text file asset containing | |
the following JS code: | |
GetUnity ().SendMessage ("%GO_NAME%", "%HANDLER_NAME%", prompt ("%PROMPT_STRING%", "%DEFAULT_VALUE%")); | |
*/ | |
// Example usage: | |
private string playerName = "Nobody"; | |
void Start () | |
{ | |
GetComponent<WebsiteCommunication> ().RequestString (OnReceiveName, "What is your name?", playerName); | |
} | |
void OnReceiveName (string name) | |
{ | |
playerName = name; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment