Skip to main content

Unity Upgrade 2017.2 and above

Hello Unity Developers,

Recently, I faced few issues with Unity Editor and I hope sharing it will help.

What was I trying to do? Scenario?


  • Upgrading to Unity 2017.2 & Unity 2017.3
  • I was trying to upgrade one of my project from Unity 2017.1.2 version to Unity 2017.2.1f1. On doing so, usually unity automatically updates the obsolete scripts to support new APIs. Once it got updated, I tried to play the game in editor and it worked.

Then, what was the problem?
  • While building the project to UWP application, there were some compile errors where Unity.VR need to be updated to Unity.XR. I fixed those errors, quit unity and tried building again. 
  • Wait, Why did I quit Unity and then built it again? Its because unity has this weird issue, when there are compiler errors. Though I had fixed the errors, on building it again, the errors will not go away. We have to quit unity and then build it, TADA, the error will go away.
  • Now coming back to other issues I faced, when I tried building it again after fixing all obsolete APIs, I had the following error with no proper information:

  •  I also got this error "internal error: Recursion detected while updating scripts" as mentioned here

How did I fix it?
  • I tried updating to other patch releases, windows OS, deleted some files(which I was thinking that deleting them would fix the issue) and none worked :(
  • Suddenly the developer within me woke up and checked the "Editor.log" file in Unity's AppData. And there I could find some errors which were not displayed in Unity Console window. Fixing those errors, I was able to build the project for UWP.


So, never trust any console window, especially Unity's!!! 

PS: If you all usually look at editor logs, then I am that one lazy developer who was dependent on Editor console window!

Comments

Popular posts from this blog

Container View - Multiple View Controllers

       By default, Each Container View can have one child view controller only. Only one controller can be added to container using "Embed segue".       In order to add multiple view controller,  the following may help:      Use a separate container view controller and add it using embed segue to the container view. Now from the container view controller that is created, perform transition to different child view controllers using custom segues.

Running Database Fetch (Core Data) in Background Thread using magical Record

   To run database fetching in background thread(in a separate context), so that the UI does not get blocked: __block NSMutableArray *dataArray= [[NSMutableArray alloc] init];   // Create a child context of the main context   NSManagedObjectContext *privateContext = [NSManagedObjectContext MR_context];   // When using private contexts execute the core data code in it's private queue using performBlock: or performBlockAndWait:   [privateContext performBlock:^{     // Execute fetch   NSArray *privateObjects;   if(entity_predicate == nil) {       //fetch all! duh!       privateObjects = [self MR_findAllSortedBy:sort_key ascending:YES inContext:privateContext];     } else {       privateObjects = [self MR_findAllSortedBy:sort_key ascending:YES withPredicate:entity_predicate inContext:privateContext];   ...

Separator Inset Problem - iOS 8

                    In iOS8, there is extra space in table view separators by default. It is nothing but the edge inset. To remove the separator edge inset, in iOS 7, custom separator insets can be set in the attributes inspector of the table view. In iOS 8, use the following in the table view controller: //set edge inset zero for default separator -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath     {     if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {     [self. tableView setSeparatorInset:UIEdgeInsetsZero];   }     if ([self. tableView respondsToSelector:@selector(setLayoutMargins:)]) {     [self. tableView setLayoutMargins:UIEdgeInsetsZero];   }     if ([cell respondsToSelector:@selector(setLay...