C# Unity3D:Can';t在for循环中创建基本体
我使用JSON格式的字符串在Unity中创建一些多维数据集。这个想法很简单,但行不通C# Unity3D:Can';t在for循环中创建基本体,c#,unity3d,C#,Unity3d,我使用JSON格式的字符串在Unity中创建一些多维数据集。这个想法很简单,但行不通 public void CreateObject(string message) { Newtonsoft.Json.Linq.JArray jsonArray = Newtonsoft.Json.Linq.JArray.Parse(message); for (int i = 0; i < jsonArray.Count; i++)
public void CreateObject(string message)
{
Newtonsoft.Json.Linq.JArray jsonArray = Newtonsoft.Json.Linq.JArray.Parse(message);
for (int i = 0; i < jsonArray.Count; i++)
{
string jsonArrayString = jsonArray[i].ToString();
CompressorObject generator = JsonConvert.DeserializeObject<CompressorObject>(jsonArrayString);
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
Debug.Log(i);
}
}
在那里,它甚至从来没有到达日志。我没有看到任何错误,没有警告,我确保创建这样一个对象的整个过程都正常工作。你知道为什么这可能行不通吗?谢谢 我最终发现了问题——我是从另一个线程调用函数的,我没有意识到这一点。显然,Unity只允许从主线程调用
实例化
和创建原语
等函数。这是我必须解决的问题,但这也解释了我的怪异行为
编辑:我最终使用了一个名为的工具,现在一切都像一个魔咒 假设这是在运行时?从文档中:“注意:
CreatePrimitive
可能在运行时失败。如果您的项目在运行时未引用以下组件:MeshFilter
、meshrender
和BoxCollider
或SphereCollider
,则会发生这种情况。避免此崩溃的建议方法是声明这些类型的私有属性。剥离系统将识别它们的用途,包括在构建中,因此不会删除这些组件。“我认为它将抛出一个错误,而不是默默地失败。我将对此进行研究-我觉得奇怪的是,CreatePrimitive
可以在任何其他脚本中工作,但不能在这个脚本中工作。是的,我也会假设一些警告。你尝试过循环之外的方法吗?是的,同样的问题。我还尝试使用带有预置的实例化,但没有效果。无论是在循环的外部还是内部,它都不起任何作用。在运行时,检查器中没有显示任何内容?尝试设置位置,例如:gameobjectcube=GameObject.CreatePrimitive(PrimitiveType.cube);cube.transform.position=新向量3(0,0,0)代码>
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);