使用Unity 5.6.2f1,Android 4.3。 到目前为止搜索了6个小时没有理解,仍然可能是我的参考/价值误解,非常需要帮助。
float nx = pose.Get<AndroidJavaObject>("tx").Call<float>("floatValue");
Debug.Log("nx type is " + nx.GetType() + " and value is " + nx);
float testZ = 3;
Debug.Log("testZ type is " + testZ.GetType() + " and value is " + testZ);
Vector3 otherPosition = new Vector3(nx, 2.2f, testZ);
Debug.Log("otherPosition type is " + otherPosition.GetType() + " and value is " + otherPosition);
相应的日志给出:
I / Unity(18922):nx类型为System.Single,值为0.0325
I / Unity(18922):testZ类型为System.Single,值为3
I / Unity(18922):otherPosition类型是UnityEngine.Vector3,值是(0.0,2.2,3.0)
关于姿势的更多信息:
AndroidJavaObject pose = display.Get<AndroidJavaObject>("pose");
并且
pose.Get<AndroidJavaObject>("tx")
应该返回一个Java Float对象。
我们已经尝试将nx声明为我脚本的私有浮动成员,但没有任何改变。
我没有任何想法。
答案 0 :(得分:2)
当您致电Debug.Log(vector3Obj)
时,会调用Vector3#ToString()
。这很正常。
然而 Vector3 的ToString重写将其浮点值舍入到最接近的0.1。这就是造成问题的原因:0.0325
是向下舍入到&#34; 0.0&#34;这就是为什么你得到你在调试输出中获得的结果的原因。 vector3对象仍然保持0.0325的值,但该值太小在转换为Vector3#ToString()
中的字符串时与0区分开。
试试这个:
Debug.Log("otherPosition type is " + otherPosition.GetType()
+ " and value is " + (otherPosition*10));