版本:Unity 6 (6000.0)
语言英语
  • C#

JNINativeMethod.fnPtr

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读用户提出的每项更改建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您花时间帮助我们改进 Unity 文档的质量。

关闭

取消

public IntPtr fnPtr;

描述

函数指针。

这应该使用 Marshal.GetFunctionPointerForDelegate 获取,委托应该引用一个用 MonoPInvokeCallback 属性注释且具有以下签名的方法:static ReturnType MyMethod(IntPtr jniEnv, IntPtr objectOrClass, ...);

// Delegate difinition
delegate void JavaToCs(IntPtr jniEnv, IntPtr klass, int x);

// Method definition [MonoPInvokeCallback(typeof(JavaToCs))] static void CsMethod(IntPtr jniEnv, IntPtr klass, int x) { Debug.Log("From Java: " + x); }

// Array to be passed to AndroidJNI.RegisterNative var methods = new JNINativeMethod[] { new JNINativeMethod { name = "csMethod", signature = "(I)V", fnPtr = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(new JavaToCs(CsMethod)), } };

// Register method for Java class AndroidJNI.RegisterNatives(clazz, methods);