Без опису
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #if UNITY_EDITOR || UNITY_ANDROID
  2. using System;
  3. using UnityEngine;
  4. namespace NativeGalleryNamespace
  5. {
  6. public class NGCallbackHelper : MonoBehaviour
  7. {
  8. private bool autoDestroyWithCallback;
  9. private Action mainThreadAction = null;
  10. public static NGCallbackHelper Create( bool autoDestroyWithCallback )
  11. {
  12. NGCallbackHelper result = new GameObject( "NGCallbackHelper" ).AddComponent<NGCallbackHelper>();
  13. result.autoDestroyWithCallback = autoDestroyWithCallback;
  14. DontDestroyOnLoad( result.gameObject );
  15. return result;
  16. }
  17. public void CallOnMainThread( Action function )
  18. {
  19. lock( this )
  20. {
  21. mainThreadAction += function;
  22. }
  23. }
  24. private void Update()
  25. {
  26. if( mainThreadAction != null )
  27. {
  28. try
  29. {
  30. Action temp;
  31. lock( this )
  32. {
  33. temp = mainThreadAction;
  34. mainThreadAction = null;
  35. }
  36. temp();
  37. }
  38. finally
  39. {
  40. if( autoDestroyWithCallback )
  41. Destroy( gameObject );
  42. }
  43. }
  44. }
  45. }
  46. }
  47. #endif