説明(略)
キャラの数じゃなく色を換えることで選択幅を増やしてる
もちろん,キャラ自身も変えられるがその場合はresorceあたりを使うといけるはず
Playerprefsに入れたキャラ名から色を決めてアサインするスクリプト
using UnityEngine; using System.Collections; public class setMaterial : MonoBehaviour { //変数宣言 public Renderer myIka; public Renderer myTako; private string matname1; private string matname2; void Start () { materialSet (); //面倒くさいんで下にfunction作って呼び出すことに } // Update is called once per frame void Update () { } void materialSet(){ //というfunction作った matname1 = PlayerPrefs.GetString("matName1"); //距離から得られたキャラの名前をPlayerPrefsに入れあって,それを呼び出す matname2 = PlayerPrefs.GetString("matName2"); //PlayerPrefsはシーン遷移で使うのが良いかと思います myIka = GameObject.Find("ikaName").GetComponent<Renderer>(); //名前でキャラを探しそのレンダラーをmyIkaに入れる myTako = GameObject.Find("takoName").GetComponent<Renderer>(); //アサインされているマテリアルの色を色名で変更.たぶんHexも使えるはず //4択だったのでコピペ.caseとか使った方がもっとキレイになるのだろうけど,, if (matname1 == "ika01") { myIka.material.SetColor("_Color", Color.blue); } if (matname1 == "ika02") { myIka.material.SetColor("_Color", Color.green); } if (matname1 == "ika03") { myIka.material.SetColor("_Color", Color.white); } if (matname1 == "ika04") { myIka.material.SetColor("_Color", Color.yellow); } //tako用 if (matname2 == "tako01") { myTako.material.SetColor("_Color", Color.blue); } if (matname2 == "tako02") { myTako.material.SetColor("_Color", Color.green); } if (matname2 == "tako03") { myTako.material.SetColor("_Color", Color.white); } if (matname2 == "tako04") { myTako.material.SetColor("_Color", Color.yellow); } } }