| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using System;using System.Collections;using GraphProcessor;using UnityEngine;namespace NodeGraphProcessor.Examples{	[Serializable, NodeMenuItem("Functions/Wait Frames")]	public class WaitFrameNode : WaitableNode	{		public override string name => "Wait Frames";		[SerializeField, Input(name = "Frames")]		public int frame = 1;		private static WaitFrameMonoBehaviour waitFrameMonoBehaviour;		protected override void Process()		{			if(waitFrameMonoBehaviour == null)			{				var go = new GameObject(name: "WaitFrameGameObject");				waitFrameMonoBehaviour = go.AddComponent<WaitFrameMonoBehaviour>();			}			waitFrameMonoBehaviour.Process(frame, ProcessFinished);		}	}	public class WaitFrameMonoBehaviour : MonoBehaviour	{		public void Process(int frame, Action callback)		{			StartCoroutine(_Process(frame, callback));		}		private IEnumerator _Process(int frame, Action callback)		{			for(int i = 0; i < frame; i++)			{				yield return new WaitForEndOfFrame();				i++;			}			callback.Invoke();		}	}}
 |