Back to List

Thinking Outside the Application Development Box with Unity

Jeff Weber Jeff Weber  |  
May 14, 2019
 
Do you or your company have an idea for an application that sits a little outside your comfort zone? Does your idea possibly require game-like graphics, Augmented Reality, Virtual Reality or similar technology? If so, Unity might be worth a look.
 
I’ve been using Unity in my spare time for the past 7 years to make games, and I’ve seen it grow from a game engine into a creation tool with much broader reach. I can’t help but think some companies, whether they be large enterprises, scrappy startups, or something in between, might find a use for a tool like Unity.
 
Now, I’m not trying to convince you to jump blindly into some fancy new tech. I’m just really excited about what it can do, and I want to help you think about what is possible in the application-space. With Unity, and other tools like it, much of this fancy new tech has been brought into reach of the average development house’s skill-set.
 
(Note: Skyline and I aren’t affiliated with Unity, nor do we sell it. I’m just really excited by its capabilities.)
 

Unity - The Swiss Army Knife of Real-time Applications

Unity began its life as a 3D engine for making games, but over the last 14 years it has grown into a powerful real-time rendering engine that can be used across industries for many different types of applications.
 

Games

Since Unity got its start as a 3D engine for making games, it should be no surprise that it’s very good at that task! Maybe you’ve thought of using a WebGL browser or mobile game to market your product or company? With Unity, it’s not out of reach.
 

Augmented or Virtual Reality (AR and VR)

All the rage right now, Augmented and Virtual Reality applications are limited only by your imagination. AR and VR games already have a foothold, but AR and VR for non-game apps in the manufacturing, financial, medical, and other spaces are just getting started. Unity greatly simplifies the development of these kinds of apps.
 
Not only does Unity support all the leading AR and VR specific devices like Oculus Rift, Steam VR/Vive, Gear VR, Microsoft HoloLens (1 and 2), Magic Leap and Google’s Daydream View, but Unity also has full support for both Android’s ARCore and Apple’s ARKit. In fact, Unity takes it a step further and provides a common wrapper called AR Foundation that allows you to develop once and deploy an AR app to both Android and iOS.
 

Training and Education

Sometimes, creating and experiencing certain real-world scenarios is not practical or possible. Unity makes it possible to simulate these experiences for the purpose of training, running test scenarios, educating, or just plain old entertainment.
 
With Unity it’s possible to create custom walk-throughs, custom training scenarios, and custom data visualizations all interactive in real-time across just about every industry.
 

Film, Animation, and Cinematics

Ok, so not everyone is going to need to make a movie, but Unity does have that capability. You can use some parts of its cinematics tools to make nice-looking walk-throughs, museum interactions, or viral marketing campaigns. 
 
The above concepts only scratch the surface of what is possible with Unity. Think about your company and what you could do if you had the ability to apply some of these concepts to it. Think outside the box.
 

Unity - The Details

Ok, so you now have a general idea what types of applications and experiences can be built with Unity, but how the heck do you use it?
 

Supported Platforms

Unity is known for its ability to target just about any platform that is even remotely popular today. Here are the primary platforms Unity supports:
 
  • iOS
  • Android
  • Windows (Classic and UWP)
  • WebGL
  • Mac
  • Linux
  • Xbox
  • PlayStation
  • Nintendo Switch
 

Unity Editor

The primary tool used when developing Unity applications is the Unity Editor.
 
unity editor
The Unity Editor

It’s a full-blown 2D/3D editor that allows you to visually design and view whatever you are creating. The editor makes it easy to jump between edit mode and play mode for quick iterations on your project.
The Unity Editor is also very customizable. With very little effort, you can create tools and controls within the editor that are specific to your project.
 
The Unity Editor has built-in performance profiling, rich audio support, physics support, support for animation and much, much more.
 

C# and Visual Studio

The Unity Editor is nice, but at some point in the development of your project, you or your dev team is probably going to need to write some code. For this, Unity relies on the popular C# programming language and, when combined with Microsoft’s Visual Studio or Visual Studio Code, has full debugging capability.
 
If you are more of a Mac person, the Unity Editor for Mac supports that as well when combined with either Visual Studio for Mac or Mono Develop.
 
Unity Editor Side-By-Side with Visual Studio
The Unity Editor Side-By-Side with Visual Studio
 

Workflow

If a developer has never used Unity before, a couple things will probably stand out the first time they do:
 
  • Unity apps operate with the use of an underlying game-loop
  • Unity is component-based
 
There is a lot of detail behind these two concepts. I’ll save much of that detail for a future post and just give the high-level picture below.
 

Unity’s Event Functions and the Game Loop

The game loop concept is not unique to Unity; pretty much all real-time game engines have one. You can think of the game loop as the heartbeat of your application.
 
When your app starts, the Unity engine starts firing specific event functions in a predetermined order. A developer hooks into these event functions to bring the application they are building to life.
 
There are a lot of these events that can be hooked into. Some are more important than others.
 
Some fire while the app is initializing:
 
  • Awake()
  • Start()
  • OnEnable() 
 
Some fire when the app (or a component) is closing:
 
  • OnApplicationQuit()
  • OnDisable()
  • OnDestroy()
 
And some fire when the game loop is running:
 
  • Update()
  • FixedUpdate()
  • LateUpdate()
 
It is within these Unity event functions that a developer will write most of their code.
 
In most traditional, non-realtime applications, code is run in response to user actions. This is true of Unity as well, but the engine is also constantly running through these event functions to execute your code. 
 
A lot more detail on Unity’s game loop and event functions can be found here.
 

Game Objects and Components

If there is a concept in Unity that has more of a learning curve than any other, it is probably Unity’s component-based architecture. While component-based systems aren’t new and were not invented by Unity, not a lot of developers outside game development have experience working with them.
 
The intent of this post is not to get too deep into development details, so I’ll try to state it as briefly as possible: everything in Unity is a Game Object, and every Game Object is a collection of components. Let's say you want to have a spinning teapot in your app. At a high level, you would create an empty TeapotGameObject, then add a RenderComponent to make the teapot render on the screen, and then add a SpinComponent to make the teapot spin. Some components (like RenderComponent) are built into Unity, while others (like SpinComponent) are created by the developer by hooking into the Unity event functions mentioned earlier.
 

Unity’s cost and how you get it

At the time of this post, Unity currently has the following plan options:
 
  • Personal - Free if your revenue or funding does not exceed $100k
  • Plus - $35 per month (25 per month with 1 year prepay)
  • Pro - $125 per month
 
More detail on these plans can be found here.
 

Let’s create something outside of the box

I hope I was able to get you thinking outside the typical app development box and see how Unity might be useful to you and your company. What kinds of apps are you thinking about or working on that you might like to try this out on? Let me know in the comments below. Thanks for reading!
 

 

Love our Blogs?

Sign up to get notified of new Skyline posts.

 


Related Content


Spring 2019 Kentico User Group
Apr 17, 2019
Location: Waukesha County Technical College - Pewaukee Campus - 800 Main Street, Pewaukee, Wisconsin 53072 - Building: Q, Room: Q361
Blog Article
How to Create a Readable and Useful Bug Report
Blayne RoselleBlayne Roselle  |  
Jun 25, 2019
Creating a bug that is both readable and provides enough detail is a must-have skill for a Quality Assurance Analyst. Not only will it help when it comes time to retest, but it also provides credibility with your development team. In the content below, I will share the best practices for creating...
Blog Article
Azure Tips & Tricks: Application Insights Snapshot Debugger
Todd TaylorTodd Taylor  |  
May 21, 2019
A painful memory that is burned into my developer-brain is a production support issue for a .NET web API that I wrote years ago. I worked for a large retailer at the time, and the bug was preventing electronic pricing signs from displaying the most up-to-date price for hundreds of products at...
Blog Article
Creating and Installing Project Templates in .NET Core
Ben BuhrBen Buhr  |  
Apr 30, 2019
In my previous blog article, we examined the .NET Core Command Line Interface (CLI). As part of that, we saw that templates in .NET Core can be very useful. Templates in .NET Core are very easy to create, and there already are a ton of very helpful ones available. They allow us to quickly get an...
Blog Article
How to Overcome the 5 Common Barriers to Manufacturing Innovation
Mitch WeckopMitch Weckop  |  
Apr 04, 2019
Manufacturing companies have an opportunity ahead of them – thanks in large part to information technology advances. These advances are increasing the rate of product innovation, improving cost and quality, enabling planned and predictive maintenance, and launching new business platforms...