Side channel Added

add side channel to let python side know which target got win or lose.
fix update time bug. may cause double gameover check.(got another lose after reset the game.)
This commit is contained in:
Koha9 2022-11-30 06:39:56 +09:00
parent 25eac00c53
commit 9585845ba2
13 changed files with 42376 additions and 113 deletions

View File

@ -0,0 +1,34 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.SideChannels;
public class AimBotSideChennelController : MonoBehaviour
{
public AimbotSideChannel aimbotSideChannel;
public void Awake()
{
// We create the Side Channel
aimbotSideChannel = new AimbotSideChannel();
// When a Debug.Log message is created, we send it to the stringChannel
Application.logMessageReceived += aimbotSideChannel.SendDebugStatementToPython;
// The channel must be registered with the SideChannelManager class
SideChannelManager.RegisterSideChannel(aimbotSideChannel);
}
// Side Channel
public void OnDestroy()
{
// De-register the Debug.Log callback
Application.logMessageReceived -= aimbotSideChannel.SendDebugStatementToPython;
if (Academy.IsInitialized)
{
SideChannelManager.UnregisterSideChannel(aimbotSideChannel);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ea781484763623c438c1806e3a965667
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1 +1 @@
{"count":1,"self":42.474256,"total":42.853059699999996,"children":{"InitializeActuators":{"count":2,"self":0.0015008999999999999,"total":0.0015008999999999999,"children":null},"InitializeSensors":{"count":2,"self":0.0015055,"total":0.0015055,"children":null},"AgentSendState":{"count":1893,"self":0.010512599999999999,"total":0.2746114,"children":{"CollectObservations":{"count":1893,"self":0.2560784,"total":0.2560784,"children":null},"WriteActionMask":{"count":1893,"self":0.0025101999999999998,"total":0.0025101999999999998,"children":null},"RequestDecision":{"count":1893,"self":0.0055102,"total":0.0055102,"children":null}}},"DecideAction":{"count":1893,"self":0.0115018,"total":0.0115018,"children":null},"AgentAct":{"count":1893,"self":0.089183,"total":0.089183,"children":null}},"gauges":{"AKMAgent.CumulativeReward":{"count":2,"max":4055.03345,"min":0,"runningAverage":2027.51672,"value":4055.03345,"weightedAverage":1013.75836}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1669579002","unity_version":"2021.3.14f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2021.3.14f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-UCUNI -hubSessionId de16dbe0-6cd4-11ed-9c29-f9646c339c20 -accessToken jhaPd1UC_HGOPnXJPiNZkp5sX2Qlp2OZR2Lco0D0vEI00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1669579045"}} {"count":1,"self":40.2985024,"total":42.4412638,"children":{"InitializeActuators":{"count":16,"self":0.0020112,"total":0.0020112,"children":null},"InitializeSensors":{"count":16,"self":0.0015065999999999999,"total":0.0015065999999999999,"children":null},"AgentSendState":{"count":1874,"self":0.0380634,"total":1.8644398999999998,"children":{"CollectObservations":{"count":14992,"self":1.8012412,"total":1.8012412999999998,"children":null},"WriteActionMask":{"count":14992,"self":0.0075194,"total":0.0075194,"children":null},"RequestDecision":{"count":14992,"self":0.0176158,"total":0.0176158,"children":null}}},"DecideAction":{"count":1874,"self":0.034052,"total":0.034052,"children":null},"AgentAct":{"count":1874,"self":0.24024859999999998,"total":0.24024859999999998,"children":null}},"gauges":{"AKMAgent.CumulativeReward":{"count":15,"max":4907.581,"min":-20,"runningAverage":539.2357,"value":-20,"weightedAverage":582.851}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1669755123","unity_version":"2021.3.14f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2021.3.14f1\\Editor\\Unity.exe -projectpath C:\\Users\\UCUNI\\OneDrive\\Unity\\ML-Agents\\Aimbot-ParallelEnv -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-UCUNI -hubSessionId 39dd9f10-6f6c-11ed-bdc9-97b766c7725f -accessToken tjUhl7Qz2IHRCigogJbWXtXTE8NIC1e4qZnKcVPm0uc00ef","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"InGame","end_time_seconds":"1669755165"}}

File diff suppressed because it is too large Load Diff

View File

@ -247,7 +247,7 @@ float ballistic()
GameObject gotHitObj = hit.transform.gameObject;//获取受到Ray撞击的对象 GameObject gotHitObj = hit.transform.gameObject;//获取受到Ray撞击的对象
gotHitObj.GetComponent<states>().ReactToHit(Damage, gameObject); gotHitObj.GetComponent<states>().ReactToHit(Damage, gameObject);
shoot = 0; shoot = 0;
return paramContainer.hitReward; return targetCon.hitReward(gotHitObj.transform.position);
} }
} }
shoot = 0; shoot = 0;
@ -402,6 +402,19 @@ public override void OnActionReceived(ActionBuffers actionBuffers)
// Win or lose Finished // Win or lose Finished
Debug.Log("Finish reward = " + thisRoundReward); Debug.Log("Finish reward = " + thisRoundReward);
EP += 1; EP += 1;
string targetString = Enum.GetName(typeof(TargetController.Targets), targetCon.targetTypeInt);
switch (finishedState)
{
case (int)TargetController.EndType.Win:
Debug.LogWarning(targetString+"|Win");
break;
case (int)TargetController.EndType.Lose:
Debug.LogWarning(targetString+"|Lose");
break;
default:
Debug.LogWarning("TypeError");
break;
}
EndEpisode(); EndEpisode();
} }
else else

View File

@ -0,0 +1,41 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.SideChannels;
using System;
public class AimbotSideChannel : SideChannel
{
public AimbotSideChannel()
{
ChannelId = new Guid("8bbfb62a-99b4-457c-879d-b78b69066b5e");
}
protected override void OnMessageReceived(IncomingMessage msg)
{
var receivedString = msg.ReadString();
Debug.Log("From Python : " + receivedString);
}
public void SendDebugStatementToPython(string logString, string stackTrace, LogType type)
{
if (type == LogType.Warning)
{
var stringToSend = "result|"+logString;
using (var msgOut = new OutgoingMessage())
{
msgOut.WriteString(stringToSend);
QueueMessageToSend(msgOut);
}
}
if (type == LogType.Error)
{
var stringToSend = "Error|"+logString;
using (var msgOut = new OutgoingMessage())
{
msgOut.WriteString(stringToSend);
QueueMessageToSend(msgOut);
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6836d727b536dd54e893311318779b9a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -13,6 +13,7 @@ public class EnvironmentUIControl : MonoBehaviour
public GameObject GroundCanvasObj; public GameObject GroundCanvasObj;
public GameObject chartObj; public GameObject chartObj;
public TextMeshProUGUI remainTimeText; public TextMeshProUGUI remainTimeText;
public TextMeshProUGUI targetTypeText;
public TextMeshProUGUI winLoseText; public TextMeshProUGUI winLoseText;
public float resultTimeout = 1f; public float resultTimeout = 1f;
public GameObject gaugeImgObj; public GameObject gaugeImgObj;
@ -111,4 +112,31 @@ public void updateTargetGauge(float firebasesBelong, float belongMaxPoint)
gaugeImg.fillAmount = -firebasesBelong / belongMaxPoint; gaugeImg.fillAmount = -firebasesBelong / belongMaxPoint;
} }
} }
// update targetType text
public void updateTargetType(int targetInt)
{
switch (targetInt)
{
case (int)TargetController.Targets.Go:
targetTypeText.text = "GOTO";
targetTypeText.color = Color.blue;
break;
case (int)TargetController.Targets.Attack:
targetTypeText.text = "Attack!";
targetTypeText.color = Color.red;
break;
case (int)TargetController.Targets.Defence:
targetTypeText.text = "Defence";
targetTypeText.color = Color.green;
break;
case (int)TargetController.Targets.Free:
targetTypeText.text = "Free";
targetTypeText.color = Color.yellow;
break;
default:
targetTypeText.text = "TYPE ERROR";
targetTypeText.color = Color.red;
break;
}
}
} }

View File

@ -26,15 +26,15 @@ public class ParameterContainer : MonoBehaviour
[Header("Dynamic Defaut Rewards")] [Header("Dynamic Defaut Rewards")]
[Tooltip("Hit Enemy reward")] [Tooltip("Hit Enemy reward")]
public float hitRewardDefault = 30.0f; public float hitRewardDefault = 60.0f;
[Tooltip("Episode Win reward")] [Tooltip("Free mode Hit Enemy reward")]
public float winRewardDefault = 50.0f; public float hitTargetRewardDefault = 60.0f;
[Tooltip("Enemy down reward")] [Tooltip("Enemy down reward")]
public float killRewardDefault = 40.0f; public float killRewardDefault = 60.0f;
[Tooltip("Enemy down in area Reward")] [Tooltip("Enemy down in area Reward")]
public float killInAreaEnemyRewardDefault = 80.0f; public float killTargetEnemyRewardDefault = 100.0f;
[Tooltip("stay in firebasesArea reward")] [Tooltip("stay in firebasesArea reward")]
public float inAreaRewardDefault = 1.0f; public float inAreaRewardDefault = 10.0f;
[Tooltip("free left time bonus reward. ALLR + leftTime * r")] [Tooltip("free left time bonus reward. ALLR + leftTime * r")]
public float freeTimeBonusPerSec = 1.0f; public float freeTimeBonusPerSec = 1.0f;
[Tooltip("target left time bonus reward. ALLR + leftTime * r")] [Tooltip("target left time bonus reward. ALLR + leftTime * r")]
@ -42,20 +42,37 @@ public class ParameterContainer : MonoBehaviour
[Tooltip("in area left time bonus reward. ALLR + leftTime * r")] [Tooltip("in area left time bonus reward. ALLR + leftTime * r")]
public float areaTimeBonusPerSec = 1.0f; public float areaTimeBonusPerSec = 1.0f;
[Tooltip("distance reward reward = r*(1-(nowDis/startDis))")] [Tooltip("distance reward reward = r*(1-(nowDis/startDis))")]
public float distanceReward = 1.0f; public float distanceReward = 20.0f;
[Space(10)]
[Tooltip("Goto Win reward")]
public float goWinRewardDefault = 100.0f;
[Tooltip("Attack Win reward")]
public float attackWinRewardDefault = 100.0f;
[Tooltip("Defence Win reward")]
public float defenceWinRewardDefault = 100.0f;
[Tooltip("free Win reward")]
public float freeWinRewardDefault = 100.0f;
[Header("Dynamic Rewards")] [Header("Dynamic Rewards")]
[Tooltip("Free mode Hit Enemy reward")]
public float hitTargetReward = 60.0f;
[Tooltip("Hit Enemy reward")] [Tooltip("Hit Enemy reward")]
public float hitReward = 30.0f; public float hitReward = 30.0f;
[Tooltip("Enemy down reward")] [Tooltip("Enemy down reward")]
public float killReward = 40.0f; public float killReward = 40.0f;
[Tooltip("Episode Win reward")]
public float winReward = 50.0f;
[Tooltip("Enemy down in area Reward")] [Tooltip("Enemy down in area Reward")]
public float killInAreaEnemyReward = 80.0f; public float killTargetEnemyReward = 80.0f;
[Tooltip("stay in firebasesArea reward")] [Tooltip("stay in firebasesArea reward")]
public float inAreaReward = 1.0f; public float inAreaReward = 1.0f;
[Space(10)]
[Tooltip("go Win reward")]
public float goWinReward = 50.0f;
[Tooltip("attack Win reward")]
public float attackWinReward = 50.0f;
[Tooltip("defence Win reward")]
public float defenceWinReward = 50.0f;
[Tooltip("free Win reward")]
public float freeWinReward = 50.0f;
[Header("Static Rewards")] [Header("Static Rewards")]
@ -115,10 +132,15 @@ private void Update()
} }
hitReward = hitRewardDefault + freeTimeBonus; hitReward = hitRewardDefault + freeTimeBonus;
hitTargetReward = hitTargetRewardDefault + freeTimeBonus;
killReward = killRewardDefault + freeTimeBonus; killReward = killRewardDefault + freeTimeBonus;
winReward = winRewardDefault + targetTimeBonus; killTargetEnemyReward = killTargetEnemyRewardDefault + targetTimeBonus;
killInAreaEnemyReward = killInAreaEnemyRewardDefault + targetTimeBonus;
inAreaReward = inAreaRewardDefault + areaTimeBonus; inAreaReward = inAreaRewardDefault + areaTimeBonus;
goWinReward = goWinRewardDefault + targetTimeBonus;
attackWinReward = attackWinRewardDefault + targetTimeBonus;
defenceWinReward = defenceWinRewardDefault + targetTimeBonus;
freeWinReward = freeWinRewardDefault + targetTimeBonus;
} }
public void resetTimeBonusReward() public void resetTimeBonusReward()

View File

@ -105,6 +105,7 @@ private void Update()
public void rollNewScene() public void rollNewScene()
{ {
startTime = Time.time;// Reset StartTime as now time startTime = Time.time;// Reset StartTime as now time
leftTime = paramCon.timeLimit - Time.time + startTime;
float randTargetType = UnityEngine.Random.Range(0f, 1f); float randTargetType = UnityEngine.Random.Range(0f, 1f);
if (randTargetType <= gotoProb) if (randTargetType <= gotoProb)
{ {
@ -181,6 +182,7 @@ public void rollNewScene()
moveAgentToSpwanArea(); moveAgentToSpwanArea();
blockCont.destroyBlock(); blockCont.destroyBlock();
} }
envUICon.updateTargetType(targetTypeInt);
} }
// get target observation states // get target observation states
@ -253,7 +255,7 @@ public float getSceneReward(float nowDistance)
{ {
// win // win
// let the area belongs to me // let the area belongs to me
thisReward = paramCon.winReward; thisReward = paramCon.goWinReward;
//thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance);
endTypeInt = (int)EndType.Win; endTypeInt = (int)EndType.Win;
} }
@ -280,7 +282,7 @@ public float getSceneReward(float nowDistance)
{ {
// win // win
// let the area belongs to me and kill every enmy in this area. // let the area belongs to me and kill every enmy in this area.
thisReward = paramCon.winReward; thisReward = paramCon.attackWinReward;
//thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance);
endTypeInt = (int)EndType.Win; endTypeInt = (int)EndType.Win;
} }
@ -306,7 +308,7 @@ public float getSceneReward(float nowDistance)
{ {
// win // win
// time over and the area still mine // time over and the area still mine
thisReward = paramCon.winReward; thisReward = paramCon.defenceWinReward;
//thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance);
endTypeInt = (int)EndType.Win; endTypeInt = (int)EndType.Win;
} }
@ -330,14 +332,14 @@ public float getSceneReward(float nowDistance)
{ {
// win // win
//thisReward = paramCon.winReward + (paramCon.timeBonusPerSecReward * leftTime); //thisReward = paramCon.winReward + (paramCon.timeBonusPerSecReward * leftTime);
thisReward = 0f; thisReward = paramCon.freeWinReward;
endTypeInt = (int)EndType.Win; endTypeInt = (int)EndType.Win;
} }
else if (Time.time - startTime >= paramCon.timeLimit) else if (Time.time - startTime >= paramCon.timeLimit)
{ {
// lose // lose
//thisReward = paramCon.loseReward; //thisReward = paramCon.loseReward;
thisReward = 0f; thisReward = paramCon.loseReward;
endTypeInt = (int)EndType.Lose; endTypeInt = (int)EndType.Lose;
} }
else else
@ -358,22 +360,59 @@ public float killReward(Vector3 enemyPosition)
float thisKillReward = 0f; float thisKillReward = 0f;
if (targetTypeInt == (int)Targets.Attack) if (targetTypeInt == (int)Targets.Attack)
{ {
// attack // attack mode
(_, int isInArea) = blockCont.thisBlock.getDist_inArea(enemyPosition); (_, int isInArea) = blockCont.thisBlock.getDist_inArea(enemyPosition);
if (isInArea == 1) if (isInArea == 1)
{ {
thisKillReward = paramCon.killInAreaEnemyReward; // kill in area enemy
thisKillReward = paramCon.killTargetEnemyReward;
} }
else else
{ {
thisKillReward = paramCon.killReward; thisKillReward = paramCon.killReward;
} }
} }
else else if(targetTypeInt == (int)Targets.Free)
{ {
// goto & defence & free // free mode kill
thisKillReward = paramCon.killTargetEnemyReward;
}else
{
// goto & defence
thisKillReward = paramCon.killReward; thisKillReward = paramCon.killReward;
} }
return thisKillReward; return thisKillReward;
} }
// calculate hit reward base on killed enemy's position and now mode
public float hitReward(Vector3 enemyPosition)
{
float thisHitReward = 0f;
if (targetTypeInt == (int)Targets.Attack)
{
// attack mode
(_, int isInArea) = blockCont.thisBlock.getDist_inArea(enemyPosition);
if (isInArea == 1)
{
// hit in area enemy
thisHitReward = paramCon.hitTargetReward;
}
else
{
// hit not in area enemy
thisHitReward = paramCon.hitReward;
}
}
else if (targetTypeInt == (int)Targets.Free)
{
// free mode hit
thisHitReward = paramCon.hitTargetReward;
}
else
{
// goto & defence
thisHitReward = paramCon.hitReward;
}
return thisHitReward;
}
} }

View File

@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sideChennelManager : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cc32b1477a6cda045910784943fbcfd5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -14,16 +14,16 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_PixelRect: m_PixelRect:
serializedVersion: 2 serializedVersion: 2
x: 70 x: 62
y: 92 y: 43
width: 1840 width: 1858
height: 980 height: 1037
m_ShowMode: 4 m_ShowMode: 4
m_Title: Scene m_Title: Project
m_RootView: {fileID: 12} m_RootView: {fileID: 12}
m_MinSize: {x: 875, y: 542} m_MinSize: {x: 875, y: 542}
m_MaxSize: {x: 10000, y: 10000} m_MaxSize: {x: 10000, y: 10000}
m_Maximized: 0 m_Maximized: 1
--- !u!114 &2 --- !u!114 &2
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -67,8 +67,8 @@ MonoBehaviour:
y: 0 y: 0
width: 1018 width: 1018
height: 630 height: 630
m_MinSize: {x: 100, y: 121} m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 4000, y: 4021} m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 16} m_ActualView: {fileID: 16}
m_Panes: m_Panes:
- {fileID: 16} - {fileID: 16}
@ -97,7 +97,7 @@ MonoBehaviour:
m_MinSize: {x: 100, y: 121} m_MinSize: {x: 100, y: 121}
m_MaxSize: {x: 4000, y: 4021} m_MaxSize: {x: 4000, y: 4021}
vertical: 0 vertical: 0
controlID: 15 controlID: 17
--- !u!114 &5 --- !u!114 &5
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -114,9 +114,9 @@ MonoBehaviour:
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 669 y: 596
width: 1079 width: 1090
height: 261 height: 391
m_MinSize: {x: 231, y: 271} m_MinSize: {x: 231, y: 271}
m_MaxSize: {x: 10001, y: 10021} m_MaxSize: {x: 10001, y: 10021}
m_ActualView: {fileID: 18} m_ActualView: {fileID: 18}
@ -144,12 +144,12 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 1079 width: 1090
height: 930 height: 987
m_MinSize: {x: 100, y: 200} m_MinSize: {x: 100, y: 200}
m_MaxSize: {x: 8096, y: 16192} m_MaxSize: {x: 8096, y: 16192}
vertical: 1 vertical: 1
controlID: 128 controlID: 178
--- !u!114 &7 --- !u!114 &7
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -166,9 +166,9 @@ MonoBehaviour:
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 360 y: 382
width: 328 width: 245
height: 570 height: 605
m_MinSize: {x: 102, y: 121} m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 22} m_ActualView: {fileID: 22}
@ -193,14 +193,14 @@ MonoBehaviour:
- {fileID: 7} - {fileID: 7}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 1079 x: 1090
y: 0 y: 0
width: 328 width: 245
height: 930 height: 987
m_MinSize: {x: 100, y: 200} m_MinSize: {x: 100, y: 200}
m_MaxSize: {x: 8096, y: 16192} m_MaxSize: {x: 8096, y: 16192}
vertical: 1 vertical: 1
controlID: 137 controlID: 82
--- !u!114 &9 --- !u!114 &9
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -218,8 +218,8 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 328 width: 245
height: 360 height: 382
m_MinSize: {x: 202, y: 221} m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 20} m_ActualView: {fileID: 20}
@ -247,12 +247,12 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 30 y: 30
width: 1840 width: 1858
height: 930 height: 987
m_MinSize: {x: 300, y: 200} m_MinSize: {x: 300, y: 200}
m_MaxSize: {x: 24288, y: 16192} m_MaxSize: {x: 24288, y: 16192}
vertical: 0 vertical: 0
controlID: 136 controlID: 76
--- !u!114 &11 --- !u!114 &11
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -268,10 +268,10 @@ MonoBehaviour:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 1407 x: 1335
y: 0 y: 0
width: 433 width: 523
height: 930 height: 987
m_MinSize: {x: 276, y: 71} m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 19} m_ActualView: {fileID: 19}
@ -299,8 +299,8 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 1840 width: 1858
height: 980 height: 1037
m_MinSize: {x: 875, y: 300} m_MinSize: {x: 875, y: 300}
m_MaxSize: {x: 10000, y: 10000} m_MaxSize: {x: 10000, y: 10000}
m_UseTopView: 1 m_UseTopView: 1
@ -324,7 +324,7 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 1840 width: 1858
height: 30 height: 30
m_MinSize: {x: 0, y: 0} m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0}
@ -345,8 +345,8 @@ MonoBehaviour:
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 960 y: 1017
width: 1840 width: 1858
height: 20 height: 20
m_MinSize: {x: 0, y: 0} m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0}
@ -367,8 +367,8 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 1079 width: 1090
height: 669 height: 596
m_MinSize: {x: 201, y: 221} m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 21} m_ActualView: {fileID: 21}
@ -516,10 +516,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 70 x: 62
y: 791 y: 669
width: 1078 width: 1089
height: 240 height: 370
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
@ -537,22 +537,22 @@ MonoBehaviour:
m_SkipHidden: 0 m_SkipHidden: 0
m_SearchArea: 1 m_SearchArea: 1
m_Folders: m_Folders:
- Assets/Prefeb/GoBlock - Assets/Script/InGame
m_Globs: [] m_Globs: []
m_OriginalText: m_OriginalText:
m_ViewMode: 1 m_ViewMode: 1
m_StartGridSize: 16 m_StartGridSize: 16
m_LastFolders: m_LastFolders:
- Assets/Prefeb/GoBlock - Assets/Script/InGame
m_LastFoldersGridSize: 16 m_LastFoldersGridSize: 16
m_LastProjectPath: C:\Users\UCUNI\OneDrive\Unity\ML-Agents\Aimbot-ParallelEnv m_LastProjectPath: C:\Users\UCUNI\OneDrive\Unity\ML-Agents\Aimbot-ParallelEnv
m_LockTracker: m_LockTracker:
m_IsLocked: 0 m_IsLocked: 0
m_FolderTreeState: m_FolderTreeState:
scrollPos: {x: 0, y: 100} scrollPos: {x: 0, y: 41}
m_SelectedIDs: 0e770000 m_SelectedIDs: 14770000
m_LastClickedID: 30478 m_LastClickedID: 30484
m_ExpandedIDs: 00000000c6760000c8760000ca760000cc760000ce760000d0760000d2760000d476000000ca9a3bffffff7f m_ExpandedIDs: 00000000c6760000c8760000ca760000cc760000d0760000d476000000ca9a3b
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -607,22 +607,22 @@ MonoBehaviour:
m_ListAreaState: m_ListAreaState:
m_SelectedInstanceIDs: m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0 m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 0 m_HadKeyboardFocusLastEvent: 1
m_ExpandedInstanceIDs: c623000000000000 m_ExpandedInstanceIDs: c623000000000000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name: WorldUIController
m_OriginalName: m_OriginalName: WorldUIController
m_EditFieldRect: m_EditFieldRect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 0 width: 0
height: 0 height: 0
m_UserData: 0 m_UserData: 6716
m_IsWaitingForDelay: 0 m_IsWaitingForDelay: 0
m_IsRenaming: 0 m_IsRenaming: 0
m_OriginalEventType: 11 m_OriginalEventType: 0
m_IsRenamingFilename: 1 m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 5} m_ClientGUIView: {fileID: 5}
m_CreateAssetUtility: m_CreateAssetUtility:
@ -656,10 +656,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 1477 x: 1397
y: 122 y: 73
width: 432 width: 522
height: 909 height: 966
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
@ -671,7 +671,7 @@ MonoBehaviour:
m_ControlHash: -371814159 m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1 m_LastInspectedObjectInstanceID: -1
m_LastVerticalScrollValue: 54 m_LastVerticalScrollValue: 878
m_GlobalObjectId: m_GlobalObjectId:
m_InspectorMode: 0 m_InspectorMode: 0
m_LockTracker: m_LockTracker:
@ -697,10 +697,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 1149 x: 1152
y: 122 y: 73
width: 326 width: 243
height: 339 height: 361
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
@ -708,9 +708,9 @@ MonoBehaviour:
m_SceneHierarchy: m_SceneHierarchy:
m_TreeViewState: m_TreeViewState:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs: 9eec0100
m_LastClickedID: 0 m_LastClickedID: 126110
m_ExpandedIDs: 32fbffff m_ExpandedIDs: 42cdfeff9acdfeff1acffeff7c03ffffd403ffff5405ffffb0ceffff08cfffff78d0ffff32fbffff1caa0000e2ec0100
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -754,10 +754,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 70 x: 62
y: 122 y: 73
width: 1078 width: 1089
height: 648 height: 575
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
@ -992,9 +992,9 @@ MonoBehaviour:
m_PlayAudio: 0 m_PlayAudio: 0
m_AudioPlay: 0 m_AudioPlay: 0
m_Position: m_Position:
m_Target: {x: -34.113144, y: 18.527344, z: 51.342407} m_Target: {x: 401, y: -864.7725, z: 534.98376}
speed: 2 speed: 2
m_Value: {x: -34.113144, y: 18.527344, z: 51.342407} m_Value: {x: 401, y: -864.7725, z: 534.98376}
m_RenderMode: 0 m_RenderMode: 0
m_CameraMode: m_CameraMode:
drawMode: 0 drawMode: 0
@ -1041,13 +1041,13 @@ MonoBehaviour:
m_GridAxis: 1 m_GridAxis: 1
m_gridOpacity: 0.5 m_gridOpacity: 0.5
m_Rotation: m_Rotation:
m_Target: {x: 0.33203965, y: 0.20104572, z: -0.07264823, w: 0.91870475} m_Target: {x: 0.34105033, y: 0.36417004, z: -0.14535965, w: 0.8543353}
speed: 2 speed: 2
m_Value: {x: 0.331936, y: 0.20242701, z: -0.07314745, w: 0.9184179} m_Value: {x: 0.34233946, y: 0.36396012, z: -0.1459091, w: 0.8538427}
m_Size: m_Size:
m_Target: 328.48233 m_Target: 724.4659
speed: 2 speed: 2
m_Value: 314.33716 m_Value: 693.2688
m_Ortho: m_Ortho:
m_Target: 0 m_Target: 0
speed: 2 speed: 2
@ -1092,10 +1092,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 1149 x: 1152
y: 482 y: 455
width: 326 width: 243
height: 549 height: 584
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default