为了让我的角色选择工作,我需要刷新统一的角色预制



我的角色选择脚本旨在更改玩家预设。为了访问它,我使用这个脚本,它被编程为改变玩家的精灵。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SkinManager : MonoBehaviour
{
public SpriteRenderer sr;
public SpriteRenderer displaysr;
public List<Sprite> skins = new List<Sprite>();
private int selectedskin = 0;
public GameObject playerskin;




public void Start()
{

if (PlayerPrefs.HasKey("Selected_skin"))
{

selectedskin = PlayerPrefs.GetInt("Selected_skin");
sr.sprite = skins[selectedskin];
}

sr.sprite = skins[selectedskin];
sr.sprite = displaysr.sprite;
}
public void NextOption()
{
selectedskin = selectedskin + 1;
if (selectedskin == skins.Count)
{
selectedskin = 0;
}
sr.sprite = skins[selectedskin];
displaysr.sprite = skins[selectedskin];
}

public void Update()
{
}


public void BackOption()
{
selectedskin = selectedskin - 1;
if (selectedskin < 0)
{
selectedskin = skins.Count - 1;
}
sr.sprite = skins[selectedskin];
displaysr.sprite = skins[selectedskin];
}



public void PlayGame()
{
if (PlayerPrefs.HasKey("Selected_skin") == false)
{
PlayerPrefs.SetInt("Selected_skin", selectedskin);
}


SceneManager.LoadScene("LevelSelection");
}
}

如果你们中有人能帮助我,那将是一个非常好的帮助。请给我另一个脚本版本

假设你的播放器是DontDestroyOnLoad对象,从它的外观来看,你的播放器有一个完整的纹理,我会这样做:

//Assuming SkinManager is on the Player object (I left out the default using tags)
using UnityEngine.UI;
public SkinManager : MonoBehavior
{
//In this example skins[0] is the default skin
public List<Sprite> skins;
public SpriteRenderer sr;
int selectedSkin;
void Start()
{
sr.sprite = skins[0];
}
//As this is probably for a button I made it public
public void NextOption()
{
//Check if we have reached the maximum BEFORE(your previous error) and if so reset
if(selectedSkin == skins.Count - 1/*-1 due to the fact the total number is returned not the last index*/)
selectedSkin = 0;
else
selectedSkin++;
sr.sprite = skins[selectedSkin];
}
public void PreviousOption()
{
if(selectedSkin == 0)
selectedSkin = skins.Count - 1;
else
selectedSkin--;
sr.sprite = skins[selectedSkin];
}
}

最新更新