客户端rsa,冗余清理,bug修复,安卓build问题
This commit is contained in:
@@ -11,6 +11,7 @@ public sealed class PlayerEconomyLedger : MonoBehaviour
|
||||
private PlayerEconomyPayload payload;
|
||||
private bool initialized;
|
||||
private bool loadedFromSave;
|
||||
private bool hasAnyRecoverableLocalState;
|
||||
private Player_SO boundPlayerData;
|
||||
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
||||
@@ -69,13 +70,18 @@ public sealed class PlayerEconomyLedger : MonoBehaviour
|
||||
|
||||
PlayerEconomyPayload loadedPayload;
|
||||
loadedFromSave = PlayerEconomyStorage.TryLoad(out loadedPayload);
|
||||
hasAnyRecoverableLocalState = loadedFromSave || PlayerEconomyStorage.HasAnyRecoverableState();
|
||||
payload = loadedPayload;
|
||||
if (payload == null)
|
||||
{
|
||||
payload = PlayerEconomyStorage.CreateDefaultPayload();
|
||||
}
|
||||
initialized = true;
|
||||
SaveNow();
|
||||
|
||||
if (loadedFromSave)
|
||||
{
|
||||
SaveNow();
|
||||
}
|
||||
}
|
||||
|
||||
public void AttachPlayerData(Player_SO playerData)
|
||||
@@ -88,12 +94,17 @@ public sealed class PlayerEconomyLedger : MonoBehaviour
|
||||
InitializeIfNeeded();
|
||||
boundPlayerData = playerData;
|
||||
|
||||
if (!loadedFromSave)
|
||||
if (!loadedFromSave && !hasAnyRecoverableLocalState)
|
||||
{
|
||||
payload.coins = Mathf.Max(0, playerData.Coins);
|
||||
payload.material = Mathf.Max(0, playerData.Material);
|
||||
// 首次启动且无任何可恢复存档:用硬编码默认值(0)建立初始存档,
|
||||
// 绝不读取 Player_SO 的烘焙值——该资产可能被打包时的测试数据污染,
|
||||
// 直接采用会把玩家进度“种”成 999988 之类的测试数值。
|
||||
payload = PlayerEconomyStorage.CreateDefaultPayload();
|
||||
SyncToPlayerData();
|
||||
SaveNow();
|
||||
loadedFromSave = true;
|
||||
hasAnyRecoverableLocalState = true;
|
||||
NotifyEconomyChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -217,6 +228,13 @@ public sealed class PlayerEconomyLedger : MonoBehaviour
|
||||
SaveNow();
|
||||
}
|
||||
|
||||
public void SetMaterial(int value)
|
||||
{
|
||||
InitializeIfNeeded();
|
||||
payload.material = Mathf.Max(0, value);
|
||||
SaveNow();
|
||||
}
|
||||
|
||||
public void SaveNow()
|
||||
{
|
||||
InitializeIfNeededForSave();
|
||||
|
||||
Reference in New Issue
Block a user