12 мар. 2011 г.

Вызов методов Objective-C из Unity


Если вы счастливый обладатель Pro версии как я, то сделать это довольно просто. Давайте рассмотрим как добавить диалог, предлагающий пользователю проголосовать за наше приложение. Конечно, данный диалог можно без проблем реализовать средствами Unity, но цель данной статьи продемонстрировать вызов из Unity методов Objective-С.

В скрипте внутри Unity пишем:

[System.Runtime.InteropServices.DLLImport("__Internal")]
extern public static void showRateDialog();

И затем в нужном месте вызываем данный метод, например:

if(GUI.Button(buttonRect, "Show Rate Dialog"))
{
    showRateDialog();
}

Делаем Build, открываем проект в XCode, создаем класс 
RateDialog UIViewController <UIAlertViewDelegate>, внутри которого описываем метод, показывающий диалог:

- (void) showDialog(){
    [[[UIAlertView alloc] 
      initWithTitle:@"Like This App?" 
      message:@"Please rate it in the App Store!" 
      delegate:self 
      cancelButtonTitle:@"No Thanks" 
      otherButtonTitles:@"Rate It!", 
      nil] 
     show];
}

Чтобы обработать событие нажатия кнопки "Rate It!" описываем следующий обработчик:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 1) { 
        NSURL *url = [NSURL URLWithString:@"YOUR_URL"]; 
        [[UIApplication sharedApplication] openURL:url]; 
    } 
}

Таким образом, при нажатии на кнопку "Rate It!", откроется Safari со страницей YOUR_URL.
Внутри данного класса или в любом другом месте описываем наш метод:

void showRateDialog(){
    [[RateDialog alloc] init].showDialog();
}

В ближайшее время напишу как к игре добавить интеграцию с Facebook. Для этого как раз понадобится умение вызывать внешние методы.

Используемые статьи:

Комментариев нет:

Отправить комментарий