嗨,我正在制作一个游戏,在这个游戏中我创建了一个角色选择场景,在这个场景中我向玩家展示了一些具有不同材料的模型,现在我希望这些材料在不改变模型的情况下传递到游戏场景中,这里是接收端代码,代码在选择端也是几乎相同的。我从主菜单脚本中获取数据的脚本。
public GameObject BabyPajama;
public GameObject BabyDiaper;
public SkinnedMeshRenderer BabyPajamaRenderer;
public int selectedIndex;
void Start()
{
ReplaceSuit(PlayerPrefs.GetInt("UnlockedSkin"));
//PajamasTexture = MainMenu.Instance.PajamasTexture;
//BabyPajamaRenderer = MainMenu.Instance.BabyPajamaRenderer;
//selectedIndex = MainMenu.Instance.sId;
}
void Update()
{
}
public void ReplaceSuit(int index)
{
selectedIndex = index;
for (int i = 0; i < 5; i++)
{
if (index == 0)
{
BabyDiaper.SetActive(true);
BabyPajama.SetActive(false);
}
else
{
BabyDiaper.SetActive(false);
BabyPajama.SetActive(true);
}
if (i == index) Hair[i].SetActive(true);
else Hair[i].SetActive(false);
}
BabyPajamaRenderer.materials[1].mainTexture = PajamasTexture[index];
}
}
您可以创建一种" modelhandler ";GameObject带有一个脚本来保存你的材质。然后你让Unity在切换场景时不要破坏GameObject。
看到:DontDestroyOnLoad
public class DontDestroy : MonoBehaviour
{
void Awake()
{
DontDestroyOnLoad(gameObject);
}
}
在另一个场景中,您可以搜索ModelHandler"通过FindGameObjectsWithTag标记。