Чтобы мой выбор персонажа работал, мне нужно обновить сборку персонажа в unity

#c# #unity3d #3d #2d #game-engine

Вопрос:

Мой сценарий выбора персонажа предназначен для изменения сборного набора игроков . Для доступа к нему я использую этот скрипт, который запрограммирован на изменение спрайта плеера.

  using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;  public class SkinManager : MonoBehaviour {   public SpriteRenderer sr;  public SpriteRenderer displaysr;  public Listlt;Spritegt; skins = new Listlt;Spritegt;();  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 lt; 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");   } }  

если кто-нибудь из вас, ребята, сможет мне помочь, это будет действительно хорошая помощь . Пожалуйста, дайте мне другую версию сценария

Комментарии:

1. Так в чем же именно заключается проблема/вопрос?

2. таким образом, спрайт 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 Listlt;Spritegt; 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];  }  }  

Комментарии:

1. Я пытался, но это не работает, можете ли вы попробовать показать мне хороший учебник, цель которого-изменить спрайт основного игрока?

2. @RayanHilali извините за поздний ответ, но я немного работал над проектами за пределами Unity, но я могу работать над решением, которое должно работать

3. большое вам спасибо, и не могли бы вы прислать мне код, когда закончите его? мой адрес электронной почты: Райан. hilali@gmail.com

4. @RayanHilali Я отправлю его, как только смогу, в настоящее время меня нет дома, но сегодня я возвращаюсь и должен быть в состоянии закончить рабочий пример