我有一个.dll,我正在尝试使用 Unity3D 。我需要的是两者之间的实时通信所以在DLL中我有一个循环来做一些计算,然后用参数myvalue,0调用以下函数
__declspec(dllexport) double __cdecl MyMathFuncs::Divide(double value, double b)
{
static int numfound = 0;
if(value == -1 && b == -1) //for args -1, -1, this is a...
return numfound; // ...GETTER
else numfound = value ; // if args are other then -1,-1, this is a SETTER
return -1;
}
问题在于每次从Unity的Update()函数调用此函数作为getter时,返回零,无论我在其他函数的循环中将其设置为什么。我在Visual Studio中对它进行了测试,并且我得到了预期的输出 - 所以我认为变量的范围或生命周期存在问题。我也尝试声明一个全局变量并访问它,但它的值也是零。我该如何解决这个问题?
答案 0 :(得分:0)
您的方法确实返回
0
如果value
且b
等于-1
-1
否则。您确定最后一句话不应该是return numfound
(或return value
)吗?
设置numfound = value
对输出没有任何影响,因为您使用每个方法调用重新初始化numfound
。如果你想在方法之外使用它,你需要将它作为一个全局变量。