V3.0 追加控制模式,改进代码

追加控制模式,实现鼠标在地图中的坐标映射
追加控制UI
Todo:
游戏流程修改
游戏State对应修改
This commit is contained in:
2023-04-09 23:35:38 +09:00
parent 71f2687422
commit ff094aaba5
56 changed files with 23542 additions and 682 deletions
-106
View File
@@ -1,106 +0,0 @@
using System;
using UnityEngine;
using UnityEngine.UI;
public class EnvArgsChanger : MonoBehaviour
{
public GameObject DataTransfer;
[Header("EnemyNum")]
public Text EnemyNumText;
public InputField EnemyNumInput;
[Header("TimeLimit")]
public Text TimeLimText;
public InputField TimelimInput;
[Header("Decision Period")]
public Slider DecisionPeriodSlide;
public Text DecisionPeriodDataText;
public Toggle TakeActionsBetweenDecisionsToggle;
[Header("Lock Mouse")]
public Toggle LockMouseToggle;
[Header("Default Camera")]
public Toggle FPToggle;
public Text FPText;
public Toggle TPToggle;
public Text TPText;
private StartSeneData startSeneData;
private void Start()
{
startSeneData = DataTransfer.GetComponent<StartSeneData>();
}
public void onEnemynumValueChanged()
{
// enemy total num value control
if (EnemyNumInput.GetComponent<InputField>().text == "" || EnemyNumInput.GetComponent<InputField>().text.Contains("-"))
{
EnemyNumText.color = Color.gray;
}
else
{
EnemyNumText.color = Color.yellow;
startSeneData.EnemyNum = Math.Abs(int.Parse(EnemyNumInput.GetComponent<InputField>().text));
}
}
public void onTimeValueChanged()
{
// time limit value control
if (TimelimInput.GetComponent<InputField>().text == "" || TimelimInput.GetComponent<InputField>().text.Contains("-"))
{
TimeLimText.color = Color.gray;
}
else
{
TimeLimText.color = Color.yellow;
startSeneData.Timelim = Math.Abs(int.Parse(TimelimInput.GetComponent<InputField>().text));
}
}
public void onDPSlideValueChanged()
{
// DecisionPeriod(DP) value Control
startSeneData.DecisionPeriod = (int)(DecisionPeriodSlide.GetComponent<Slider>().value);
DecisionPeriodDataText.text = startSeneData.DecisionPeriod.ToString();
}
public void onABDToggleChanged()
{
// Actions Between Decisions(ABD) Toggle Control
startSeneData.ActionsBetweenDecisions = TakeActionsBetweenDecisionsToggle.isOn;
}
public void onLockMouseToggleChanged()
{
// lock mouse or not
startSeneData.lockMouse = LockMouseToggle.isOn;
}
public void onTPCamToggleChanged()
{
startSeneData.defaultTPCamera = true;
FPToggle.interactable = true;
FPToggle.SetIsOnWithoutNotify(false);
FPText.color = Color.gray;
TPToggle.SetIsOnWithoutNotify(true);
TPToggle.interactable = false;
TPText.color = Color.green;
}
public void onFPCameToggleChanged()
{
startSeneData.defaultTPCamera = false;
TPToggle.interactable = true;
TPToggle.SetIsOnWithoutNotify(false);
TPText.color = Color.gray;
FPToggle.SetIsOnWithoutNotify(true);
FPToggle.interactable = false;
FPText.color = Color.green;
}
}
-37
View File
@@ -1,37 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LoadDirChanger : MonoBehaviour
{
public InputField LoadDirDateTextBox;
public InputField LoadDirTimeTextBox;
public Toggle Toggle;
public GameObject DataTransfer;
public void OnDirToggleChanged()
{
// if loadDirToggle is on then turn off the input text boxs.
LoadDirDateTextBox.interactable = Toggle.isOn;
LoadDirTimeTextBox.interactable = Toggle.isOn;
// if loadDirToggle is off set loaddirs as 0.
if (!Toggle.isOn)
{
DataTransfer.GetComponent<StartSeneData>().LoadDirDate = "0";
DataTransfer.GetComponent<StartSeneData>().LoadDirTime = "0";
}
}
public void OnDateValueChanged()
{
string input = LoadDirDateTextBox.GetComponent<InputField>().text;
DataTransfer.GetComponent<StartSeneData>().LoadDirDate = input;
}
public void OnTimeValueChanged()
{
string input = LoadDirTimeTextBox.GetComponent<InputField>().text;
DataTransfer.GetComponent<StartSeneData>().LoadDirTime = input;
}
}
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 664e98da80fb4d842b0c3aff09fd4dc9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
-120
View File
@@ -1,120 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.UI;
public class RewardsChange : MonoBehaviour
{
public GameObject DataTransfer;
public GameObject nonRInputOBJ;
public GameObject shootRInputOBJ;
public GameObject shootWithoutReadyRInputOBJ;
public GameObject hitRInputOBJ;
public GameObject killRInputOBJ;
public GameObject winRInputOBJ;
public GameObject loseRInputOBJ;
public Text nonRInputText;
public Text shootRInputText;
public Text shootWithoutReadyRInputText;
public Text hitRInputText;
public Text killRInputText;
public Text winRInputText;
public Text loseRInputText;
private void Start()
{
}
// Update is called once per frame
public void nonRValueChanged()
{
if (nonRInputOBJ.GetComponent<InputField>().text == "" || nonRInputOBJ.GetComponent<InputField>().text == "-")
{
nonRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().nonReward = DataTransfer.GetComponent<StartSeneData>().nonRewardDefault;
}
else
{
nonRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().nonReward = float.Parse(nonRInputOBJ.GetComponent<InputField>().text);
}
}
public void shootRValueChanged()
{
if (shootRInputOBJ.GetComponent<InputField>().text == "" || shootRInputOBJ.GetComponent<InputField>().text == "-")
{
shootRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().shootReward = DataTransfer.GetComponent<StartSeneData>().shootRewardDefault;
}
else {
shootRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().shootReward = float.Parse(shootRInputOBJ.GetComponent<InputField>().text);
}
}
public void shootWOReadyRValueChanged()
{
if(shootWithoutReadyRInputOBJ.GetComponent<InputField>().text == "" || shootWithoutReadyRInputOBJ.GetComponent<InputField>().text == "-")
{
shootWithoutReadyRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().shootWithoutReadyReward = DataTransfer.GetComponent<StartSeneData>().shootWithoutReadyRewardDefault;
}
else{
shootWithoutReadyRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().shootWithoutReadyReward = float.Parse(shootWithoutReadyRInputOBJ.GetComponent<InputField>().text);
}
}
public void hitRValueChanged()
{
if(hitRInputOBJ.GetComponent<InputField>().text == "" || hitRInputOBJ.GetComponent<InputField>().text == "-")
{
hitRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().hitReward = DataTransfer.GetComponent<StartSeneData>().hitRewardDefault;
}
else{
hitRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().hitReward = float.Parse(hitRInputOBJ.GetComponent<InputField>().text);
}
}
public void winRValueChanged()
{
if(winRInputOBJ.GetComponent<InputField>().text == "" || winRInputOBJ.GetComponent<InputField>().text == "-")
{
winRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().winReward = DataTransfer.GetComponent<StartSeneData>().winRewardDefault;
}
else{
winRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().winReward = float.Parse(winRInputOBJ.GetComponent<InputField>().text);
}
}
public void loseRValueChanged()
{
if(loseRInputOBJ.GetComponent<InputField>().text == "" || loseRInputOBJ.GetComponent<InputField>().text == "-")
{
loseRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().loseReward = DataTransfer.GetComponent<StartSeneData>().loseRewardDefault;
}
else{
loseRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().loseReward = float.Parse(loseRInputOBJ.GetComponent<InputField>().text);
}
}
public void killRValueChanged()
{
if(killRInputOBJ.GetComponent<InputField>().text == "" || killRInputOBJ.GetComponent<InputField>().text == "-")
{
killRInputText.color = Color.gray;
DataTransfer.GetComponent<StartSeneData>().killReward = DataTransfer.GetComponent<StartSeneData>().killRewardDefault;
}
else{
killRInputText.color = Color.yellow;
DataTransfer.GetComponent<StartSeneData>().killReward = float.Parse(killRInputOBJ.GetComponent<InputField>().text);
}
}
}
-39
View File
@@ -1,39 +0,0 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class SceneChange : MonoBehaviour
{
public GameObject DataTransfer;
public Text errorText;
// Start is called before the first frame update
bool checkLoadDirFormat()
{
string thisLoadDirDate = DataTransfer.GetComponent<StartSeneData>().LoadDirDate;
string thisLoadDirTime = DataTransfer.GetComponent<StartSeneData>().LoadDirTime;
int LoadDirDateLength = thisLoadDirDate.Length;
int LoadDirTimeLength = thisLoadDirTime.Length;
if ((LoadDirDateLength == 8 && LoadDirTimeLength == 6) || (thisLoadDirDate == "0" && thisLoadDirTime == "0"))
{
return true;
}
else
{
return false;
}
}
public void onStartClick()
{
if (checkLoadDirFormat())
{
errorText.text = "Loading next Scene...";
errorText.color = Color.green;
SceneManager.LoadScene("InGame");
}
else
{
errorText.text = "Dir Format error";
}
}
}
-11
View File
@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 73ae3df5f5faba1428ab2529c043b7ae
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+26
View File
@@ -0,0 +1,26 @@
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneLoader : MonoBehaviour
{
public enum SceneType
{
Train,
Play,
}
public void loadScene(SceneType sceneType)
{
switch (sceneType)
{
case SceneType.Train:
SceneManager.LoadScene("Train");
break;
case SceneType.Play:
SceneManager.LoadScene("Play");
break;
default:
Debug.LogError("SceneLoader:loadScene: unknown scene type");
break;
}
}
}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 44fd351436d221849991bd84d37d8109
guid: 9860d0d9e8776b34c9526d76c4ef118b
MonoImporter:
externalObjects: {}
serializedVersion: 2
+2 -47
View File
@@ -1,55 +1,10 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StartSeneData : MonoBehaviour
{
[Header("Default Rewards")]
public float nonRewardDefault = -0.05f;
public float shootRewardDefault = -0.06f;
public float shootWithoutReadyRewardDefault = -0.06f;
public float hitRewardDefault = 5.0f;
public float killRewardDefault = 10.0f;
public float winRewardDefault = 20.0f;
public float loseRewardDefault = -0.05f;
public bool lockMouse = false;
public bool defaultTPCamera = true;
[Header("Game mode")]
public int gamemode = 0;// default trainning mode
// LoadDir
[System.NonSerialized]public string LoadDirDate = "0";
[System.NonSerialized]public string LoadDirTime = "0";
// Rewards
[System.NonSerialized] public float nonReward;
[System.NonSerialized] public float shootReward;
[System.NonSerialized] public float shootWithoutReadyReward;
[System.NonSerialized] public float hitReward;
[System.NonSerialized] public float killReward;
[System.NonSerialized] public float winReward;
[System.NonSerialized] public float loseReward;
// DecisionPeriod
[System.NonSerialized] public int DecisionPeriod = 1;
[System.NonSerialized] public bool ActionsBetweenDecisions = true;
// EnemyNum
[System.NonSerialized] public int EnemyNum = 3;
// TimeLimit
[System.NonSerialized] public int Timelim = 15;
private void Start()
{
nonReward = nonRewardDefault;
shootReward = shootRewardDefault;
shootWithoutReadyReward = shootWithoutReadyRewardDefault;
hitReward = hitRewardDefault;
killReward = killRewardDefault;
winReward = winRewardDefault;
loseReward = loseRewardDefault;
}
// Update is called once per frame
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
+52
View File
@@ -0,0 +1,52 @@
using System;
using TMPro;
using UnityEngine;
public class StartUIManager : MonoBehaviour
{
public int WaitTimeLimit = 45;
public GameObject SceneLoaderObj;
public GameObject StartSceneDataObj;
public TextMeshProUGUI MessageTextObj;
public TextMeshProUGUI WaitTimeTextObj;
private SceneLoader sceneLoader;
private StartSeneData startSceneData;
private float startTime;
private float nowTime;
// Start is called before the first frame update
void Start()
{
sceneLoader = SceneLoaderObj.GetComponent<SceneLoader>();
startSceneData = StartSceneDataObj.GetComponent<StartSeneData>();
MessageTextObj.text = "";
}
private void Update()
{
// update time limit left;
float leftTime = WaitTimeLimit - Time.realtimeSinceStartup;
WaitTimeTextObj.text = ((int)Math.Round(leftTime)).ToString();
if (leftTime <= 1)
{
// if time limit is over, load Train Scene
sceneLoader.loadScene(SceneLoader.SceneType.Train);
}
}
// while Train-StartButton Pressed
public void OnTrainStartButtonPressed()
{
startSceneData.gamemode = 0;
sceneLoader.loadScene(SceneLoader.SceneType.Train);
MessageTextObj.text = "Loading Train Scene...";
}
// while StartButton-Play Pressed
public void OnPlayButtonPressed()
{
startSceneData.gamemode = 1;
sceneLoader.loadScene(SceneLoader.SceneType.Play);
MessageTextObj.text = "Loading Play Scene...";
}
}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ccfe892ab0f980343b6df0fafaec38e2
guid: 7761fd42cad2b9544a15df1264649677
MonoImporter:
externalObjects: {}
serializedVersion: 2