private IEnumerator <WaitForSeconds> HotReloadCoroutine() { var waitTime = new WaitForSeconds(.5f); using (var watcher = new FileSystemWatcher()) { watcher.Path = Path.GetDirectoryName(_channelPostVC.ResourceFilePath); watcher.Filter = "*.bsml"; watcher.NotifyFilter = NotifyFilters.LastWrite; watcher.Changed += Watcher_Changed; watcher.EnableRaisingEvents = true; while (isActivated) { if (_channelPostVC.ContentChanged) { HotReloadableViewController.RefreshViewController(_channelPostVC); } if (_channelListVC.ContentChanged) { HotReloadableViewController.RefreshViewController(_channelListVC); } if (_channelInfoVC.ContentChanged) { HotReloadableViewController.RefreshViewController(_channelInfoVC); } if (_postDetailVC.ContentChanged) { HotReloadableViewController.RefreshViewController(_postDetailVC); } yield return(waitTime); } } }
public static void RefreshViewController(HotReloadableViewController viewController, bool forceReload = false) { if (viewController.ContentChanged || forceReload) { try { viewController.__Deactivate(DeactivationType.NotRemovedFromHierarchy, false); for (int i = 0; i < viewController.transform.childCount; i++) { Destroy(viewController.transform.GetChild(i).gameObject); } viewController.__Activate(ActivationType.NotAddedToHierarchy); } catch (Exception ex) { Logger.log?.Error(ex); } } else { Logger.log.Info("Did not reload controller"); } }