c# - Vector3 [] Unity 没有填满值
问题描述
我正在尝试在 Unity C# 脚本中读取 JSON 文件并用这些值填充 Vector3[]。
JSON文件如下:
"offsets": [
[0.01,0.02,0.03],
[0.04,0.05,0.06]
]
我正在使用以下代码。
SimpleJSON.JSONNode offset_node = SimpleJSON.JSON.Parse(filePath);
Vector3[] offsets = new Vector3[2];
for (int i = 0; i < offset_node["offsets"].Count; i++)
{
offsets[i] = new Vector3(offset_node["offsets"][i][0].AsFloat, offset_node["offsets"][i][1].AsFloat, offset_node["offsets"][i][2].AsFloat);
}
Debug.Log(offsets[0]);
Debug.Log(offset_node["offsets"][0][0].AsFloat);
但调试消息显示:
(0.0, 0.0, 0.0)
0.01
有人会指出为什么第一条日志消息没有显示为 (0.01, 0.02, 0.03)?
谢谢!
解决方案
Unity 的 Vector3.ToString 方法被隐式调用,它将 Vector3 中的值四舍五入到小数点右侧的 1 个小数位。
下面显示了正确的结果。
Debug.Log(offsets[0].ToString("F2")); // round off to 2 decimal places
推荐阅读
- javascript - 如何在我的 Vue 项目中设置 vue-burger-menu
- python - FastAPI 变量对端点函数不可见
- ruby-on-rails - 我们如何在 Rails 中为 Tree-data 实现服务器端 Ag:grid
- c# - 执行代码时 Winforms 字体看起来很模糊
- android - Android Q ADB/SHELL命令禁用应用中的所有通知,有Root
- java - 使用 protobuf for java 时使用 gradle 重复处理策略错误
- azure - Terraform如何跳过1个工作区的参数
- java - Wicket:由于浏览器信息扩展,需要双重登录
- dayjs - Dayjs 中的 isSame 方法是否会自动将日期转换为 UTC?
- matlab - 如果 A 和 B 都是相同大小的行向量,那么操作 A'\B' 会做什么?