Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3D:Can';t在for循环中创建基本体_C#_Unity3d - Fatal编程技术网

C# Unity3D:Can';t在for循环中创建基本体

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++)

我使用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++)
    {                
        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);