コード例 #1
0
    //ユニット配列からユニットを描画する(キャラインスタンスの作成)
    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;
                    }
                }
            }
        }
    }