1. 程式人生 > >在C++中呼叫Unity3D中的託管方法

在C++中呼叫Unity3D中的託管方法

假設我們要呼叫一個C#中的靜態方法,如Debug.Log方法

public static void DebugCallback(int mode, string text)
{
    UnityEngine.Debug.Log(text);
}
public delegate void CSDebugCallback(int debugMode,string text);
[DllImport(Dllname)]
public static extern void SZVRPluginInit(CSDebugCallback debugCallback);
//在任何一個初始化外掛的地方呼叫
SZVRPluginInit(DebugCallback);

C++裡面我們需要保留一個函式指標,但是也要先宣告型別

typedef void(__stdcall *DebugCallback)(int,char* str);
DebugCallback g_UnityDebugLog;
void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API SZVRPluginInit(DebugCallback callback)
{
	g_UnityDebugLog = callback;
	g_UnityDebugLog(0, "Unity DebugLog Call from C++"
);//後面就可以一直使用這個進行呼叫了 }