有没有办法从“女性2 fbx”中提取“服饰fbx”?因为我想在运行时更改头像的衣服,所以我想提取“服饰fbx”并将其保存在数据库中,然后在运行时,如果我单击特定的按钮,我想要阿凡达服装这个“服饰fbx”。这个方法正确吗?

编辑
当我点击按钮并运行这段代码时,我会得到这个错误。
public class DressController:MonoBehaviour
{
[SerializeField] private GameObject dressObj = null;
public void SetDressWithColor(Color color){
this.dressObj.GetComponent<MeshRenderer>().material.color = color;
}
}此图片用于此错误

编辑2
我用3dmax从女性fbx中删除了连衣裙网格,然后将女性fbx导入到一个整体中,当我点击按钮时,尝试在运行时向女性添加连衣裙网格,但是裙子没有给女性添加为什么?,这是我点击按钮时使用的代码。
//I set this public variables in the Unity editor
public Mesh mesh = null; //Dress mesh
public Material material = null; //Dress_Diffuse
public Transform t = null; // CC_Base_BoneRoot
public void SetDressWithMesh()
{
var smr = this.dressObj.GetComponent<SkinnedMeshRenderer>();
smr.rootBone = t;
smr.sharedMesh = mesh;
smr.material = material;
}t是衣服的根骨(在我的代码中是"CC_Base_BoneRoot"),如图所示

发布于 2017-06-23 14:49:23
您很可能在运行时不使用fbx。当您将fbx拖到Unity中时,它会被转换成一个游戏对象的层次结构,其中包含指向网格和材料的MeshRenderer和MeshFilter。这就是你在照片中所显示的。
当你在场景中拖动它时,它会变成一个游戏对象,这就是你要处理的事情。
在您的情况下,您想要影响衣服子对象。所以首先你会找到那个或者拖动它。然后,这取决于你是想改变衣服的网眼还是只是它的材料。在第一种情况下,你可以影响形状,在第二种情况下,你可以影响颜色和纹理。
public class DressController:MonoBehaviour
{
[SerializeField] private GameObject dressObj = null;
public void SetDressWithColor(Color color){
this.dressObj.GetComponent<SkinnedMeshRenderer>().material.color = color;
}
public void SetDressWithMesh(Mesh mesh, Material material){
var smr = this.dressObj.GetComponent<SkinnedMeshRenderer>()
smr.sharedMesh = mesh;
smr.material = material;
}
}在网格更新的情况下,您也需要更改材料,因为UV地图等将不匹配anymore.Also,您的MeshRenderer可能使用多种材料。
总之,您可以为您的案例设置MeshRenderer、MeshFilter。
https://stackoverflow.com/questions/44718766
复制相似问题