Пример #1
0
        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);
                }
            }
        }
Пример #2
0
 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");
     }
 }