为了使我的角色选择起作用,我需要统一刷新角色预制件
Posted
技术标签:
【中文标题】为了使我的角色选择起作用,我需要统一刷新角色预制件【英文标题】:For my character selection to work I need to refresh the character prefab in unity 【发布时间】:2021-12-23 13:25:30 【问题描述】:我的角色选择脚本是为了改变玩家预制件。为了访问它,我使用这个脚本来改变玩家精灵。
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");
如果你们中的任何人可以帮助我,那将是一个非常好的帮助。请给我另一个脚本版本
【问题讨论】:
那么问题/问题到底是什么? 所以playerprefab的精灵不想输出选中的角色 【参考方案1】:假设你的播放器是一个 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];
【讨论】:
我试过了,但还是不行,你能不能给我一个很好的教程,它的目的是改变主要的玩家精灵? @RayanHilali 很抱歉回答迟了,但我在 Unity 以外的项目上工作了一段时间,但我可以研究一个应该可行的解决方案 非常感谢,完成后能把代码发给我吗?我的电子邮件是:rayan.hilali@gmail.com @RayanHilali 我会尽快发送我目前不在家,但今天我开车回去,应该能够完成一个工作示例以上是关于为了使我的角色选择起作用,我需要统一刷新角色预制件的主要内容,如果未能解决你的问题,请参考以下文章