public static UdonSharpBehaviour FindProxyBehaviour(UdonBehaviour udonBehaviour, ProxySerializationPolicy proxySerializationPolicy) { if (_proxyBehaviourLookup.TryGetValue(udonBehaviour, out UdonSharpBehaviour proxyBehaviour)) { if (proxyBehaviour != null) { CopyUdonToProxy(proxyBehaviour, proxySerializationPolicy); SetIgnoreEvents(true); try { proxyBehaviour.enabled = false; } finally { SetIgnoreEvents(false); } return(proxyBehaviour); } else { _proxyBehaviourLookup.Remove(udonBehaviour); } } UdonSharpBehaviour[] behaviours = udonBehaviour.GetComponents <UdonSharpBehaviour>(); foreach (UdonSharpBehaviour udonSharpBehaviour in behaviours) { IUdonBehaviour backingBehaviour = GetBackingUdonBehaviour(udonSharpBehaviour); if (backingBehaviour != null && ReferenceEquals(backingBehaviour, udonBehaviour)) { _proxyBehaviourLookup.Add(udonBehaviour, udonSharpBehaviour); CopyUdonToProxy(udonSharpBehaviour, proxySerializationPolicy); SetIgnoreEvents(true); try { udonSharpBehaviour.enabled = false; } finally { SetIgnoreEvents(false); } return(udonSharpBehaviour); } } return(null); }