public
Last active

WebPlayer - website JavaScript two-way communication example. The goal here is to keep the website JS code handy. Untested.

  • Download Gist
WebsiteCommunication.cs
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
using UnityEngine;
using System.Collections;
 
 
public delegate void JSCallback (string value);
 
 
public class WebsiteCommunication : MonoBehaviour
{
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;
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.