Cita de: DiegoSadiGame date=1467763031Pues esto va asi.
guardaremos tu variable de tipo entero index de tú escript en un PlayerPrefs para saver en la otra escena lo que elegimos.
Asi queda tu escrip, pero necesitamos otro que cargara el prefab
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class CharacterSelector : MonoBehaviour {
public List<GameObject> characterList;
public int index=0;
void Start () {
GameObject[] characters = Resources.LoadAll<GameObject>("Prefab");
foreach (GameObject c in characters) {
GameObject _char = Instantiate(c) as GameObject;
_char.name = c.name;
_char.transform.SetParent(GameObject.Find("CharacterList").transform);
characterList.Add(_char);
_char.SetActive(false);
GameObject.Find("CharName").GetComponent<Text>().text = characterList[index].name;
characterList[index].SetActive(true);
}
}
public void Next(){
characterList [index].SetActive (false);
if (index == characterList.Count - 1) {
index = 0;
} else {
index++;
}
GameObject.Find("CharName").GetComponent<Text>().text = characterList[index].name;
characterList [index].SetActive (true);
}
public void Previous(){
characterList [index].SetActive (false);
if (index == 0) {
index = characterList.Count-1;
} else {
index--;
}
GameObject.Find("CharName").GetComponent<Text>().text = characterList[index].name;
characterList [index].SetActive (true);
}
public void Play(){
// primero guardamos el valor de index
PlayerPrefs.SetInt ("PlayerIndex",index);
//luego cargamos la siguiente esena
SceneManager.LoadScene ("Level7");
}
void Update(){
characterList [index].transform.Rotate (0,0.5f,0);
}
}
Este Script yo lo puse en la camara, y necesita un ponto donde instanciara al prefab, puedes crear un objeto bacio con el atajo ctrl + shift + N
using UnityEngine;
using System.Collections;
public class CharacterStart : MonoBehaviour {
public GameObject[] Player;
public GameObject StartPosition;
public int Index;
// Use this for initialization
void Start () {
//El valor que guardamos aqui se lo pasamos a index
Index = PlayerPrefs.GetInt ("PlayerIndex",0);
//con esta linea instanciamos el prefab en la posicion en la que pusiste el objeto bacio
Instantiate (Player [Index], StartPosition.transform.position, Quaternion.identity);
}
}
en el inspector añades tus prefabs a player y el objeto bacio en StratPosition, la verdad es bastante simple. espero te sirva.
Wow la verdad es que visto como lo pones parece bastante fácil jaja, acabo de probarlo pero a la hora de jugar me salta un error que te dejo aquí en una imagen.
¿Este error puede deberse a que ya tengo creado dos puntos de spawn para el player?
Un saludo y mil gracias de nuevo, estoy aprendiendo bastante con tu ayuda
.EDITO:
El error era que no había metido los prefabs pero ahora nace otro error distinto..
Resulta que si que me instancia el personaje elegido, pero el juego no inicia con el, en el prefab de mi network manager sigue estando el prefab de siempre y el que instanciamos gracias a tu script aparece como un objeto más pero no puedo jugar con el, no se si me explico, se instancia correctamente pero no puedo usarlo de personaje principal ya que no es el prefab del network manager...
MIl gracias de nuevo, a ver si a la próxima logramos dar con la solución..jaja

, un saludo enorme y perdonad que sea así de pesado, llevo desde las 9:00 de la mañana con esto y quería dejar el tema bien claro antes de rendirme por hoy jeje.