// 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;
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()
void Start()
using System.IO; using UnityEngine; public class JoiPlaySaveRedirect : MonoBehaviour
if (!JoiPlayDetector.IsRunningOnJoiPlay()) return;
JoiPlay stores saves in its own folder ( /sdcard/Android/data/com.joiplay.joiplay/files/ ). Redirect Application.persistentDataPath .
if (!JoiPlayDetector.IsRunningOnJoiPlay()) return;
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.
var ray = Camera.main.ScreenPointToRay(screenPos); // Send mouse event (simplified) var evt = new PointerEventData(EventSystem.current); evt.position = screenPos; evt.button = button == 0 ? PointerEventData.InputButton.Left : PointerEventData.InputButton.Right; ExecuteEvents.Execute(evt.pointerPress, evt, ExecuteEvents.pointerClickHandler);
public static bool IsRunningOnJoiPlay()
if (JoiPlayDetector.IsRunningOnJoiPlay()) Debug.Log("Running on JoiPlay — enabling touch adapters"); gameObject.AddComponent<JoiPlayInputAdapter>(); gameObject.AddComponent<JoiPlaySaveRedirect>(); gameObject.AddComponent<JoiPlayBackButton>(); QualitySettings.vSyncCount = 0; // Performance Application.targetFrameRate = 60;
A “Unity Plugin for JoiPlay” is not a binary library but a scripting layer that adapts your existing Unity game to JoiPlay’s non-standard environment. By adding detection, input remapping, save redirection, and back-button handling, you can make your PC-targeted Unity game playable on Android via JoiPlay with minimal friction.
void SimulateMouseClick(Vector2 screenPos, int button)
Unity Plugin For Joiplay Apr 2026
// 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;
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()
void Start()
using System.IO; using UnityEngine; public class JoiPlaySaveRedirect : MonoBehaviour
if (!JoiPlayDetector.IsRunningOnJoiPlay()) return;
JoiPlay stores saves in its own folder ( /sdcard/Android/data/com.joiplay.joiplay/files/ ). Redirect Application.persistentDataPath . Unity Plugin For Joiplay
if (!JoiPlayDetector.IsRunningOnJoiPlay()) return;
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.
var ray = Camera.main.ScreenPointToRay(screenPos); // Send mouse event (simplified) var evt = new PointerEventData(EventSystem.current); evt.position = screenPos; evt.button = button == 0 ? PointerEventData.InputButton.Left : PointerEventData.InputButton.Right; ExecuteEvents.Execute(evt.pointerPress, evt, ExecuteEvents.pointerClickHandler); // Alternative: check for unusual data path if (Application
public static bool IsRunningOnJoiPlay()
if (JoiPlayDetector.IsRunningOnJoiPlay()) Debug.Log("Running on JoiPlay — enabling touch adapters"); gameObject.AddComponent<JoiPlayInputAdapter>(); gameObject.AddComponent<JoiPlaySaveRedirect>(); gameObject.AddComponent<JoiPlayBackButton>(); QualitySettings.vSyncCount = 0; // Performance Application.targetFrameRate = 60;
A “Unity Plugin for JoiPlay” is not a binary library but a scripting layer that adapts your existing Unity game to JoiPlay’s non-standard environment. By adding detection, input remapping, save redirection, and back-button handling, you can make your PC-targeted Unity game playable on Android via JoiPlay with minimal friction. PointerEventData
void SimulateMouseClick(Vector2 screenPos, int button)