如果我这样做:
Model test1 = content.Load<Model>(@"Models/floorTile");
Model test2 = content.Load<Model>(@"Models/floorTile");
Model test3 = content.Load<Model>(@"Models/floorTile");
foreach (ModelMesh mesh in test1.Meshes)
foreach (Effect effect in mesh.Effects)
((BasicEffect)effect).DiffuseColor = Color.Red.ToVector3();
所有三个模型都将被分配红色,而不仅仅是 test1。
这是我的问题的简化版本,在实际版本中,我使用的是实际的 HLSL 效果,虽然我知道如何克隆单个效果以处理多个唯一的 fbx,但我不确定如何创建多个实例一个 3dmodel 并分配每个它自己的纹理,而不是它们都引用一个纹理/效果,因此我场景中的每个“floorTile”看起来总是一样的。
我能想到的唯一解决方法是为每个模型创建一个不同的地板砖 fbx 模型,但我有很多瓷砖,所以这远非理想。