通过脚本添加 MeshFilter 网格?

Bad*_*Cat 1 c# mesh unity-game-engine

您如何通过 C# 添加具有特定网格的 MeshFilter 组件,比如 Capsule 网格(来自 Unity 默认库资源)?我这么远...

GameObject obj = new GameObject("Player");
MeshFilter meshFilter = obj.AddComponent<MeshFilter>();
meshFilter.mesh = 
Run Code Online (Sandbox Code Playgroud)

Capsule 和其他原始网格位于 Unity 默认资源中,我知道如何在编辑器中分配它,但是如何在 C# 中获得一个?显然, Instantiaion 不可用,因为它是一个库资产。

更新

我会认为这会起作用:

meshFilter.mesh = Resources.Load<Mesh>("Capsule");
Run Code Online (Sandbox Code Playgroud)

但是之后在编辑器组件检查器中网格仍然为空。

小智 6

我不知道直接的方式如何不知道如何直接的方式来做到这一点,但有一种“hacky”的方式:

MeshFilter meshfilter = gameObject.AddComponent<MeshFilter>();
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Capsule);
meshfilter.mesh = go.GetComponent<MeshFilter>().mesh;
meshfilter.gameObject.AddComponent<MeshRenderer>();
Destroy(go);
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?