![](/img/trans.png)
[英]UNITY 2D How would I save my character, add a level selection menu, then bring my character back up again?
[英]For my character selection to work I need to refresh the character prefab in unity
我的角色選擇腳本旨在更改播放器預制件。 為了訪問它,我使用了這個腳本來改變玩家精靈。
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];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.