//ロード時のコンストラクタ 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; }
//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; }