在C++中呼叫Unity3D中的託管方法
阿新 • • 發佈:2018-11-27
假設我們要呼叫一個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++" );//後面就可以一直使用這個進行呼叫了
}