実現したいこと、unit上で複数キャラクターをしようしたいのですが、参考にしたサイトの、
スクリプトでは不具合が起きるらしく、どうしてよいか分かりません。
(スクリプトをまだちゃんと理解していません)
c#
1コード 2V 3using UnityEngine; 4using System.Collections; 5using System.Collections.Generic; 6 7public class ChangeChara : MonoBehaviour { 8 9 // 現在どのキャラクターを操作しているか 10 private int nowChara; 11 // 操作可能なゲームキャラクター 12 [SerializeField] 13 private List<GameObject> charaLists; 14 15 void Start () { 16 // 最初の操作キャラクターを0番目のキャラクターにする為、キャラクターの総数をnowCharaに設定し最初のキャラクターが設定されるようにする 17 nowChara = charaLists.Count; 18 ChangeCharacter(nowChara); 19 } 20 21 void Update () { 22 // Qキーが押されたら操作キャラクターを次のキャラクターに変更する 23 if(Input.GetKeyDown("q")) { 24 ChangeCharacter(nowChara); 25 } 26 } 27 28 // 操作キャラクター変更メソッド 29 void ChangeCharacter(int tempNowChara) { 30 31 bool flag; // オン・オフのフラグ 32 // 次の操作キャラクターを指定 33 int nextChara = tempNowChara + 1; 34 // 次の操作キャラクターがいない時は最初のキャラクターに設定 35 if(nextChara >= charaLists.Count) { 36 nextChara = 0; 37 } 38 // 次の操作キャラクターだったら動く機能を有効にし、それ以外は無効にする 39 for(var i = 0; i < charaLists.Count; i++) { 40 41 if(i == nextChara) { 42 flag = true; 43 } else { 44 flag = false; 45 } 46 // 操作するキャラクターと操作しないキャラクターで機能のオン・オフをする 47 charaLists[i].GetComponent< ControlOnOffChara >().enabled = flag; 48 // キャラクターのアニメーションを最初の状態にする為アニメーションパラメータのSpeedを0にする 49 charaLists[i].GetComponent<Animator>().SetFloat("Speed", 0); 50 } 51 // 次の操作キャラクターを現在操作しているキャラクターに設定して終了 52 nowChara = nextChara; 53 } 54}