level 6
corpus
楼主
今天刚好要用到运行时创建和修改mesh的功能。在官方文档里查到有例子,遂照做。(我用的是4.6.1版的unity)
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
gameObject.AddComponent<MeshFilter>();
gameObject.AddComponent<MeshRenderer>();
Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.Clear();
mesh.vertices = new Vector3[] {new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0)};
mesh.uv = new Vector2[] {new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)}; mesh.SetIndices( new int[] {0, 1, 2}, MeshTopology.Triangles, 0 );
}
}
结果发现一运行就报错。说是
Not allowed to access vertices on mesh 'XXXXXXX'
UnityEngine.Mesh:set_vertices(Vector3[])
Not allowed to access uv on mesh 'XXXXXXX'
UnityEngine.Mesh:set_uv(Vector2[])
Not allowed to call SetIndices() on mesh 'XXXXXXX'
UnityEngine.Mesh:SetIndices(Int32[], MeshTopology, Int32)
这个和文档上的例子一样的,难道4.6.x版以后又有什么改动没加入文档说明中。我也查看了文档,发现mesh里面能用的方法也就那么几个,不知道大家都是怎么解决这个问题的?
2015年05月21日 14点05分
1
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
gameObject.AddComponent<MeshFilter>();
gameObject.AddComponent<MeshRenderer>();
Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.Clear();
mesh.vertices = new Vector3[] {new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0)};
mesh.uv = new Vector2[] {new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)}; mesh.SetIndices( new int[] {0, 1, 2}, MeshTopology.Triangles, 0 );
}
}
结果发现一运行就报错。说是
Not allowed to access vertices on mesh 'XXXXXXX'
UnityEngine.Mesh:set_vertices(Vector3[])
Not allowed to access uv on mesh 'XXXXXXX'
UnityEngine.Mesh:set_uv(Vector2[])
Not allowed to call SetIndices() on mesh 'XXXXXXX'
UnityEngine.Mesh:SetIndices(Int32[], MeshTopology, Int32)
这个和文档上的例子一样的,难道4.6.x版以后又有什么改动没加入文档说明中。我也查看了文档,发现mesh里面能用的方法也就那么几个,不知道大家都是怎么解决这个问题的?