Передаем делегат из Unity3D в ObjC

Привет! Давно не писал статей. Вот решил поделиться недавним хаком, который пришлось использовать для написания плагина. Будет разбирать на примере как передать из C# кода ссылку на метод(делегат) в ObjC код. Исходники я приведу, так как плагинчик опенсорсный (с открытым исходным кодом).

Что делает плагин? Он перехватывает событие openUrl и возвращает результат в приложение. Это полезно, когда нужно реализовать, например, oauth регистрацию и нужно получить токен в ответ через схему приложения.

Вы наверное знаете, что есть метод UnitySendMessage. Для его работы нужно создавать GameObject, вешать на него скрипт. К тому же, вам придется писать строки с именами объекта и методов, что не очень красиво и удобно. С делегатами круче — сам по себе он несет интерфейс, вам остается лишь вызвать его когда нужно и передать необходимые параметры.

Для начала, давайте вставим готовый ObjC код в папку Assets/Plugins/iOS/

Читать дальше →