包含此页的版本:
不含此页的版本:
Unity iOS 支持使用以下方法之一的有限的原生到托管回调功能:
提示:托管到非托管调用在 iOS 上占用大量处理器。尽量避免每帧调用多个本机方法。
UnitySendMessage看起来像这样:
UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
有三个参数:
UnitySendMessage有以下限制:
void MethodName(string message);.UnitySendMessage是异步的,延迟为一帧。UnitySendMessage.使用委托时,C# 端的方法必须是静态的,并用MonoPInvokeCallback属性。
要使用委托,请执行以下作:
然后,本机代码中的函数指针指向 C# 中的静态方法。
此方法的 C# 代码如下所示:
delegate void MyFuncType();
[AOT.MonoPInvokeCallback(typeof(MyFuncType))]
static void MyFunction() { }
[DllImport ("__Internal")]
static extern void RegisterCallback(MyFuncType func);
接受回调的 C 代码如下所示:
typedef void (*MyFuncType)();
void RegisterCallback(MyFuncType func) {}
注意:确保从本机方法返回的字符串值采用 UTF–8 编码并在堆上分配。