Hello,
I am trying to send data from my WebGL player to a JavaScript function declared on the window. However, I keep getting an error:
Uncaught TypeError: window.relayImgurData is not a function
Here is my JavaScript function placed within my body tag:
Here is my jslib file:
var relay = {
SendImgurData: function(data)
{
window.relayImgurData(Pointer_stringify(data));
}
};
mergeInto(LibraryManager.library, relay);
And here is the C# script where it is being called:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
public class ScreenShot : MonoBehaviour {
// the URL (with endpoint) the pic will be sent to
public string screenShotURL= "https://api.imgur.com/3/image";
[DllImport("__Internal")]
private static extern void SendImgurData(string data);
IEnumerator UploadPic(string screenShotURL) {
// We should only read the screen after all rendering is complete
yield return new WaitForEndOfFrame();
// Create a texture the size of the screen, RGB24 format
int width = Screen.width;
int height = Screen.height;
var tex = new Texture2D( width, height, TextureFormat.RGB24, false );
// Read screen contents into the texture
tex.ReadPixels( new Rect(0, 0, width, height), 0, 0 );
tex.Apply();
// Encode texture into PNG
byte[] bytes = tex.EncodeToPNG();
Destroy( tex );
// Add a custom header to request for API authentication
Dictionary headers = new Dictionary();
headers["Authorization"] = "Client-ID xxxxxxxxxxxxxxx";
// Upload to URL specified
WWW w = new WWW(screenShotURL, bytes, headers);
yield return w;
if (!string.IsNullOrEmpty(w.error)) {
print(w.text);
}
else {
SendImgurData (w.text);
print("img uploaded =)");
}
}
// Initialization for UploadPic
void UploadPicture(string screenShotURL) {
StartCoroutine(UploadPic(screenShotURL));
}
// Takes a screenshot when 'p' is pressed
void Update() {
if (Input.GetKeyDown ("p")) {
UploadPicture(screenShotURL);
print ("Screenshot =)");
}
}
}
Thank you so much for any help =)
↧