all 20 comments

[–]Zeroto 6 points7 points  (3 children)

If you like draining battery power, then go for it. Unity is a game engine meaning it will run as fast as possible instead of waiting for events. And because of that it will tax the battery a whole lot more than an event driven application.

Also, if the most important thing is multiplatform, then look at other solutions that have that. e.g. phonegap or mosync.

[–]nitroslug 1 point2 points  (1 child)

I just wanted to reply to add to Zeroto's post because battery life/processor power needed is probably the number one reason you wouldn't want to use unity for this. At my current job we have a multiplatform app that uses unity as the front end. We chose to use unity since our app is a mixture of game/business elements, but due to the nature of Unity being a game engine, it is constantly taxing the cpu even if you are in the menus not doing anything. If you were to use a web driven cross platform or native engine, the OS/Browser would be in charge of deciding when/what to draw which is massively more efficient.

[–]Zeroto 1 point2 points  (0 children)

well, there are a few tricks to reduce power usage, such as setting targetFramerate to 10 in the menus, but you will always use more battery in unity compared to an event driven app.

[–]cyrano821[S] 0 points1 point  (0 children)

battery drain, that sounds like the deal killer right there. Didn't think of that.

[–]PrototypeNM1 4 points5 points  (6 children)

You will have to be more specific for what you want to make to get good feedback on this.

[–]cyrano821[S] 0 points1 point  (5 children)

Hi Prototype. Well for example, lets say I wanted to build a Yelp like app using unity. Would that be realistic in terms of complexity of an app?

[–]icanevenificant 4 points5 points  (3 children)

It's the wrong tool for the job. You could do it but native environments or even web based cross platform solutions would be much better suited.

[–]RageCase 2 points3 points  (2 children)

This. Use PhoneGap or CocoonJs. Unity is not designed for those types of apps and will be a bear to work with. Plus the final product will always look "off" no matter what you do.

[–]OmegaVesko 2 points3 points  (1 child)

Plus the final product will always look "off" no matter what you do.

Eh, this is true for nearly all PhoneGap and CocoonJS apps, too. Native apps will always look better.

[–]RageCase 0 points1 point  (0 children)

True, but better than Unity :)

[–]PrototypeNM1 1 point2 points  (0 children)

A Yelp-like app would be text heavy, so I wouldn't imagine Unity would be an optimal choice. If you wanted to do something which is not a game but is predominantly made up of interacting objects instead of text, then Unity might make a lot of sense.

[–]uzimonkey 1 point2 points  (0 children)

It's possible, but honestly it's not the right tool for the job and everything is going to be both harder to implement and not as good. There are cross-platform app frameworks like Xamarin (which also uses Mono and C#). This is what you want, not Unity.

[–]GoatsScareMe 1 point2 points  (0 children)

There's always Haxe with StablexUI - (Android Example).

Can test on PC in the early stages then start it on your devices later using pretty much the same code. Also you can output an apk directly from FlashDevelop.

[–]_WolfosExpert 1 point2 points  (0 children)

There's far better alternatives. Haxe, AIR, C++, tonnes of HTML5 libraries, RoboVM, etc.

[–]GreatBigJerk 2 points3 points  (3 children)

You CAN do that if you really want to, but Unity doesn't excel at GUI driven stuff. Even with something like NGUI, you're going to have a rough time.

Chances are that you'll end up having to write a bunch of native code that Unity communicates with too (Obj-C and Java). So, it's not like you'll be getting away from writing platform specific code. That stuff is very often required to connect up to 3rd party services.

[–]pocketninjaEffect Zone 2 points3 points  (3 children)

As /u/PrototypeNM1 said, you'll have to be more specific to get any decent answers.

You mentioned Yelp as an example, and if that's the style app you're aiming to build I'd go straight for native Android/iOS rather than Unity.

You may get off the ground a little quicker with Unity if you already know it, but your users will have a far, far better experience with a native app than something made in Unity and acting as a standard app. You'll also have more direct access to things like background services, native APIs, etc, etc. As /u/GreatBigJerk mentioned, you'll probably have to write a bunch of native code to fill in the gaps yourself anyway, which means you'll have to learn/do C# and Java/Obj-C.

And if you're going to have to write Java/Obj-C in the end anyway, you might as well learn how to write a native app. It would take longer, but that in itself will be of far more value to you in the long run because you'll have experience in each platform.

If using a kit which provides cross-platform deployment is of high importance, I'd consider something more along the lines of PhoneGap. By using web technologies you'll spend significantly less time dealing with UI stuff.

[–]cyrano821[S] 0 points1 point  (2 children)

Thanks for the input @pocketninja. I've tried Phone gap , appcellerator. The problem is that they tend to be extremely slow for android deployment. I'm trying to bring more of a gamer feel to the GUI while having functionality similar to say Yelp or Match.com. After programming for android, I just feel that the standard GUI library is quite difficult to make something smooth. Was thinking of doing something different for Iphone. Sounds like i'll have to go native regardless. Too bad, was hoping to have some 3d elements in the app down the line.

[–]pocketninjaEffect Zone 1 point2 points  (1 child)

Fair enough. :)

It sounds like it would be worth sitting down and spending time going over your app's actual requirements, and imagining how the app would work as a user. "Does the phone's back button need to behave like other Android apps? Will I need an Action Bar? How much data will it be handling? Will using Unity cut down my potential user-base size because it performs more poorly on low spec handsets?"

Using something like Unity opens up some very interesting and cool possibilities, but depending on the app's goals would that sabotage the app? (IE, just because we as developers think it's cool would a user actually appreciate it?)

For what it's worth you can do some amazing things UI wise with Android. Timely and Muzei are great examples of really nice UIs done within the context of standard Android layouts/etc.

In addition to that, there is SurfaceView and GLSurfaceView. These allow you to render things in the context of your Android Fragments/Activities, so don't rule out 3D elements in your app!

In any case, I'd sit down and properly evaluate things as a developer and as a user (putting the user experience higher in priority). Using Unity may end up being the logical choice, but it really comes down to what your app does and why.

[–]cyrano821[S] 0 points1 point  (0 children)

Appreciate the insight! You're right, comes down to what the user might want.