//ユニット配列からユニットを描画する(キャラインスタンスの作成) public void DrawUnitInit() { for (int i = 0; i < mapynum; i++) { for (int j = 0; j < mapxnum; j++) { //キャラが居れば if (BattleVal.mapdata[(int)MapdataList.MAPUNIT][i][j] != 0) { int unitid = 0; //GameObject tmpchara = Instantiate(UnitList[unitid], new Vector3(), Quaternion.identity); //読み込んだunitidのUnitdataを作成する Unitdata tmpchara; if (BattleVal.mapdata[(int)MapdataList.PARTY_CHECK][i][j] == 0) { //MAPで指定されたキャラ(敵orスポット参戦) //マップデータ配列の数値が、配列添え字よりも1大きいことに注意する unitid = BattleVal.mapdata[(int)MapdataList.MAPUNIT][i][j] - 1; tmpchara = new Unitdata(spotunitandlv[unitid].unitname, spotunitandlv[unitid].level); } else { //パーティメンバーのキャラ //複製元のUnitSaveDataをロード unitid = BattleVal.mapdata[(int)MapdataList.MAPUNIT][i][j]; tmpchara = new Unitdata(GameVal.masterSave.id2unitdata[unitid]); //HPとスキル使用回数の回復 tmpchara.hp = tmpchara.status.maxhp; foreach (Skill skill in tmpchara.skills) { skill.use = skill.maxuse; } tmpchara.partyid = unitid; } tmpchara.x = j; //初期位置を設定 tmpchara.y = i; tmpchara.hp = tmpchara.status.maxhp; tmpchara.gobj.layer = 8; //レイヤー番号 //Addする前のunitlistのサイズが、Addされた末尾のラベルになる int tmpcharalabel = BattleVal.unitlist.Count; //tmpcharaをunitlistに加える BattleVal.unitlist.Add(tmpchara); BattleVal.id2index.Add(string.Format("{0},{1}", j, i), tmpchara); DrawCharacter(BattleVal.unitlist[tmpcharalabel].gobj, j, i); //足元にチーム識別タイルを GameObject unittile; if (tmpchara.team == 0) { unittile = Instantiate(prefabPlayerTile, tmpchara.gobj.transform); unittile.transform.localScale = new Vector3(unittile.transform.localScale.x / unittile.transform.lossyScale.x, 0.01f, unittile.transform.localScale.z / unittile.transform.lossyScale.z); DrawCharacter(unittile, tmpchara.x, tmpchara.y); } else if (tmpchara.team == 1) { unittile = Instantiate(prefabEnemyTile, tmpchara.gobj.transform); unittile.transform.localScale = new Vector3(unittile.transform.localScale.x / unittile.transform.lossyScale.x, 0.01f, unittile.transform.localScale.z / unittile.transform.lossyScale.z); DrawCharacter(unittile, tmpchara.x, tmpchara.y); } //向き調整 switch (BattleVal.mapdata[(int)MapdataList.MAPDIRECT][i][j]) { //上 case 1: LookAtCharacter(BattleVal.unitlist[tmpcharalabel], 0, -1); break; //下 case 2: LookAtCharacter(BattleVal.unitlist[tmpcharalabel], 0, 1); break; //左 case 3: LookAtCharacter(BattleVal.unitlist[tmpcharalabel], -1, 0); break; //右 case 4: LookAtCharacter(BattleVal.unitlist[tmpcharalabel], 1, 0); break; default: break; } } } } }