#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 Я отправлю его, как только смогу, в настоящее время меня нет дома, но сегодня я возвращаюсь и должен быть в состоянии закончить рабочий пример