using System.Collections; using System.IO; using UnityEngine; using UnityEngine.UI; #if UNITY_ANDROID using UnityEngine.Android; #endif public class MobileCameraStarter : MonoBehaviour { [Header("カメラ映像を表示する RawImage")] public RawImage cameraView; [Header("シェアボタンのGameObject")] public GameObject shareButtonObject; [Header("シェアボタンのOnClickを自動登録する")] public bool autoAddShareButtonOnClick = true; [Header("キャプチャ時にシェアボタンを隠す")] public bool hideShareButtonWhileCapturing = true; [Header("前面カメラを使う")] public bool useFrontCamera = false; [Header("希望する解像度とFPSを使う")] public bool useRequestedResolution = true; [Header("希望する解像度とFPS")] public int requestedWidth = 1280; public int requestedHeight = 720; public int requestedFPS = 30; [Header("シェア設定")] public string shareText = "カメラ画像をシェアします"; public string shareSubject = "Camera Screenshot"; public string shareFilePrefix = "camera_share"; [Header("プレビュー用 Canvas_preview プレハブ (未設定なら Resources から読み込み)")] public GameObject canvasPreviewPrefab; [Header("キャプチャ時に一時的に隠すUI")] public GameObject[] hideWhileCapturing; private WebCamTexture webCamTexture; private AspectRatioFitter aspectRatioFitter; private Button shareButton; private bool isStartingCamera = false; private bool isCapturing = false; private bool isCaptureReady = false; private int lastWidth = -1; private int lastHeight = -1; private int lastRotation = -1; private bool lastMirrored = false; #if UNITY_ANDROID private PermissionCallbacks permissionCallbacks; #endif private IEnumerator Start() { SetupCameraView(); SetupShareButton(); SetShareButtonInteractable(false); yield return RequestCameraPermission(); } private void SetupCameraView() { if (cameraView == null) { Debug.LogWarning("Camera View に RawImage が設定されていません。"); return; } aspectRatioFitter = cameraView.GetComponent(); if (aspectRatioFitter == null) { aspectRatioFitter = cameraView.gameObject.AddComponent(); } aspectRatioFitter.aspectMode = AspectRatioFitter.AspectMode.EnvelopeParent; // カメラ背景として使うだけならタッチ判定は不要 cameraView.raycastTarget = false; } private void SetupShareButton() { if (shareButtonObject == null) { Debug.LogWarning("Share Button Object が設定されていません。"); return; } shareButton = shareButtonObject.GetComponent