Lea los documentos, es bastante fácil y directo: Creación de complementos para iOS y Unity – Manual: complementos nativos e interfaz de complementos nativos de bajo nivel. eso es todo lo que necesitas.
¡Hágalo usted mismo, intente, falle y aprenda!
Ahora veamos cómo podemos hacer esto:
- ¿Puede ser posible que Apple esté inyectando errores intencionales para impulsar a los clientes a una actualización de la versión de iOS?
- ¿Cuáles son los principales desafíos al usar D3.js en iOS?
- Cómo ayudar a Apple a agregar mi idioma a iOS
- Cómo actualizar mi iOS 7 a iOS 9
- ¿Cuáles son las formas éticas de obtener reseñas y calificaciones en la App Store?
En su proyecto de Unity, cree una carpeta Assets / Plugin / iOS. Los archivos directamente en esa carpeta (no pueden estar en una subcarpeta) se agregan automáticamente a su proyecto de iOS cuando Unity crea una compilación de iOS.
Crearemos un archivo testplugin.mm en esa carpeta. En ese archivo, colocamos el código para el lado iOS del complemento. Unity necesita que los complementos tengan un nombre c. Entonces, lo envolvemos en una “C” externa. Como dice el documento Building Plugins para iOS al implementar el complemento, debe asegurarse de que las funciones se declaren con el enlace C para evitar problemas de cambio de nombre.
Aquí hay un complemento de ejemplo:
“C” externa
{
int _add (int x, int y)
{
// Solo un ejemplo simple de devolver un valor int
devolver x + y;
}
// Devuelve un char * (una cadena a Unity)
char * _helloWorldString ()
{
// Podemos usar NSString e ir a la cadena c que Unity quiere
NSString * helloString = @ “Hola Mundo”;
// El método UTF8String nos obtiene una cadena de CA. Luego tenemos que malloc una copia para dar a Unity. Reutilizo un método a continuación que lo hace fácil.
return cStringCopy ([helloString UTF8String]);
}
}
// También me gusta incluir estos dos métodos convenientes para convertir entre cadena c y NSString *. Debe devolver una copia de la cadena c para que Unity maneje la memoria y obtenga un valor válido.
char * cStringCopy (const char * string)
{
if (cadena == NULL)
devuelve NULL;
char * res = (char *) malloc (strlen (cadena) + 1);
strcpy (res, cadena);
volver res;
}
Y eso es todo para un simple complemento de iOS. Ahora necesitamos un script de Unity para usarlo.
Cree un archivo llamado TestPlugin.cs en Unity.
usando UnityEngine;
usando System.Collections;
// Necesitamos este para importar nuestras funciones IOS
usando System.Runtime.InteropServices;
TestPlugin de clase pública: MonoBehaviour
{
#if UNITY_IPHONE
[DllImport (“__Internal”)]
privado estático externo int _add (int x, int y);
// En su mayor parte, sus importaciones coinciden con la función definida en el código de iOS, excepto que char * se reemplaza con una cadena aquí para que obtenga una cadena C #.
[DllImport (“__Internal”)]
cadena externa estática privada _helloWorldString ();
#terminara si
// Ahora crea métodos para proporcionar la funcionalidad de iOS
static int Add (int x, int y)
{
int resultado = 0;
// Verificamos nuevamente si hay UNITY_IPHONE, así que no lo intentamos si no es la plataforma iOS.
#if UNITY_IPHONE
// Ahora comprobamos que en realidad es un dispositivo / simulador de iOS, no el Unity Player. Solo obtienes complementos en el dispositivo real o en el Simulador de iOS.
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
resultado = _add (x, y);
}
#terminara si
resultado de retorno;
}
cadena estática HelloWorldString ()
{
cadena helloWorld = “”;
#if UNITY_IPHONE
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
helloWorld = _helloWorldString ();
}
#terminara si
}
}
Otra opción para devolver un valor de su código iOS a Unity es en cualquier momento en su código iOS, puede llamar a UnitySendMessage("UnityObjectName", "UnityObject'sMethodName", "Some message here")
. Eso hace que Unity busque ese objeto en su escena y luego llame a ese método y le dé esa cadena. Por lo tanto, si crea un script TestPluginListener.cs y tiene un método void ListenerMethod(string message)
, puede crear un objeto TestPluginListener en su escena, agregar ese componente de script y luego llamar a UnitySendMessage("TestPluginListener", "ListenerMethod", "My test message");
en tu código iOS. Su script entonces recibiría ese mensaje y usted podría procesarlo como quiera.
No escribo código aquí en quora para tales preguntas generalmente, pero parece que tuvo suerte con eso. Gracias por A2A Rohith Shenoy