使用代码:
someVector.FixRounding(); //round vector's values to integers if the difference is 1 epsilon
float x = someVector.x; //still getting old value
Run Code Online (Sandbox Code Playgroud)
public static void FixRounding(this Vector3 v)
{
if (Mathf.Approximately(v.x, Mathf.Round(v.x))) v.x = Mathf.Round(v.x);
if (Mathf.Approximately(v.y, Mathf.Round(v.y))) v.y = Mathf.Round(v.y);
if (Mathf.Approximately(v.z, Mathf.Round(v.z))) v.z = Mathf.Round(v.z);
}
Run Code Online (Sandbox Code Playgroud)
虽然Mathf.Approximately返回true,但FixRounding方法实际上并不会更改向量的值.
在加载共享库的名称时,系统会根据搜索顺序或在缓存中搜索某些目录中的实际文件(例如.dll)。
我如何以编程方式获取DLL的解析路径(给定其名称,但没有实际加载它)?例如在Windows上,for kernel32或kernel32.dll它可能会返回,C:\windows\system32\kernel32.dll而给定foo它可能是C:\Program Files\my\app\foo.dll。
如果无法做到这一点,还有另一种方法来确定某些库是否属于系统吗?例如,user32.dll或者libc.so.6是系统库,但avcodec-55.dll还是myhelperslib.so没有。
我对适用于Windows,Linux和Mac OS的解决方案感兴趣。