暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

NCCameraCallbackiOS.cs 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #if UNITY_EDITOR || UNITY_IOS
  2. using UnityEngine;
  3. namespace NativeCameraNamespace
  4. {
  5. public class NCCameraCallbackiOS : MonoBehaviour
  6. {
  7. private static NCCameraCallbackiOS instance;
  8. private NativeCamera.CameraCallback callback;
  9. private float nextBusyCheckTime;
  10. public static bool IsBusy { get; private set; }
  11. [System.Runtime.InteropServices.DllImport( "__Internal" )]
  12. private static extern int _NativeCamera_IsCameraBusy();
  13. public static void Initialize( NativeCamera.CameraCallback callback )
  14. {
  15. if( IsBusy )
  16. return;
  17. if( instance == null )
  18. {
  19. instance = new GameObject( "NCCameraCallbackiOS" ).AddComponent<NCCameraCallbackiOS>();
  20. DontDestroyOnLoad( instance.gameObject );
  21. }
  22. instance.callback = callback;
  23. instance.nextBusyCheckTime = Time.realtimeSinceStartup + 1f;
  24. IsBusy = true;
  25. }
  26. private void Update()
  27. {
  28. if( IsBusy )
  29. {
  30. if( Time.realtimeSinceStartup >= nextBusyCheckTime )
  31. {
  32. nextBusyCheckTime = Time.realtimeSinceStartup + 1f;
  33. if( _NativeCamera_IsCameraBusy() == 0 )
  34. {
  35. IsBusy = false;
  36. NativeCamera.CameraCallback _callback = callback;
  37. callback = null;
  38. if( _callback != null )
  39. _callback( null );
  40. }
  41. }
  42. }
  43. }
  44. public void OnMediaReceived( string path )
  45. {
  46. IsBusy = false;
  47. if( string.IsNullOrEmpty( path ) )
  48. path = null;
  49. NativeCamera.CameraCallback _callback = callback;
  50. callback = null;
  51. if( _callback != null )
  52. _callback( path );
  53. }
  54. }
  55. }
  56. #endif