我有一个包含多个元素的网格(如body,head等)。
我已将其保存为预制,显示某些元素并隐藏其他元素(基本上在网格的编辑器层次结构中,我取消选中"蒙皮网格渲染器",用于我想要隐藏的内容);因此,当我实例化预制件时,它看起来总是一样的(当然是预期的)。
现在,我想随机化显示的元素,并改善视觉多样性;虽然我有要求,例如:
等等;提出一个想法。
我该如何处理这个问题?我想将网格的每个元素分配给一个脚本,使用公共变量并将其附加到预制件上;然后在该脚本中创建规则以仅显示我需要的内容,而其余部分禁用蒙皮网格渲染器。
这意味着在词典的层次结构中添加各种元素,因此我可以随机选择每个类别(衣服,身体,武器,头部等)的一个元素。
public class CreateRandomGuy : MonoBehaviour
{
public GameObject body;
public GameObject body2;
public GameObject body3;
public GameObject weapon1;
public GameObject weapon2;
List<GameObject> bodies;
List<GameObject> weapons;
public void RandomizeGuy()
{
bodies = new List<GameObject>(){
body1,
body2,
body3
};
weapons = new List<GameObject>(){
weapon1,
weapon2
};
body_to_show = rnd.next(0,2);
weapon_to_show = rnd.next(0,1);
// instantiate mesh with ResourceLoad
GameObject randomguy = Instantiate(Resources.Load("theguy"));
// enable the skinned mesh rendered for the random element
bodies[body_to_show].GetComponent<SkinnedMeshRenderer>.Enable(true);
weapons[weapon_to_show].GetComponent<SkinnedMeshRenderer>.Enable(true);
}
}
在纸上它起作用,在实施之前我想看看替代方案,可能(当然?)比我的方法更好。