// Alternative: check for unusual data path if (Application.dataPath.Contains("/storage/emulated/")) return true; return false;
// JoiPlay sets specific environment variables string joiPlayVar = System.Environment.GetEnvironmentVariable("JOIPLAY_RUNTIME"); if (!string.IsNullOrEmpty(joiPlayVar)) return true;
if (!JoiPlayDetector.IsRunningOnJoiPlay()) return;
using UnityEngine; using UnityEngine.EventSystems; public class JoiPlayInput : MonoBehaviour Unity Plugin For Joiplay
void Awake()
using System.IO; using UnityEngine; public class JoiPlaySaveRedirect : MonoBehaviour
if (Application.platform == RuntimePlatform.Android && Input.GetKeyDown(KeyCode.Escape)) // Simulate Escape key for Unity UI or game menus if (JoiPlayDetector.IsRunningOnJoiPlay()) // Send Escape key event var escEvent = new Event keyCode = KeyCode.Escape, type = EventType.KeyDown ; EventSystem.current?.SetSelectedGameObject(null); else // Native Android back behavior Application.Quit(); // Alternative: check for unusual data path if (Application
Provide the .joiplay package and clearly state the requirements (Mono build, no video player, touch-as-mouse). Do not promise perfect performance — JoiPlay’s Unity support is unofficial and varies by device/Android version.
void Update()
JoiPlay stores saves in its own folder ( /sdcard/Android/data/com.joiplay.joiplay/files/ ). Redirect Application.persistentDataPath . Redirect Application
Wrap all file I/O in a class that checks JoiPlayDetector.IsRunningOnJoiPlay() and uses the alternate path. 3.4 Android Back Button as Escape void Update()
public static bool IsRunningOnJoiPlay()
using UnityEngine; public static class JoiPlayDetector