取消使用StartSceneData来跨Scene传输数据,改用CommonParameterContainer Singleton来统一保存所需数据。

This commit is contained in:
2023-11-16 01:03:54 +09:00
parent 726ce450ab
commit c2eaa8cbfc
15 changed files with 179 additions and 210 deletions
@@ -4,11 +4,6 @@ using UnityEngine;
public class CommonParameterContainer : Singleton<CommonParameterContainer>
{
[SerializeField] private GameObject hudObj;
private StartSeneData startSceneData;
private MessageBoxController messageCon;
[Header("Env")]
public bool lockMouse = false;
public float damage = 50; // damage to enemy
@@ -83,43 +78,21 @@ public class CommonParameterContainer : Singleton<CommonParameterContainer>
[Tooltip("while move mouse a little bit's penalty")]
public float mousePenalty = 0.06f;
[NonSerialized] public SceneBlocksSet scenePrefabSet;
public SceneBlocksSet scenePrefabSet;
[NonSerialized] public int gameMode; // 0 = trainning mode, 1 = play mode
[NonSerialized] public float attackProb = 0f;
[NonSerialized] public List<float> attackLevelProbs = new List<float>();
public List<float> attackLevelProbs = new List<float>();
[NonSerialized] public float gotoProb = 0f;
[NonSerialized] public List<float> gotoLevelProbs = new List<float>();
public List<float> gotoLevelProbs = new List<float>();
[NonSerialized] public float defenceProb = 0f;
[NonSerialized] public List<float> defenceLevelProbs = new List<float>();
public List<float> defenceLevelProbs = new List<float>();
private void Start()
{
Instance.persistThroughScene = false;
messageCon = hudObj.GetComponent<MessageBoxController>();
try
{
// try get start scene data
startSceneData = GameObject.Find("StartSceneDataTransfer").GetComponent<StartSeneData>();
messageCon.PushMessage(
new List<string> { "ParameterContainer:", "StartSceneDataTransfer found!" },
new List<string> { "green", "white" });
}
catch
{
// if not found, find dummy StartSeneData
startSceneData = GameObject.Find("StartSceneDataTransferDummy").GetComponent<StartSeneData>();
messageCon.PushMessage(
new List<string> { "ParameterContainer:", "StartSceneDataTransfer not found!Use Dummy." },
new List<string> { "orange" });
}
gameMode = startSceneData.gameMode;
attackProb = startSceneData.attackProb;
attackLevelProbs = startSceneData.attackLevelProbs;
gotoProb = startSceneData.gotoProb;
gotoLevelProbs = startSceneData.gotoLevelProbs;
defenceProb = startSceneData.defenceProb;
defenceLevelProbs = startSceneData.defenceLevelProbs;
scenePrefabSet = startSceneData.scenePrefabSet;
Instance.KeepThroughSceneChange();
scenePrefabSet.InitializeSceneBlocksSet();
attackLevelProbs = new List<float>(scenePrefabSet.targetLevels[0].levelSize);
gotoLevelProbs = new List<float>(scenePrefabSet.targetLevels[1].levelSize);
}
}
+1 -21
View File
@@ -10,10 +10,7 @@ public class ParameterContainer : MonoBehaviour
private TargetController targetCon;
private SceneBlockContainer blockCont;
private StartSeneData startSceneData;
private MessageBoxController messageCon;
private CommonParameterContainer commonParamCont;
private float agentDistance;
private int agentInArea;
[Header("Dynamic Rewards")]
@@ -54,7 +51,6 @@ public class ParameterContainer : MonoBehaviour
{
targetCon = targetConObj.GetComponent<TargetController>();
blockCont = blockConObj.GetComponent<SceneBlockContainer>();
messageCon = hudObj.GetComponent<MessageBoxController>();
commonParamCont = CommonParameterContainer.Instance;
areaTimeBonusPerSec = commonParamCont.areaTimeBonusPerSec;
@@ -65,22 +61,6 @@ public class ParameterContainer : MonoBehaviour
areaTimeBonus = areaTimeBonusPerSec * timeLimit;
freeTimeBonus = freeTimeBonusPerSec * timeLimit;
targetTimeBonus = targetTimeBonusPerSec * timeLimit;
try
{
// try get start scene data
startSceneData = GameObject.Find("StartSceneDataTransfer").GetComponent<StartSeneData>();
messageCon.PushMessage(
new List<string> { "ParameterContainer:", "StartSceneDataTransfer found!" },
new List<string> { "green", "white" });
}
catch
{
// if not found, find dummy StartSeneData
startSceneData = GameObject.Find("StartSceneDataTransferDummy").GetComponent<StartSeneData>();
messageCon.PushMessage(
new List<string> { "ParameterContainer:", "StartSceneDataTransfer not found!Use Dummy." },
new List<string> { "orange" });
}
// Win Rewards
goWinReward = commonParamCont.goWinRewardDefault;
@@ -94,7 +74,7 @@ public class ParameterContainer : MonoBehaviour
// get target distance and in area
if (targetCon.targetType is Targets.Go or Targets.Attack)
{
(agentDistance, agentInArea) = blockCont.GetAgentTargetDistanceAndInside(agentObj.transform.position);
(_, agentInArea) = blockCont.GetAgentTargetDistanceAndInside(agentObj.transform.position);
// attack goto or defence target
if (agentInArea == 1)
{
+4 -3
View File
@@ -377,6 +377,7 @@ public class TargetController : MonoBehaviour
/// <returns>A random level index.</returns>
public int RollRandomLevelIndex(Targets target)
{
Debug.Log(target);
List<float> targetProbs;
switch (target)
@@ -392,9 +393,9 @@ public class TargetController : MonoBehaviour
break;
default:
messageBoxCon.PushMessage(
new List<string> { "[ERROR]TargetController:RandomLevel", "target type error" },
new List<string> { "[ERROR]TargetController:RollRandomLevelIndex", "target type error" },
new List<string> { "#800000ff" });
Debug.LogWarning("[ERROR]TargetController:RandomLevel:target type error");
Debug.LogWarning("[ERROR]TargetController:RollRandomLevelIndex:target type error");
return -1; // Exit early on default case
}
@@ -412,7 +413,7 @@ public class TargetController : MonoBehaviour
// If no level was returned, log an error and return -1
messageBoxCon.PushMessage(
new List<string> { "[ERROR]TargetController:RandomLevel", "level index out of range" },
new List<string> { "[ERROR]TargetController:RollRandomLevelIndex", "level index out of range" },
new List<string> { "orange" });
return -1;
}