Exemplo n.º 1
0
    //ロード時のコンストラクタ
    public Unitdata(UnitSaveData save, bool instantiateflag = true, bool is_unitcheck = false)
    {
        CharaData loaddata = ScriptableObject.Instantiate(Resources.Load(string.Format("BattleChara/{0}", save.scobj)) as CharaData);

        id = 0;
        //戦闘パートの場合
        if (!is_unitcheck)
        {
            //idcount中に未使用があるかを探索する
            for (int tempid = 1; tempid < idcount; tempid++)
            {
                bool contflag = false;
                foreach (Unitdata tempunit in BattleVal.unitlist)
                {
                    if (tempunit.id == tempid)
                    {
                        contflag = true;
                        break;
                    }
                }
                if (contflag)
                {
                    continue;
                }
                //ここに到達したという事は、そのtempidは使用されていない
                id = tempid;
            }
            if (id == 0)
            {
                id = idcount + 1;
                idcount++;
            }
        }
        charaname    = loaddata.charaname;
        jobname      = loaddata.jobname;
        attackrange  = loaddata.attackrange;
        attackeffect = loaddata.attackeffect;
        status       = loaddata.init_status;
        faceimage    = loaddata.faceimage;
        team         = loaddata.init_team;
        gobj_prefab  = loaddata.gobj;
        if (instantiateflag)
        {
            gobj = MonoBehaviour.Instantiate(gobj_prefab, new Vector3(), Quaternion.identity);
        }
        zocflag    = loaddata.zocflag;
        zoclevel   = loaddata.zoclevel;
        skillTrees = loaddata.skillTrees;

        //skills = loaddata.skills;

        /*
         * foreach (Skill skill in skills)
         *  skill.use = skill.maxuse;
         */
        routin = loaddata.routin;

        //初期設定ファイルからの変更を獲得
        savescobj    = save.scobj;
        status.level = save.level;
        x            = save.x;
        y            = save.y;
        hp           = save.hp;
        status.exp   = save.exp;

        skills = new List <Skill>();
        foreach (SkillTree skilltree in loaddata.skillTrees)
        {
            if (status.level >= skilltree.getlevel)
            {
                skills.Add(ScriptableObject.Instantiate <Skill>(skilltree.skill));
            }
        }

        //スキル使用回数
        if (skills.Count > 0)
        {
            for (int numskill = 0; numskill < save.skilluses.Count; numskill++)
            {
                //スキル名の一致するスキルを探索し、使用回数をロードする。
                foreach (Skill skill in skills)
                {
                    if (skill.skillname == save.skillname[numskill])
                    {
                        skill.use = save.skilluses[numskill];
                        break;
                    }
                }
            }
        }
        movable   = save.movable;
        atackable = save.atackable;

        partyid = save.partyid;
    }
Exemplo n.º 2
0
    //Scriptable Objectからのキャラ読み込み(コンストラクタ)
    public Unitdata(string scobj, int level = -1, int partyid = 0)
    {
        CharaData loaddata = ScriptableObject.Instantiate(Resources.Load(string.Format("BattleChara/{0}", scobj)) as CharaData);

        id = 0;
        //idcount中に未使用があるかを探索する
        for (int tempid = 1; tempid < idcount; tempid++)
        {
            bool contflag = false;
            foreach (Unitdata tempunit in BattleVal.unitlist)
            {
                if (tempunit.id == tempid)
                {
                    contflag = true;
                    break;
                }
            }
            if (contflag)
            {
                continue;
            }
            //ここに到達したという事は、そのtempidは使用されていない
            id = tempid;
        }
        if (id == 0)
        {
            id = idcount + 1;
            idcount++;
        }
        charaname   = loaddata.charaname;
        jobname     = loaddata.jobname;
        attackrange = loaddata.attackrange;
        status      = loaddata.init_status;
        if (level > 0)
        {
            status.level = level;
        }
        faceimage    = loaddata.faceimage;
        team         = loaddata.init_team;
        gobj_prefab  = loaddata.gobj;
        gobj         = MonoBehaviour.Instantiate(gobj_prefab, new Vector3(), Quaternion.identity);
        attackeffect = loaddata.attackeffect;
        zocflag      = loaddata.zocflag;
        zoclevel     = loaddata.zoclevel;
        skillTrees   = loaddata.skillTrees;
        skills       = new List <Skill>();
        foreach (SkillTree skilltree in loaddata.skillTrees)
        {
            if (loaddata.init_status.level >= skilltree.getlevel)
            {
                skills.Add(ScriptableObject.Instantiate <Skill>(skilltree.skill));
            }
        }
        //skills = loaddata.skills;
        foreach (Skill skill in skills)
        {
            skill.use = skill.maxuse;
        }
        routin       = loaddata.routin;
        savescobj    = scobj;
        this.partyid = partyid;
    }