Skip to content

Instantly share code, notes, and snippets.

@AngryAnt
Created August 3, 2011 13:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AngryAnt/1122611 to your computer and use it in GitHub Desktop.
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.
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