【问题标题】:Adding a MeshFilter mesh via script?通过脚本添加 MeshFilter 网格?
【发布时间】:2015-10-07 19:19:35
【问题描述】:

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

GameObject obj = new GameObject("Player");
MeshFilter meshFilter = obj.AddComponent<MeshFilter>();
meshFilter.mesh = 

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

更新

我原以为这会起作用:

meshFilter.mesh = Resources.Load<Mesh>("Capsule");

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

【问题讨论】:

标签: c# unity3d mesh


【解决方案1】:

我不知道直接的方法如何做,不知道直接的方法怎么做,但有一种“hacky”的方法:

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

这有帮助吗?

【讨论】:

  • 是的,这有帮助,谢谢!我想出了一个非常相似的方法:创建一个GameObject.CreatePrimitive(PrimitiveType.Capsule) 并简单地将其用作我的游戏对象创建的基础。我只需要从中删除网格渲染器,因为我不需要它。
  • 很高兴我能帮上忙。 :)
【解决方案2】:
GameObject obj=GameObject.CreatePrimitive(PrimitiveType.Capsule);
obj.name="Player";

【讨论】:

  • 不,这会创建GameObject,但不会创建Mesh。我已经试过了。
  • 你可以通过obj.GetComponent&lt;MeshFilter&gt;().mesh 获取网格吗?
  • 我想你误解了我的问题。我不需要获取网格,我需要从 Unity 默认资源中将其设置为 Capsule Mesh。
猜你喜欢
  • 2013-09-18
  • 2019-07-21
  • 2011-11-30
  • 1970-01-01
  • 2020-04-14
  • 1970-01-01
  • 2013-04-29
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多