Save && Load
// Save Data 저장을 위한 변수
[Serializable]
public class EnforceData
{
public bool activeRestraint;
public float increaseRestraintTime;
public bool divinePenetrate;
public bool divineAtkRange;
public bool divinePoisonAdditionalDamage;
public int divinePoisonAdditionalDamageCount;
public bool darkSlowAdditionalDamage;
public bool darkBleedAdditionalDamage;
public int darkIncreaseAtkSpeed;
public bool darkProjectilePenetration;
public int water2IncreaseDamage;
public bool water2BleedAdditionalRestraint;
public int water2IncreaseSlowTime;
public bool water2BackAttack;
public bool water2AdditionalProjectile;
public bool physicAdditionalWeapon;
public bool physicIncreaseWeaponScale;
public bool physicSlowAdditionalDamage;
public float increasePhysicAtkSpeed;
public bool physicIncreaseDamage;
public float increasePhysicsDamage;
public bool waterBurnAdditionalDamage;
public bool waterRestraintIncreaseDamage;
public bool waterIncreaseSlowPower;
public float increaseWaterDamage;
public bool waterSideAttack;
public bool poisonDoubleAtk;
public bool poisonRestraintAdditionalDamage;
public bool poisonInstantKill;
public bool poisonIncreaseAtkRange;
public bool activatePoison;
public int poisonOverlapping;
public bool fireBleedingAdditionalDamage;
public int fireIncreaseDamage;
public bool firePoisonAdditionalStun;
public bool fireIncreaseAtkRange;
public bool fireDeleteBurnIncreaseDamage;
public int physics2AdditionalBleedingLayer;
public bool physics2ActivateBleed;
public int physics2AdditionalAtkSpeed;
public bool physics2AdditionalProjectile;
public bool physics2ProjectilePenetration;
public int addRowCount;
public int slowCount;
public bool diagonalMovement;
public bool recoveryCastle;
public float castleMaxHp;
public int highLevelCharacterCount;
public int selectedCount;
public int expPercentage;
public int permanentIncreaseMovementCount;
public bool match5Upgrade;
public float increaseAtkDamage;
public float increaseAtkRate;
public int rewardMoveCount;
public bool addGold;
public int addGoldCount;
public List<int> characterGroupLevelUpIndexes;
}
public void SaveEnforceData()
{
var data = new EnforceData
{
activeRestraint = activeRestraint,
increaseRestraintTime = increaseRestraintTime,
divinePenetrate = divinePenetrate,
divineAtkRange = divineAtkRange,
divinePoisonAdditionalDamage = divinePoisonAdditionalDamage,
divinePoisonAdditionalDamageCount =
divinePoisonAdditionalDamageCount,
darkSlowAdditionalDamage = darkSlowAdditionalDamage,
darkBleedAdditionalDamage = darkBleedAdditionalDamage,
darkIncreaseAtkSpeed = darkIncreaseAtkSpeed,
darkProjectilePenetration = darkProjectilePenetration,
water2IncreaseDamage = water2IncreaseDamage,
water2BleedAdditionalRestraint = water2BleedAdditionalRestraint,
water2IncreaseSlowTime = water2IncreaseSlowTime,
water2BackAttack = water2BackAttack,
water2AdditionalProjectile = water2AdditionalProjectile,
physicAdditionalWeapon = physicAdditionalWeapon,
physicIncreaseWeaponScale = physicIncreaseWeaponScale,
physicSlowAdditionalDamage = physicSlowAdditionalDamage,
increasePhysicAtkSpeed = increasePhysicAtkSpeed,
physicIncreaseDamage = physicIncreaseDamage,
increasePhysicsDamage = increasePhysicsDamage,
waterBurnAdditionalDamage = waterBurnAdditionalDamage,
waterRestraintIncreaseDamage = waterRestraintIncreaseDamage,
waterIncreaseSlowPower = waterIncreaseSlowPower,
increaseWaterDamage = increaseWaterDamage,
waterSideAttack = waterSideAttack,
poisonDoubleAtk = poisonDoubleAtk,
poisonRestraintAdditionalDamage =
poisonRestraintAdditionalDamage,
poisonInstantKill = poisonInstantKill,
poisonIncreaseAtkRange = poisonIncreaseAtkRange,
activatePoison = activatePoison,
poisonOverlapping = poisonOverlapping,
fireBleedingAdditionalDamage = fireBleedingAdditionalDamage,
fireIncreaseDamage = fireIncreaseDamage,
firePoisonAdditionalStun = firePoisonAdditionalStun,
fireIncreaseAtkRange = fireIncreaseAtkRange,
fireDeleteBurnIncreaseDamage = fireDeleteBurnIncreaseDamage,
physics2AdditionalBleedingLayer =
physics2AdditionalBleedingLayer,
physics2ActivateBleed = physics2ActivateBleed,
physics2AdditionalAtkSpeed = physics2AdditionalAtkSpeed,
physics2AdditionalProjectile = physics2AdditionalProjectile,
physics2ProjectilePenetration = physics2ProjectilePenetration,
addRowCount = addRowCount,
slowCount = slowCount,
diagonalMovement = diagonalMovement,
recoveryCastle = recoveryCastle,
castleMaxHp = castleMaxHp,
highLevelCharacterCount = highLevelCharacterCount,
selectedCount = selectedCount,
expPercentage = expPercentage,
permanentIncreaseMovementCount = permanentIncreaseMovementCount,
match5Upgrade = match5Upgrade,
increaseAtkDamage = increaseAtkDamage,
increaseAtkRate = increaseAtkRate,
rewardMoveCount = rewardMoveCount,
addGold = addGold,
addGoldCount = addGoldCount,
characterGroupLevelUpIndexes =
characterGroupLevelUpIndexes.ToList()
};
var json = JsonUtility.ToJson(data);
PlayerPrefs.SetString("EnforceData", json);
}
public void LoadEnforceData()
{
if (!PlayerPrefs.HasKey("EnforceData")) return;
var json = PlayerPrefs.GetString("EnforceData");
var data = JsonUtility.FromJson<EnforceData>(json);
activeRestraint = data.activeRestraint;
increaseRestraintTime = data.increaseRestraintTime;
divinePenetrate = data.divinePenetrate;
divineAtkRange = data.divineAtkRange;
divinePoisonAdditionalDamage = data.divinePoisonAdditionalDamage;
divinePoisonAdditionalDamageCount =
data.divinePoisonAdditionalDamageCount;
darkSlowAdditionalDamage = data.darkSlowAdditionalDamage;
darkBleedAdditionalDamage = data.darkBleedAdditionalDamage;
darkIncreaseAtkSpeed = data.darkIncreaseAtkSpeed;
darkProjectilePenetration = data.darkProjectilePenetration;
water2IncreaseDamage = data.water2IncreaseDamage;
water2BleedAdditionalRestraint = data.water2BleedAdditionalRestraint;
water2IncreaseSlowTime = data.water2IncreaseSlowTime;
water2BackAttack = data.water2BackAttack;
water2AdditionalProjectile = data.water2AdditionalProjectile;
physicAdditionalWeapon = data.physicAdditionalWeapon;
physicIncreaseWeaponScale = data.physicIncreaseWeaponScale;
physicSlowAdditionalDamage = data.physicSlowAdditionalDamage;
increasePhysicAtkSpeed = data.increasePhysicAtkSpeed;
physicIncreaseDamage = data.physicIncreaseDamage;
increasePhysicsDamage = data.increasePhysicsDamage;
waterBurnAdditionalDamage = data.waterBurnAdditionalDamage;
waterRestraintIncreaseDamage = data.waterRestraintIncreaseDamage;
waterIncreaseSlowPower = data.waterIncreaseSlowPower;
increaseWaterDamage = data.increaseWaterDamage;
waterSideAttack = data.waterSideAttack;
poisonDoubleAtk = data.poisonDoubleAtk;
poisonRestraintAdditionalDamage =
data.poisonRestraintAdditionalDamage;
poisonInstantKill = data.poisonInstantKill;
poisonIncreaseAtkRange = data.poisonIncreaseAtkRange;
activatePoison = data.activatePoison;
poisonOverlapping = data.poisonOverlapping;
fireBleedingAdditionalDamage = data.fireBleedingAdditionalDamage;
fireIncreaseDamage = data.fireIncreaseDamage;
firePoisonAdditionalStun = data.firePoisonAdditionalStun;
fireIncreaseAtkRange = data.fireIncreaseAtkRange;
fireDeleteBurnIncreaseDamage = data.fireDeleteBurnIncreaseDamage;
physics2AdditionalBleedingLayer =
data.physics2AdditionalBleedingLayer;
physics2ActivateBleed = data.physics2ActivateBleed;
physics2AdditionalAtkSpeed = data.physics2AdditionalAtkSpeed;
physics2AdditionalProjectile = data.physics2AdditionalProjectile;
physics2ProjectilePenetration = data.physics2ProjectilePenetration;
addRowCount = data.addRowCount;
slowCount = data.slowCount;
diagonalMovement = data.diagonalMovement;
recoveryCastle = data.recoveryCastle;
castleMaxHp = data.castleMaxHp;
highLevelCharacterCount = data.highLevelCharacterCount;
selectedCount = data.selectedCount;
expPercentage = data.expPercentage;
permanentIncreaseMovementCount = data.permanentIncreaseMovementCount;
match5Upgrade = data.match5Upgrade;
increaseAtkDamage = data.increaseAtkDamage;
increaseAtkRate = data.increaseAtkRate;
rewardMoveCount = data.rewardMoveCount;
addGold = data.addGold;
addGoldCount = data.addGoldCount;
characterGroupLevelUpIndexes = new HashSet<int>
(data.characterGroupLevelUpIndexes);
}
}
Data 변수와 기존 강화효과 버프를 할당하여 이를 JSON으로 String 변형 후 Load 할떄는 역으로 string값을 분해할당하여 이를 기존 Bool 및 변수에 할당하여 불러오기
아래 형식으로 저장된다.
// 강화효과
{
"dark3FifthAttackBoost":false,
"dark3BleedAttack":false,
"dark3PoisonDamageBoost":false,
"dark3ShackledExplosion":false,
"dark3BleedDurationBoost":false,
"dark3DamageBoost":false,
"dark3RateBoost":0.0,
"darkFifthAttackDamageBoost":true,
"darkAttackSpeedBoost":0.0,
"darkAttackPowerBoost":0.0,
"darkKnockBackChance":false,
"darkStatusAilmentDamageBoost":false,
"darkRangeIncrease":false,
......
"permanentGroupIndex":[],"skillInstances":[]}