説明(略)
キャラの数じゃなく色を換えることで選択幅を増やしてる
もちろん,キャラ自身も変えられるがその場合は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);
}
}
}