我在编写Unity的C++插件方面非常新,并且必须现在这样做。我一直在松散地遵循这个教程,并在Visual Studio DLL项目中创建了一个不太有创意的名为UnityPluginTest的东西:
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
#define DLLExport __declspec (dllexport)
extern "C"
{
DLLExport int RandomNumber(int min, int max)
{
srand((unsigned int)time(0));
return (rand() % (max - min) + min);
}
}
我创建了一个全新的Unity项目来测试它(如果有影响,Unity版本为2020.2.f1),并将编译后的.dll文件复制到新文件夹Assets/Plugins中。然后我创建了一个名为TestFirstUnityPluginTest.cs的新脚本(同样是无创意的),其中包含以下内容:
using System.Runtime.InteropServices;
using UnityEngine;
public class TestFirstUnityPluginTest : MonoBehaviour
{
const string dll = "__Internal";
[DllImport(dll)]
private static extern int RandomNumber(int min, int max);
void Start()
{
Debug.Log(RandomNumber(0, 10));
}
}
我将脚本放到游戏对象上并点击播放,出现错误提示"EntryPointNotFoundException: RandomNumber",堆栈跟踪指向 Debug.Log() 调用。有任何想法是我做错了什么吗?先谢谢您。