unity3Dでゲームを作成しています。
ゲーム内で使えるキャラクターを11体用意し、ショップ内で買えるように設定をし、そのキャラクターの選択のボタンを押すとタイトルに戻り、そのキャラクターが反映されるというスクリプトを組んだのですが、必ずCharacetrs[0]が反映されてしまいます。
ちなみにコンソール内にはDebug.Log(CnNumber)には0、Debug.Log(choname)は空白になってしまいます。
chNames内は別のスクリプトにて配列をストリング型で作成をしております。
おそらく、キャラクターの選択を行うショップのスクリプトの変数の受け渡しがうまくいっていないことが原因だと考えております。
何かアドバイスをいただけますと幸いです。よろしくお願いいたします。
タイトルに組んでいるコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using System.Linq; 6using UnityEngine.SceneManagement; 7using System; 8 9 10 11public class HomeSceneManager : MonoBehaviour 12{ 13 14 public GameObject[] Characters = new GameObject[11]; 15 16 public CharacterManager CharacterManagerScript; 17 18 19 20 21 void Awake() 22 { 23 24 PlayerPrefs.SetInt("coin", 100000); 25 26 } 27 28 void Start() 29 { 30 int CnNumber; 31 CnNumber = CharacterManagerScript.CharacterCN; 32 33 string choname = CharacterManagerScript.CHONAME; 34 35 36 if (PlayerPrefs.GetString("char") == "" || PlayerPrefs.GetString("char") == "people") 37 { 38 PlayerPrefs.SetString("char", "man-basketball-player"); 39 40 41 42 Instantiate(Characters[0], new Vector3(0.0f, 0.0f, 0.0f), 43 Quaternion.identity); 44 } 45 46 else 47 { 48 PlayerPrefs.GetString("char", choname); 49 50 Instantiate(Characters[CnNumber], 51 new Vector3(5.0f, 0.0f, 0.0f), 52 Quaternion.identity); 53 Debug.Log(CnNumber); 54 Debug.Log(choname); 55 56 57 58 59 60 } 61 62 63 64 } 65 66 67 68 69 70} 71
ショップシーン内のキャラクターを選択した際の保存スクリプト
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using System; 5using UnityEngine.SceneManagement; 6using UnityEngine.UI; 7 8public class CharacterManager : MonoBehaviour 9{ 10 public string choName; 11 public string CHONAME 12 { 13 get { return this.choName; } //取得用 14 private set { this.choName = value; } //値入力用 15 } 16 17 18 19 public int CharacterNm; 20 public int CharacterCN 21 { 22 get { return this.CharacterNm; } //取得用 23 private set { this.CharacterNm = value; } //値入力用 24 } 25 26 27 28 29 30 31 32 // キャラクターを購入済みの場合のみ処理 33 // 選択したキャラクターの名前をPlayerPrefsにcharとして保存 34 public void Select(int cN) 35 { 36 if (PlayerPrefs.GetInt(ShopSceneManager.chNames[cN]) == 0) 37 { 38 // Debug.Log("cannot use!"); 39 return; 40 } 41 choName = ShopSceneManager.chNames[cN]; 42 PlayerPrefs.SetString("char", choName); 43 CharacterNm = cN; 44 SceneManager.LoadScene("TitleScene"); 45 46 47 48 } 49} 50