通过脚本添加 MeshFilter 网格?
Adding a MeshFilter mesh via script?
如何通过 C# 添加具有特定网格的 MeshFilter 组件,比方说胶囊网格(来自 Unity 默认库资源)?我这么远...
GameObject obj = new GameObject("Player");
MeshFilter meshFilter = obj.AddComponent<MeshFilter>();
meshFilter.mesh =
胶囊和其他原始网格在 Unity 默认资源中,我知道如何在编辑器中分配它们,但如何在 C# 中获取?显然实例化不可用,因为它是库资产。
更新:
我原以为这会起作用:
meshFilter.mesh = Resources.Load<Mesh>("Capsule");
但是之后在编辑器组件检查器中网格仍然为空。
GameObject obj=GameObject.CreatePrimitive(PrimitiveType.Capsule);
obj.name="Player";
我不知道直接的方法是怎样做的,但是有 "hacky" 的方法:
MeshFilter meshfilter = gameObject.AddComponent<MeshFilter>();
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule);
meshfilter.mesh = go.GetComponent<MeshFilter>().mesh;
meshfilter.gameObject.AddComponent<MeshRenderer>();
Destroy(go);
有帮助吗?
如何通过 C# 添加具有特定网格的 MeshFilter 组件,比方说胶囊网格(来自 Unity 默认库资源)?我这么远...
GameObject obj = new GameObject("Player");
MeshFilter meshFilter = obj.AddComponent<MeshFilter>();
meshFilter.mesh =
胶囊和其他原始网格在 Unity 默认资源中,我知道如何在编辑器中分配它们,但如何在 C# 中获取?显然实例化不可用,因为它是库资产。
更新:
我原以为这会起作用:
meshFilter.mesh = Resources.Load<Mesh>("Capsule");
但是之后在编辑器组件检查器中网格仍然为空。
GameObject obj=GameObject.CreatePrimitive(PrimitiveType.Capsule);
obj.name="Player";
我不知道直接的方法是怎样做的,但是有 "hacky" 的方法:
MeshFilter meshfilter = gameObject.AddComponent<MeshFilter>();
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule);
meshfilter.mesh = go.GetComponent<MeshFilter>().mesh;
meshfilter.gameObject.AddComponent<MeshRenderer>();
Destroy(go);
有帮助吗?