MustHave iOS - Ultimate Supplementary UIKit from the iOS SDK

1379060--70079--$mhios_website_forum.png

DOWNLOAD NOW DURING THE LAUNCH SALE

Release Status: Released!

From the creator of SoundManagerPro, comes another great plugin.

Make your Unity game more like an iOS game with MustHave iOS!

MustHave iOS is a new supplementary UI Kit that will make your Unity games feel like native iOS games. Gain full access to the iOS UIKit with MustHave iOS. This is available to you due to a new customized way for Unity and the iOS SDK to interact together–which is built specifically for this plugin. With this amazing feature, we are able to let you do many things. For instance, you can use all the UI you wouldn’t otherwise be able to use (PickerViews, TableViews, etc). You can also use Unity files and data types to interact with the iOS SDK. These are only few of the many benefits provided with MustHave iOS.

With this plugin, there is NO NEED to code in two places or figure out how to do the complicated communication. With MustHave iOS, you won’t have to worry about your custom code getting overwritten when you build out. Everything is kept within Unity so you only build with one platform.

AND, we will keep building this plugin as the iOS UIKit grows!

iOS 5.0+ recommended / supported

Can it get any better? It can, as the launch sale is 90% off! While it lasts, get your hands on this for just $10 !!!

Here are some of the benefits of MustHave iOS:

:: Easily access the iOS UIKit from within Unity:
:: ViewControllers, Popover and Navigation Controllers.
:: Views, AlertViews, ActionSheets, ScrollViews,
:: NavigationBars, Toolbars, Buttons, TextFields,
:: TextViews, Pickers, DatePickers, ImageViews,
:: Labels, Switches, Sliders, and much more!
:: Control specifically how native UI works.
:: All delegates and data sources are automatically added
:: Better code readability with C#.
:: No need to touch a lick of Objective-C code.
:: Forget Objective-C memory management.
:: No need to learn the Objective-C class model.
:: Code in one environment, Unity.
:: Use Unity data types for UIKit:
:: Texture2D<->UIImage, Rect<->CGRect,
:: Vector2<->CGPoint…etc
:: Extend MHiOS with your own custom templates!
:: Feel free to sell your own templates!
:: Get Must Have iOS! It’s worth the purchase.

IMPORTANT NOTES:

  • BEFORE YOU START, please, please build out the Tutorial Scene provided to you in ‘Assets/MustHave/iOS/Tutorial’. Follow the tutorial while looking at the comments in the Tutorial scripts to guide you.
  • DO NOT MOVE THE SCRIPTS in the ‘Assets/Plugins/iOS’ folder. This is placed specifically to be added to your XCODE project.
  • The classes, enums and functions are named identically to the iOS SDK! The only difference is that the classes and enums replace ‘UI’ with ‘MH’. So UIViewController becomes MHViewController.
  • Look at the Recommended Image Settings before using images
  • Refer to the Apple UI Kit Interface Catalog for documentation.
  • MHiOS currently doesn’t support custom animation of views with block objects, you have to use the old method instead (which works the same). C# doesn’t support block objects yet.

Want to know what’s next on the plate? Feel free to suggest additions!

RELEASE NOTES
Changelog v1.2:
-Added UIActivityIndicatorView and UIProgressView (both useful for showing any type of download or query)

Changelog v1.1:
-Lowered Unity Requirement to Unity 4.0
-Added UISwitch and UISlider
-Added more tutorial for switches and sliders

Upcoming Additions:
:: Presets that will automatically make basic UI for you (Rate My App, Login Screen, etc)
:: UITableView
:: UIStepper
:: UIMenuController
:: UILocalNotification
:: UISegmentedControl
:: UIPageControl
:: UIGestureRecognizers
:: Mono descriptions to each function so you don’t have to look up Apple documentation
:: UIWebView
:: UIImagePickerController
:: NGUI integration

And last but not least… Feel free to make and sell your own custom presets using MustHave iOS! Make a color picker, a login screen, or a generic options menu! Then sell it on the Asset Store yourself! We welcome all custom made content and will post it on the forums and our site per your request.

Hope you will check out MustHave iOS!

HD Video

Finally in a nutshell, what is MHiOS useful for?

It’s great for modular functions / UI that you want to appear anywhere. For instance:
:: options/settings screen
:: your own ads ( to anything you want, without having to pay anybody. make it link to your other games, anything. )
:: login dialog ( similar to the one used to sign into iTunes to make IAPs )
:: ratemyapp dialogs
:: handlers for sharing options ( facebook, twitter, instagram )
:: dialogs to confirm destructive actions
:: color pickers
:: pickers to choose options
:: progress bars to show download progress
:: loading activity indicators
:: switches to activate and deactivate features
:: in-game stores that can pull up anywhere
:: and much more…

There are just some things easier to do with the iOS SDK honestly, and this lets you access that. Also, MHiOS relieves you of having to conform to other plugin’s UI so you can really customize how your game looks. It can complement any game.

As a mobile developer, one of the most common issues clients have with Unity is that it doesn’t “look like an iPhone game”. They complain because they don’t think Unity games can have the awesome features the iOS UIKit provides. So I decided to bring it to Unity so everyone can use it.

-ALB

STAY TUNED FOR: MustHave Android

Just posted the video so you guys can take a look at what MHiOS does!

-ALB

I got a PM asking what this kind of stuff this is useful for, so I thought I’d share with everyone else.

It’s great for modular functions / UI that you want to appear anywhere. For instance:

  • an options/settings screen
  • your own ads ( to anything you want, without having to pay anybody. make it link to your other games, anything. )
  • a login dialog ( similar to the one used to sign into iTunes to make IAPs )
  • a ratemyapp dialog
  • a handler for sharing options ( facebook, twitter, instagram )
  • a dialog to confirm destructive actions
  • a color picker
  • a picker to choose options
  • a progress bar to show download progress
  • a loading activity indicator
  • a switch to activate and deactivate features
  • an in-game store that can pull up anywhere
  • and much more

There are just some things easier to do with the iOS SDK honestly, and this lets you access that. Also, MHiOS relieves you of having to conform to other plugin’s UI so you can really customize how your game looks. It can complement any game.

The concept is similar in style to Prime31’s Etcetera package, but this is focused on providing you the complete UIKit, with all the flexibility you want.

As a mobile developer that works for clients, one of the most common issues clients have with Unity is that it doesn’t “look like an iPhone game”. They complain because they don’t think Unity games can have the awesome features the iOS UIKit provides. So I decided to bring it to Unity so everyone can use it.

-ALB

Hey guys, we’re still waiting on approval. It has not been released yet.

-ALB

To clarify,

iOS 5.0+ is recommended / supported.

-ALB

Hi AntiLunchBox!

Yours seem like a very interesting asset to buy, but I have some doubts from the video. It seems to me that in the main view (the one that you use to call all the diferent views) has unity controls, instead of UIKit controls. Is it not possible possible to use UIKit GUI when you are using the unity view?

Thank you!

Hey MrVerdoux,

It is possible to use the UIKit GUI using the unity view. The asset allows access to the Unity UIViewController and UIView, where you can add elements from the UIKit GUI if you want. The video only shows the basics in the tutorial and I plan to add more to it. It’s meant to be more of a promotional video. I’m working on including an ‘Advanced’ video.

-ALB

Sorry there was a delay in the submission process! It’s going through the approval process again!

-ALB

Hey guys! The wait is over!

MustHave iOS : Full Combo Pack is officially live!

Grab it here during the 90% off launch sale!

Download Link

Wow!

Off to a great start! Already made it to 2nd most popular Scripting GUI plugin in 12 hours!

-ALB

Wow, MustHave iOS is now the #1 Scripting/GUI plugin, and #5 Scripting plugin!

Thanks!

Now, I also wanted to let you guys know of the upcoming update. It will include access to UISlider and UISwitch.

Hoping to release this tonight or tomorrow night.

-ALB

Hi , any news about the next release? Would be great to know how this asset evolve . The UISlider and UISwitch feature are badly needed.

Is there any way to get an evaluation / demo copy to try this out before purchasing? Looks really nice, I’m interested. :slight_smile:

Ah yes sloopidoopi,

I actually already have UISlider and UISwitch ready to update but my MAC broke down! I’m getting a new one in a couple days. I just want to test it first and add the tutorial section on it before submission. I know it’s been a delay, but it will be ready soon! Definitely before 2014! Once my new mac comes ill be cranking this out way more often.

ALB

Unfortunately not at the moment. I have it at a pretty highly discounted price right now. It’s only $10 so hopefully that’ll suffice!

ALB

Good to hear that a new version will come soon !
@Misanthropic2013 : don’t think twice and get a version for the discount!

Hey sloopidoopi,

I just posted a version that includes UISLider and UISwitch, along with an additional tutorial section that covers them. You can go ahead and download it. Thanks for the support!

ALB

Changelog v1.1:
-Lowered Unity Requirement to Unity 4.0
-Added UISwitch and UISlider
-Added more tutorial for switches and sliders

Thank you for your good plugin. I bought this asset and try to use.

But this tutorial is too complex to use for me .
Please give me a simple tutorial , for example that is just only show a alert views.

Hey Yuuki,

No problem. The tutorial is made so that it inherits from the previous tutorials. If you look at the code, the comments will tell you what each line does.

In your case, you’d want to go to Tutorial#5, which covers AlertViews and ActionSheets.

Let’s look at Tutorial5A since it is called “AlertViews”.

You only really need to look inside the StartTutorial function.

At the top there is only one object of type MHAlertView, alertview5A. So in your code, wherever you have it, you’ll want to store a MHAlertView. You can call it whatever you want:

MHAlertView myAlertView;

Going back to the StartTutorial function, it uses one of the constructors to make an AlertView. It takes in, the alertview TITLE, MESSAGE, and CANCEL button text. So let’s apply that to your script, in let’s say, the Start function:

MHAlertView myAlertView;

void Start()
{
    myAlertView = new MHAlertView("Yuuki's AlertView", "Yuuki's Message inside the AlertView", "Close");
}

Back to the StartTutorial function, there are some callbacks we should assign to the alertview so that the script knows what to do when a button is pressed on that alertview. The callbacks return the alertview it’s referencing as well as the index of the button pressed. If we’re not going to do anything with it, let’s just handle it without doing anything but removing the callbacks and releasing the alertview from memory (NOTE: the callbacks must match the parameters specified in the action):

MHAlertView myAlertView;

void Start()
{
    myAlertView = new MHAlertView("Yuuki's AlertView", "Yuuki's Message inside the AlertView", "Close");

    myAlertView.alertViewClickedButtonAtIndex += AnyOtherButtonPressed;
    myAlertView.alertViewDidDismissWithButtonIndex += CancelButtonPressed;
}

void CancelButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewDidDismissWithButtonIndex -= CancelButtonPressed;
    ReleaseMyAlertView();
}

void AnyOtherButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewClickedButtonAtIndex -= AnyOtherButtonPressed;
    ReleaseMyAlertView();
}

void ReleaseMyAlertView()
{
    myAlertView.release();
}

But wait, all this won’t make it show up! We have to call the show method:

MHAlertView myAlertView;

void Start()
{
    myAlertView = new MHAlertView("Yuuki's AlertView", "Yuuki's Message inside the AlertView", "Close");

    myAlertView.alertViewClickedButtonAtIndex += AnyOtherButtonPressed;
    myAlertView.alertViewDidDismissWithButtonIndex += CancelButtonPressed;

    myAlertView.show();
}

void CancelButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewDidDismissWithButtonIndex -= CancelButtonPressed;
    ReleaseMyAlertView();
}

void AnyOtherButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewClickedButtonAtIndex -= AnyOtherButtonPressed;
    ReleaseMyAlertView();
}

void ReleaseMyAlertView()
{
    myAlertView.release();
}

Now, let’s say we wanted to add multiple buttons that each did different things? Let’s look at the Advanced AlertView tutorial, Tutorial 5C, and apply it here. To start, we have the change the constructor to add the button titles for “other buttons”. You can just do this by adding any amount of parameters to the constructor we used previously. However, the CANCEL button, will always have to be before the “other buttons”:

MHAlertView myAlertView;

void Start()
{
    myAlertView = new MHAlertView("Yuuki's AlertView", "Yuuki says choose a number", "Don't want to choose", "One", "Two", "Three");

    myAlertView.alertViewClickedButtonAtIndex += AnyOtherButtonPressed;
    myAlertView.alertViewDidDismissWithButtonIndex += CancelButtonPressed;

    myAlertView.show();
}

void CancelButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewDidDismissWithButtonIndex -= CancelButtonPressed;
    ReleaseMyAlertView();
}

void AnyOtherButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewClickedButtonAtIndex -= AnyOtherButtonPressed;
    ReleaseMyAlertView();
}

void ReleaseMyAlertView()
{
    myAlertView.release();
}

Now that we’ve added more buttons, we have to tell the script to do specific actions for each number. We can do that by getting the title of the button index using the ‘buttonTitleAtIndex’ function:

MHAlertView myAlertView;

void Start()
{
    myAlertView = new MHAlertView("Yuuki's AlertView", "Yuuki says choose a number", "Don't want to choose", "One", "Two", "Three");

    myAlertView.alertViewClickedButtonAtIndex += AnyOtherButtonPressed;
    myAlertView.alertViewDidDismissWithButtonIndex += CancelButtonPressed;

    myAlertView.show();
}

void CancelButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewDidDismissWithButtonIndex -= CancelButtonPressed;
    ReleaseMyAlertView();
}

void AnyOtherButtonPressed(MHAlertView alert, int buttonIndex)
{
    alert.alertViewClickedButtonAtIndex -= AnyOtherButtonPressed;

    string buttonTitle = alert.buttonTitleAtIndex(buttonIndex);

    switch(buttonTitle)
    {
    case "One":
        Application.OpenURL("www.facebook.com/antilunchbox");
        break;
    case "Two":
        Application.OpenURL("www.twitter.com/antilunchbox");
        break;
    case "Three":
        Application.OpenURL("www.antilunchbox.com");
        break;
    default:
        CancelButtonPressed(alert, buttonIndex);
        return;
    }
    ReleaseMyAlertView();
}

void ReleaseMyAlertView()
{
    myAlertView.release();
}

And that’s it! That should help you customize any alertview to your liking. You can even rearrange the button order by setting the button index for each button. Hope this helps,

ALB