取消使用StartSceneData来跨Scene传输数据,改用CommonParameterContainer Singleton来统一保存所需数据。
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user