임준일 임준일 2024-06-11
Save 20240611
@6fbc5305ea4d24d307af1529210bd2c32835f987
 
VRTK/00.DEVCENTRAL/App/assets/ptcl_healeffectobj (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/ptcl_healeffectobj
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/scene_assetbundle_names.json (added)
+++ VRTK/00.DEVCENTRAL/App/assets/scene_assetbundle_names.json
@@ -0,0 +1,16 @@
+{
+    "datalist": [
+        {
+            "scene": "PlayScene",
+            "bundleName": [
+                "vrui_vrui",
+                "vrui_common",
+                "vrui_animplay",
+                "ptcl_healeffectobj",
+                "vrobj_mirrorcustom",
+                "vrmap_lobby01",
+                "vrmap_tkgym"
+            ]
+        }
+    ]
+}(파일 끝에 줄바꿈 문자 없음)
 
VRTK/00.DEVCENTRAL/App/assets/taekwondo_contents_by_instructors.json (added)
+++ VRTK/00.DEVCENTRAL/App/assets/taekwondo_contents_by_instructors.json
@@ -0,0 +1,196 @@
+{
+  "datalist" : [
+    {
+      "instructorId": 1001,
+      "nameKey": "taekwondo_coach_01", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1002,
+      "nameKey": "taekwondo_coach_02", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1003,
+      "nameKey": "taekwondo_coach_03", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1004,
+      "nameKey": "taekwondo_coach_04", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1005,
+      "nameKey": "taekwondo_coach_05", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1006,
+      "nameKey": "taekwondo_coach_06", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1007,
+      "nameKey": "taekwondo_coach_07", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    },
+    {
+      "instructorId": 1008,
+      "nameKey": "taekwondo_coach_08", 
+      "bundleName": "go0003",
+      "contents" : [
+        { "contentNameKey": "Tk_01", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_02", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_03", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_04", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_05", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_06", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_07", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_08", "difficulty": 1, "length": "02:00" },
+        { "contentNameKey": "Tk_Korye", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Keumgang", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Taebaek", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Pyongwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Sipjin", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Jitae", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Cheonkwon", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Hansu", "difficulty": 2, "length": "02:00" },
+        { "contentNameKey": "Tk_Ilyo", "difficulty": 2, "length": "02:00" }
+      ] 
+    }
+  ]
+}(파일 끝에 줄바꿈 문자 없음)
 
VRTK/00.DEVCENTRAL/App/assets/vrmap_lobby01 (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrmap_lobby01
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrmap_tkgym (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrmap_tkgym
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrobj_mirrorcustom (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrobj_mirrorcustom
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrtaekwondo_go0003 (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrtaekwondo_go0003
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrtaekwondo_go0003clip (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrtaekwondo_go0003clip
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrui_animplay (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrui_animplay
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrui_common (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrui_common
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/assets/vrui_vrui (Binary) (added)
+++ VRTK/00.DEVCENTRAL/App/assets/vrui_vrui
Binary file is not shown
 
VRTK/00.DEVCENTRAL/App/config.json (added)
+++ VRTK/00.DEVCENTRAL/App/config.json
@@ -0,0 +1,46 @@
+{
+  "ptcl_healeffectobj": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrmap_lobby01": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrmap_tkgym": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrobj_mirrorcustom": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrui_animplay": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrui_tk": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrui_common": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrtaekwondo_go0003": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "vrtaekwondo_go0003clip": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "scene_assetbundle_names.json": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  },
+  "taekwondo_contents_by_instructors.json": {
+    "required": true,
+    "supportedDevices": ["QUEST2", "QUESTPRO", "QUEST3"]
+  }
+}(파일 끝에 줄바꿈 문자 없음)
VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayAnimController.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayAnimController.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayAnimController.cs
@@ -9,6 +9,8 @@
 using RootMotion.FinalIK;
 using System.Collections;
 using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Security.Cryptography.X509Certificates;
 using UnityEngine;
 using UnityEngine.InputSystem;
 
@@ -21,7 +23,8 @@
         Stop,       // 시작 전
         Practice,   // 연습 모드
         Divided,    // 구분 동작 모드
-        Evaluation  // 평가 모드
+        Evaluation, // 평가 모드
+        AIJudge     // AI 심사 모드
     }
 
     private AnimState nowState;
@@ -43,7 +46,13 @@
     }
 
     private bool isPressA = false;
+    public bool IsPressA{
+        get{ return isPressA; }
+    }
     private bool isPressB = false;
+    public bool IsPressB{
+        get{ return isPressB; }
+    }
     private bool isStopPress = false;
     private bool isEffect = false;     // 첫 이펙트 설정 유무
 
@@ -99,7 +108,13 @@
     // 동작을 체크할 플레이어 내부 더미 오브젝트
     private GameObject dummyObj;
     private Animator dummyAnim;
+    public Animator DummyAnim{
+        get { return dummyAnim; }
+    }
     private VRIK dummyVRIK;
+    public VRIK DummyVRIK {
+        get { return dummyVRIK;}
+    }
     private BNGIKPlayerScale dummyPlayerScale;
     public BNGIKPlayerScale DummyPlayerScale {
         get { return dummyPlayerScale; }
@@ -109,9 +124,12 @@
     private GameObject dummyCopyObj;
     private Animator dummyCopyAnim;
     private VRIK dummyCopyVRIK;
+    public VRIK DummyCopyVRIK {
+        get { return dummyCopyVRIK;}
+    }
     private BNGIKPlayerScale dummyCopyScale;
     #endregion
-
+    
 
     // Start is called before the first frame update
     void Start() {
@@ -334,7 +352,7 @@
 
         // { 동작 체크용 더미 저장
         dummyCopyObj = Instantiate(dummyObj, tempDummyPlace_.transform);
-        dummyCopyObj.name = "DummyCopy";
+        dummyCopyObj.name = "DummyCopy1";
         dummyCopyObj.transform.position = new Vector3(1f, 0f, 0f);
 
         dummyCopyAnim = dummyCopyObj.GetComponent<Animator>();
@@ -357,7 +375,6 @@
 
         tempDummy_.SetActive(false);
         tempDummyCopy_.SetActive(false);
-
     }
 
     /// <summary>
@@ -382,7 +399,7 @@
     {
         if (healObj == null)
         {
-            yield return MMHelper.GetAssetObjAsync<GameObject>("ptcl", "healeffectobj",
+            yield return MMHelper.GetAssetObjAsync("ptcl", "healeffectobj",
             particle =>
             {
                 healObj = Instantiate((GameObject)particle);
@@ -392,11 +409,11 @@
 
         if (mirrorObj == null)
         {
-            yield return MMHelper.GetAssetObjAsync<GameObject>("vrobj", "mirrorcustom",
+            yield return MMHelper.GetAssetObjAsync("vrobj", "mirrorcustom",
             obj =>
             {
                 mirrorObj = Instantiate((GameObject)obj);
-                mirrorObj.SetActive(false);
+                //mirrorObj.SetActive(false);
             });
         }
 
@@ -542,11 +559,14 @@
 
 
         // 외곽선 효과를 끄기 위해서 가져옴
-        List<EffectPoseText> tempList_ = UIManager.Instance.movementManager.poseManager.effectPoseText;
+        if(UserDataRepo.Instance.PoseManager.EffectPoseText != null){
 
-        foreach (var outline in tempList_)
-        {
-            outline.AllStopOutLines();
+            List<EffectPoseText> tempList_ = UserDataRepo.Instance.PoseManager.EffectPoseText;
+
+            foreach (var outline in tempList_)
+            {
+                outline.AllStopOutLines();
+            }
         }
 
         if (dummyPlayerScale != null)
@@ -721,6 +741,48 @@
         }
     }
 
+    /// <summary>
+    ///     nowAnimator에 Dummy를 추가하는 함수
+    /// </summary>
+    public void SetDummyAnimator(){
+        if(!dummyCopyObj.activeSelf)
+            dummyCopyObj.SetActive(true);
+            
+        if (5 <= nowAnimator.Count ) {
+            nowAnimator[4] = dummyCopyAnim;
+        }
+        else {
+            nowAnimator.Add(dummyCopyAnim);
+        }
+    }
+
+    /// <summary>
+    ///     애니메이션 클립을 바꿔주는 함수
+    /// </summary>
+    /// <param name="charAnimator"></param>
+    /// <param name="animClip"></param>
+    public void ChangeAnimClip(Animator charAnimator, AnimationClip animClip)
+    {
+        AnimatorOverrideController overrideController =
+            new AnimatorOverrideController(charAnimator.runtimeAnimatorController);
+
+        charAnimator.runtimeAnimatorController = overrideController;
+        foreach(var sss in charAnimator.GetCurrentAnimatorClipInfo(0)){
+            Debug.LogError(sss.clip.name);
+        }
+        overrideController[charAnimator.GetCurrentAnimatorClipInfo(0)[0].clip.name] = animClip;
+    }
+
+    /// <summary>
+    ///     nowAnimator 안에 있는 애니메이션 클립을 전부 교체하는 함수
+    /// </summary>
+    /// <param name="animClip"></param>
+    public void AllChangeAnimClip(AnimationClip animClip){
+        foreach (var anim in nowAnimator) {
+            ChangeAnimClip(anim, animClip);
+        }
+    }
+
     public void OnOffParticle()
     {
         healObj.SetActive(!healObj.activeSelf);
@@ -744,7 +806,7 @@
             OnOffMirror();
         }
         
-        IsEffect = false;
+        IsEffect = true;
 
     }
 
@@ -767,6 +829,9 @@
         {
             nowState = AnimState.Evaluation;
         }
+        else if (state == "AIJudge") {
+            nowState = AnimState.AIJudge;
+        }
     }
 
 
VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayMapManager.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayMapManager.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayMapManager.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
@@ -21,7 +22,7 @@
 
     void Start() {
         UserDataRepo.Instance.PlayMapManager = this;
-        ChangeLobbyMap("vrmap_lobby01");
+        StartCoroutine(ChangeLobbyMap("vrmap_lobby01"));
 
     }
 
@@ -52,10 +53,8 @@
     ///     로비맵 이름을 받고, 해당 로비맵을 활성화하는 함수
     /// </summary>
     /// <param name="lobbyMapName"></param>
-    public void ChangeLobbyMap(string lobbyMapName) {
-        AllOffMapLobby();
-        AllOffMapPlay();
-
+    public IEnumerator ChangeLobbyMap(string lobbyMapName) {
+        
         int tempIndex_ = 0;
         if(mapLobbyObjs.Count == 0){
             tempIndex_ = -1;
@@ -73,79 +72,89 @@
             }
         }
 
-        String[] tempArrays = lobbyMapName.Split("_");
+        string[] tempArrays = lobbyMapName.Split("_");
         
         Debug.LogError("값 " + tempIndex_);
         // 현재 해당 로비맵이 로드되지 않았음을 의미
         if (tempIndex_ < 0) {
             Debug.LogError($"{tempArrays[0]} {tempArrays[1]}");
 
-            StartCoroutine(MMHelper.GetAssetObjAsync<GameObject>($"{tempArrays[0]}", $"{tempArrays[1]}", callback =>{
+            yield return StartCoroutine(MMHelper.GetAssetObjAsync($"{tempArrays[0]}", $"{tempArrays[1]}", callback =>{
                 GameObject tempLobbyObj_ = Instantiate(callback, lobbyArea);
 
                 tempLobbyObj_.name = lobbyMapName;
 
                 mapLobbyObjs.Add(tempLobbyObj_);
             }));
-
-            // MMHelper.GetAssetObjAsync<GameObject>($"{tempArrays[0]}", $"{tempArrays[1]}", callback => {
-            //     Debug.LogError($"{callback}");
-
-            //     GameObject tempLobbyObj_ = Instantiate(callback, lobbyArea);
-
-            //     tempLobbyObj_.name = lobbyMapName;
-
-            //     mapLobbyObjs.Add(tempLobbyObj_);
-            // });
         }
         else {
             Debug.LogError("else ");
 
             mapLobbyObjs[tempIndex_].SetActive(true);
         }
+
+        foreach (var lobbyMap in mapLobbyObjs){
+            if(lobbyMap.name != lobbyMapName){
+                lobbyMap.SetActive(false);
+            }
+        }
+
+        AllOffMapPlay();
+
     }
 
     /// <summary>
     ///     플레이맵 이름을 받고, 해당 플레이맵을 활성화시키는 함수
     /// </summary>
     /// <param name="playMapName"></param>
-    public void ChangePlayMap(string playMapName)
+    public IEnumerator ChangePlayMap(string playMapName)
     {
-        AllOffMapLobby();
-        AllOffMapPlay();
-
         int tempIndex_ = 0;
 
-        for (int i = 0; i < mapPlayObjs.Count; i++)
-        {
-            if (mapPlayObjs[i].name == playMapName)
-            {
-                tempIndex_ = i;
-
-                break;
-            }
-
+        if(mapPlayObjs.Count == 0) {
             tempIndex_ = -1;
         }
+        else {
+            for (int i = 0; i < mapPlayObjs.Count; i++)
+            {
+                if (mapPlayObjs[i].name == playMapName)
+                {
+                    tempIndex_ = i;
 
-        String[] tempArrays = playMapName.Split("_");
+                    break;
+                }
 
-        // 현재 해당 로비맵이 로드되지 않았음을 의미
+                tempIndex_ = -1;
+            }
+        }
+        
+        Debug.LogError("tempIndex_ : " + tempIndex_);
+        string[] tempArrays = playMapName.Split("_");
+
+        // 현재 해당 플레이맵이 로드되지 않았음을 의미
         if (tempIndex_ < 0)
         {
-            MMHelper.GetAssetObjAsync<GameObject>($"{tempArrays[0]}", $"{tempArrays[1]}", callback =>
-            {
+            yield return StartCoroutine(MMHelper.GetAssetObjAsync($"{tempArrays[0]}", $"{tempArrays[1]}", callback =>{
                 GameObject tempPlayMapObj_ = Instantiate(callback, playArea);
 
                 tempPlayMapObj_.name = playMapName;
 
                 mapPlayObjs.Add(tempPlayMapObj_);
-            });
+            }));
         }
         else
         {
             mapPlayObjs[tempIndex_].SetActive(true);
         }
+
+        foreach (var playMap in mapPlayObjs){
+            if(playMap.name != playMapName){
+                playMap.SetActive(false);
+            }
+        }
+
+        AllOffMapLobby();
+
     }
 
 }
(파일 끝에 줄바꿈 문자 없음)
VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayReadyManager.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayReadyManager.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayReadyManager.cs
@@ -159,7 +159,7 @@
         }
 
         if (aiEvalBtn == null) {
-            Transform tempAIEval_ = modeObj.transform.Find("AIEvalMode");
+            Transform tempAIEval_ = modeObj.transform.Find("AIJudgeMode");
             aiEvalBtn = tempAIEval_.GetComponentInChildren<Button>();
         }
 
VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayUIManager.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayUIManager.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayUIManager.cs
@@ -121,13 +121,13 @@
         }
 
         // vrui 배치
-        yield return StartCoroutine(MMHelper.GetAssetObjAsync<GameObject>("vrui", "vrui", callback =>
+        yield return StartCoroutine(MMHelper.GetAssetObjAsync("vrui", "vrui", callback =>
         {
             tempUIObj_ = callback;
         }));
 
 
-        yield return StartCoroutine(MMHelper.GetAssetObjAsync<GameObject>("vrui", "animplay", callback =>
+        yield return StartCoroutine(MMHelper.GetAssetObjAsync("vrui", "animplay", callback =>
         {
             tempAnimObj_ = callback;            
         }));
VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayVRUIManager.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayVRUIManager.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Manager/PlayVRUIManager.cs
@@ -8,10 +8,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
-using System.Drawing.Text;
 using System.IO;
-using Unity.VisualScripting;
-using UnityEditor.Localization.Plugins.XLIFF.V20;
 using UnityEngine;
 using UnityEngine.InputSystem;
 
@@ -65,11 +62,11 @@
 
     [SerializeField] private GameObject popUp;                  // 팝업창 => 모델 불러올때 사용
     
-    private List<GameObject> instructorObjs;                    // 사용중인 코치 오브젝트 관리 리스트
+    [SerializeField] private List<GameObject> instructorObjs;                    // 사용중인 강사 오브젝트 관리 리스트
 
-    private List<GameObject> createInstructorObjs;              // 만들어진 코치 오브젝트를 전부 보관하는 리스트
+    [SerializeField] private List<GameObject> createInstructorObjs;              // 만들어진 강사 오브젝트를 전부 보관하는 리스트
 
-    private List<AnimationClip> tkAnimClips;
+    [SerializeField] private List<AnimationClip> contentAnimClips;               // 만들어진 애니메이션 클립 저장하는 리스트
 
     #region 00.Content
     [Header("00.Content")]
@@ -180,14 +177,40 @@
     }
     #endregion
 
-    
+    #region Result
+    [Header("Result")]
+    [SerializeField] private ResultUIManager resultUIManager;
+
+    /// <summary>
+    ///     ResultUIManager 스크립트의 정보를 가져오는 프로퍼티
+    /// </summary>
+    public ResultUIManager ResultUIManager
+    {
+        get { return resultUIManager; }
+        set {
+            if (resultUIManager == null)
+                resultUIManager = value;
+        }
+    }
+    #endregion
+
+    private void OnEnable() {
+        // 해당 오브젝트가 꺼지고 켜질때마다 초기화면으로 돌아가도록 한다.
+        if (UserDataRepo.Instance.VRUIManager == null)
+            return;
+
+        // 초기 지점을 일단 강사 화면으로 설정
+        nowUIMainView = UIMainView.Instructor;
+        ChangeUIView();
+    }
 
     // Start is called before the first frame update
     void Start() {
         nowContent = Contents.None;         // 아무것도 선택되지 않은 상태
         popUp = transform.Find("Popup").gameObject;
         instructorObjs = new List<GameObject>();
-        tkAnimClips = new List<AnimationClip>();
+        createInstructorObjs = new List<GameObject>();
+        contentAnimClips = new List<AnimationClip>();
         UserDataRepo.Instance.VRUIManager = this;
     }
 
@@ -223,7 +246,7 @@
         // AnimState를 변경
         UserDataRepo.Instance.VRAnimController.ChangeAnimState(selectMode);
         UserDataRepo.Instance.VRAnimController.IsEffect = false;
-
+        Debug.LogError("SetVRAnimPlay");
         StartCoroutine(GetVRAssetInstructor(NowSelectBundleName));
     }   // SetTkPlay
 
@@ -235,8 +258,7 @@
     /// <returns></returns>
     IEnumerator GetVRAssetInstructor(string bundleName)
     {
-        yield return null;
-        DebugTxtCall.Instance.CallDebug("GetVRAssetInstructor IN");
+        Debug.LogError("GetVRAssetInstructor");
 
         if(0 < instructorObjs.Count) {
             foreach(var obj in instructorObjs) {
@@ -246,173 +268,155 @@
 
             instructorObjs.Clear();
         }
-
         
         string tempBundleName_ = MakeBundleName(bundleName, false);
-
+        Debug.LogError($"{tempBundleName_} "+ File.Exists(MMDefine.FULL_FILE_PATH + tempBundleName_));
 
         // 먼저 로컬에 강사 파일이 있는지 확인 후 없으면 다운
         if(File.Exists(MMDefine.FULL_FILE_PATH + tempBundleName_)){
             // 로드 된게 있는지 확인
-            if(AssetBundleRepo.Instance.GetAssetBundleList(NowContentInt()).Find(x => x.name == tempBundleName_)){
-                StartCoroutine(GetVRAnim(NowSelectBundleName));
+            if(AssetBundleRepo.Instance.GetAssetBundleList(NowContentInt()).Find(x => x.name == tempBundleName_)) {
+                // 에셋번들 로드가 되었으니 패스한다
             }
             else{
-                //yield return StartCoroutine(MMHelper.AsyncLoader(tempBundleName_));
-
-                LoadVRAssetInstructor();
+                // 에셋번들 로드가 안되었으니 로드한다.
+                yield return StartCoroutine(MMHelper.AsyncLoader(tempBundleName_));
             }
 
+            yield return StartCoroutine(GetVRAnim(NowSelectBundleName));
+
+
         }
-        else{
-
-            // 관련 파일이 없어 에셋번들을 다운받아야할 경우
-            yield return StartCoroutine(MMHelper.DownloadAssetFile(tempBundleName_, LoadVRAssetInstructor));  
-
+        else {
+            // 관련 파일이 없다 => DLC 구매를 해야한다.
         }
     }        
 
-    private void LoadVRAssetInstructor(){
-        StartCoroutine(LoadInstructor(NowSelectBundleName));
-    }
-
-    /// <summary>
-    ///     에셋번들 로드
-    /// </summary>
-    /// <param name="bundleName"></param>
-    private IEnumerator LoadInstructor(string bundleName) {
-        // 에셋번들 로드하고 리스트에 넣어두고
-        yield return StartCoroutine(MMHelper.AsyncLoader(bundleName));
-
-        // 클립 로드하러 간다.
-        StartCoroutine(GetVRAnim(NowSelectBundleName));
-    }
 
     private IEnumerator GetVRAnim(string bundleName){
         string tempBundleName_ = MakeBundleName(bundleName, true);
-
+        Debug.LogError($"{tempBundleName_} "+ File.Exists(MMDefine.FULL_FILE_PATH + tempBundleName_));
 
         // 먼저 로컬에 강사 애니메이션 클립 파일이 있는지 확인 후 없으면 다운
         if(File.Exists(MMDefine.FULL_FILE_PATH + tempBundleName_)){
             // 로드 된게 있는지 확인
             if(AssetBundleRepo.Instance.GetAssetBundleList(NowContentInt()).Find(x => x.name == tempBundleName_)){
-
+                // 애니메이션 클립이 로드되었으니 패스한다.
             }
             else{
-                LoadVRAssetAnim();
+                // 애니메이션 클립이 로드되어 있지 않으니 로드한다.
+                yield return StartCoroutine(MMHelper.AsyncLoader(tempBundleName_));
             }
+
+            // 강사 클립 둘다 로드했으니 이제 꺼내자
+            GameObject tempInstructor_ = null;
+            AnimationClip tempAnimClip_ = null;
+
+            string tempInstructorBundleName_ = MakeBundleName(bundleName, false);
+            int tempIndex_ = 0;
+            tempIndex_ = createInstructorObjs.FindIndex(x => x.name == tempInstructorBundleName_);
+
+            // createInstructorObjs 리스트에 만들어진 강사가 있는지 확인
+            if(tempIndex_ != -1){
+                // 있다 => 그거 꺼내기
+                instructorObjs.Clear();
+
+                for(int i = 0; i < 4; i++) {
+                    instructorObjs.Add(createInstructorObjs[tempIndex_]);
+                    createInstructorObjs.Remove(createInstructorObjs[tempIndex_]);
+                }
+
+                tempInstructor_ = instructorObjs[0];
+            }
+            else {
+                yield return StartCoroutine(MMHelper.GetAssetObjAsync("vrtaekwondo", NowSelectBundleName, callback => {
+                    tempInstructor_ = callback;
+                }));
+            }
+
+            // 저장된 클립이 있는지 확인한다 => 클립을 저장할때 이름 규칙은 강사 번들 이름 + 클립 이름이다.
+            tempIndex_ = contentAnimClips.FindIndex(x => x.name == $"{tempInstructorBundleName_}{NowSelectAnim}");
+            if(tempIndex_ != -1) {
+                // 있다 => 클립 꺼내기
+                tempAnimClip_ = contentAnimClips[tempIndex_];
+            }
+            else {
+                yield return StartCoroutine(MMHelper.GetAssetObjAsync("vrtaekwondo", NowSelectBundleName, NowSelectAnim, callback => {
+                    tempAnimClip_ = callback;
+                }));
+
+                tempAnimClip_.name = $"{tempInstructorBundleName_}{NowSelectAnim}";
+                contentAnimClips.Add(tempAnimClip_);
+            }
+        
+            yield return StartCoroutine(UserDataRepo.Instance.PlayMapManager.ChangePlayMap("vrmap_tkgym"));
+
+            ShowVRTkAnim(tempInstructor_, tempAnimClip_);
         }
         else{
-            // 관련 파일이 없어 에셋번들을 다운받아야할 경우
-            yield return StartCoroutine(MMHelper.DownloadAssetFile(tempBundleName_, LoadVRAssetAnim));  
+            // 관련 파일이 없다? => DLC 구매를 해야한다.
         }
     }
 
-
-    private void LoadVRAssetAnim(){
-        StartCoroutine(LoadAnim(NowSelectBundleName, NowSelectAnim));
-    }
-
-    private IEnumerator LoadAnim(string bundleName, string clipName)
+    public void ShowVRTkAnim(GameObject instrObj, AnimationClip clip)
     {
-        yield return StartCoroutine(MMHelper.AsyncLoader(bundleName + "clip"));
+        string tempInstructorBundleName_ = MakeBundleName(NowSelectBundleName, false);
 
-        // 강사 클립 둘다 로드했으니 이제 꺼내자
-        GameObject tempInstructor_ = null;
-        AnimationClip tempAnimClip_ = null;
+        //uiManager.OnOffAnimUI();
+        for (int i = 0; i < 4; i++)
+        {
+            if (i < instructorObjs.Count) {
+                // Do Nothing
+            }
+            else {
+                instructorObjs.Add(Instantiate(instrObj));
 
-        yield return StartCoroutine(MMHelper.GetAssetObjAsync<GameObject>("vrtaekwondo", NowSelectBundleName, callback => {
-            tempInstructor_ = callback;
-        }));
+                instructorObjs[i].name = tempInstructorBundleName_;
+            }
 
-        yield return StartCoroutine(MMHelper.GetAssetObjAsync<AnimationClip>("vrtaekwondo", NowSelectBundleName + "clip", callback => {
-            tempAnimClip_ = callback;
-        }));
-
-        ShowVRTkAnim(tempInstructor_, tempAnimClip_);
-    }
-
-
-
-    public void ShowVRTkAnim(GameObject coachObj, AnimationClip clip)
-    {
-        // uiManager.OnOffAnimUI();
-
-
-
-        // for (int i = 0; i < 4; i++)
-        // {
-        //     if (i < tkCoachObjs.Count)
-        //     {
-        //         // Do Nothing
-        //     }
-        //     else
-        //     {
-        //         tkCoachObjs.Add(Instantiate(coachObj));
-
-        //         tkCoachObjs[i].name = coachObj.name;
-        //         // 거울에 안보이게 해주는 코드 실행
-        //         if (i == 0 || i == 1)
-        //         {
-        //             ModelLayerChange tempLayer_ = tkCoachObjs[i].GetComponent<ModelLayerChange>();
-        //             tempLayer_.ChangeLayerObjs();
-        //         }
-        //     }
-
-        //     if(i < animController.nowAnimator.Count)
-        //     {
-        //         animController.nowAnimator[i] = tkCoachObjs[i].transform.GetComponent<Animator>();
-        //     }
-        //     else
-        //     {
-        //         animController.nowAnimator.Add(tkCoachObjs[i].transform.GetComponent<Animator>());
-        //     }
+            if(i < UserDataRepo.Instance.VRAnimController.nowAnimator.Count)
+            {
+                UserDataRepo.Instance.VRAnimController.nowAnimator[i] = instructorObjs[i].transform.GetComponent<Animator>();
+            }
+            else
+            {
+                UserDataRepo.Instance.VRAnimController.nowAnimator.Add(instructorObjs[i].transform.GetComponent<Animator>());
+            }
 
             
+        }
+
+        // 5번째는 동작을 체크할 Dummy 추가
+        UserDataRepo.Instance.VRAnimController.SetDummyAnimator();
+
+
+        foreach (var obj in instructorObjs) {            
+            obj.SetActive(true);
+        }
+
+        UserDataRepo.Instance.VRAnimController.AllChangeAnimClip(clip);                       
+
+        // 애니메이션 클립 교체가 이루어진다
+        // for (int i = 0; i < 5; i++) {
+        //     UserDataRepo.Instance.VRAnimController.AllChangeAnimClip(clip);                       
         // }
 
-        // // 여기서 Dummy 추가
-        // if (5 <= animController.nowAnimator.Count )
-        // {
-        //     animController.nowAnimator[4] = animController.dummyCopyAnim;
+        UserDataRepo.Instance.VRAnimController.GetModelFrameRate();
 
-        // }
-        // else
-        // {
-        //     animController.nowAnimator.Add(animController.dummyCopyAnim);
-
-        // }
-
-        // foreach (var anim in tkCoachObjs)
-        // {            
-        //     anim.SetActive(true);
-
-        // }
-
-        // // 애니메이션 클립 교체가 이루어진다
-        // for (int i = 0; i < 5; i++)
-        // {
-        //     animController.ChangeAnimClip(animController.nowAnimator[i], clip);
-                       
-        // }
+        popUp.SetActive(false);
+        UserDataRepo.Instance.VRAnimController.ResetAnim(true);
 
 
-        // animController.GetModelFrameRate();
-
-        // popUp.SetActive(false);
-        // animController.ResetAnim(true);
+        //uiManager.isAnimPlay = true;
+        //animController.StopSpeed();
+        UserDataRepo.Instance.VRAnimController.RePlayAnim(false);
 
 
-        // uiManager.isAnimPlay = true;
-        // //animController.StopSpeed();
-        // animController.RePlayAnim(false);
+        //vrInforPopup.SetActive(true);
 
-
-        // //vrInforPopup.SetActive(true);
-
-        // uiManager.movementManager.gameObject.SetActive(true);
+        UserDataRepo.Instance.MovementManager.gameObject.SetActive(true);
         
-        // uiManager.movementManager.StartMoveMentCheck(nowProgram, nowSelectAnim);
+        UserDataRepo.Instance.MovementManager.StartMoveMentCheck(NowSelectAnim);
     }   // ShowTkModel
 
 
@@ -446,8 +450,7 @@
     /// <returns></returns>
     private string MakeBundleName(string bundleName, bool isAnim){
         
-        string tempBundleName_ = string.Empty;
-        // { 현재 컨텐츠를 확인하고 관련 에셋번들 리스트 위치 번호를 가져오는 과정        
+        string tempBundleName_ = string.Empty;     
 
         tempBundleName_ = MMHelper.GetAssetBundleName(NowContentInt()) + $"_{bundleName.ToLower()}";
 
VRTK/Assets/00.MAINSTREAM/Scripts/Repo/UserDataRepo.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Repo/UserDataRepo.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Repo/UserDataRepo.cs
@@ -12,14 +12,14 @@
     [SerializeField] private Transform userTrans;                        // 유저 위치
     [SerializeField] private Transform userHeadTrans;                    // 유저 머리 위치
     [SerializeField] private PlayerHeadUIInfo userHeadUI;                // 유저 머리 UI
+    [SerializeField] private Transform userHandLeftTrans;                // 유저 왼쪽 팔 위치
+    [SerializeField] private Transform userHandRightTrans;               // 유저 오른쪽 팔 위치
     [SerializeField] private GameObject vrUICanvas;                      // VRUI Canvas 오브젝트
     [SerializeField] private PlayAnimController vrAnimController;
     [SerializeField] private PlayUIManager uiManager;
     [SerializeField] private MovementManager movementManager;
+    [SerializeField] private PoseManager poseManager;
     [SerializeField] private PlayVRUIManager vrUIManager;
-
-
-
     [SerializeField] private PlayMapManager playMapManager;
     [SerializeField] private Transform vrPointer;
 
@@ -32,6 +32,9 @@
         UserTransform = tempPlayerObj_.transform;
 
         UserHeadTrans = GameObject.FindWithTag(Define.MAIN_CAMERA_TAG).transform;
+
+        UserHandLeftTrans = GameObject.Find("ModelsLeft").transform;
+        UserHandRightTrans = GameObject.Find("ModelsRight").transform;
 
         VRUICanvas = GameObject.FindWithTag(Define.VR_UI_TAG);
 
@@ -64,6 +67,16 @@
     public PlayerHeadUIInfo UserHeadUI {
         get { return userHeadUI; }
         set { userHeadUI = value; }
+    }
+
+    public Transform UserHandLeftTrans{
+        get { return userHandLeftTrans;}
+        set { userHandLeftTrans = value; }
+    }
+
+    public Transform UserHandRightTrans{
+        get { return userHandRightTrans;}
+        set { userHandRightTrans = value; }
     }
 
 
@@ -116,6 +129,19 @@
     }
 
     /// <summary>
+    ///     PoseManager 스크립트 정보를 가져오는 프로퍼티
+    /// </summary>
+    public PoseManager PoseManager
+    {
+        get { return poseManager; }
+        set
+        {
+            if (poseManager == null)
+                poseManager = value;
+        }
+    }
+
+    /// <summary>
     ///     PlayVRUIManager 스크립트 정보를 가져오는 프로퍼티
     /// </summary>
     public PlayVRUIManager VRUIManager
VRTK/Assets/00.MAINSTREAM/Scripts/Utils/MMDefine.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Utils/MMDefine.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Utils/MMDefine.cs
@@ -2,9 +2,6 @@
  *  이 코드는 (주)메타모션 임직원에 의해 작성되었으며, 이 코드와 관련한 모든 권리는 (주)메타모션에 귀속됩니다.
  *  Copyright © MetaMotion Inc. All rights reserved.
  * ================================================================================================================================================================ */
-
-using System.ComponentModel;
-
 /// <summary>
 ///     필요한 각종 상수나 범용 문자열 등을 저장하는 클래스
 /// </summary>
@@ -15,10 +12,17 @@
     #endregion
 
     #region path
-    public const string LOCAL_PATH = "C:\\Users\\KJH-Sub\\Documents\\00.DEVCENTRAL\\App\\assets\\"; //  Unity Editor에서 개발할 때 리소스가 들어갈 로컬 경로
+    public const string LOCAL_PATH = "./00.DEVCENTRAL/App/assets/";
+    //"C:/Users/KJH-Sub/Documents/00.DEVCENTRAL/App/assets/"; //  Unity Editor에서 개발할 때 리소스가 들어갈 로컬 경로
     public const string STORAGE_PATH = "/sdcard/Android/obb/";                                      //  MQDH에서 에셋파일을 다운받는 경로 중, 기기경로
     public const string PACKAGE_PATH = "com.MetaMotion.VRTk";                                       //  MQDH에서 에셋파일을 다운받는 경로 중, 패키지명
-    public const string FULL_FILE_PATH = STORAGE_PATH + PACKAGE_PATH + "/";                         //  MQDH에서 에셋파일을 다운받는 전체경로
+    public const string FULL_FILE_PATH =
+#if UNITY_EDITOR
+        LOCAL_PATH;
+#else
+        STORAGE_PATH + PACKAGE_PATH + "/";                         //  MQDH에서 에셋파일을 다운받는 전체경로
+#endif
+        
     #endregion
 
     #region jsonNames
VRTK/Assets/00.MAINSTREAM/Scripts/Utils/MMHelper.cs
--- VRTK/Assets/00.MAINSTREAM/Scripts/Utils/MMHelper.cs
+++ VRTK/Assets/00.MAINSTREAM/Scripts/Utils/MMHelper.cs
@@ -5,10 +5,7 @@
 using Oculus.Platform.Models;
 using Unity.VisualScripting;
 using UnityEngine;
-using UnityEngine.Events;
 using UnityEngine.SceneManagement;
-using UnityEngine.U2D;
-using UnityEngine.UI;
 
 /// <summary>
 ///     여러 유틸리티형 헬퍼 메소드를 저장해두는 곳
@@ -64,8 +61,8 @@
     /// <param name="bundleName"></param>
     /// <param name="useObjName"></param>
     /// <param name="callback"></param>
-    /// <returns></returns>
-    public static IEnumerator GetAssetObjAsync<T>(string bundleName, string useObjName, Action<T> callback)
+    /// <returns> T </returns>
+    public static IEnumerator GetAssetObjAsync(string bundleName, string useObjName, Action<GameObject> callback)
     {
         int tempCaseNum_ = 0;
         int tempNumber_ = 0;
@@ -98,28 +95,76 @@
             Debug.LogError("해당 파일이 없습니다");            
         }
         else{
-            reqAsset_ = AssetBundleRepo.Instance.GetAssetBundleList(tempCaseNum_)[tempNumber_].LoadAssetAsync<T>(useObjName);
+            reqAsset_ = AssetBundleRepo.Instance.GetAssetBundleList(tempCaseNum_)[tempNumber_].LoadAssetAsync<GameObject>(useObjName);
+        }
+
+        yield return reqAsset_.isDone;
+        Debug.LogError(reqAsset_.asset);
+        //callback((T)Convert.ChangeType(reqAsset_.asset, typeof(T)));
+
+#if UNITY_EDITOR
+        // tempObj_가 GameObject 형식인지 확인하고 반환
+        if(reqAsset_.asset != null) {
+            AssetBundleEditorUtil.FixShadersForEditor((GameObject)reqAsset_.asset);
+            Debug.LogError(reqAsset_.asset);
+
+            callback((GameObject)reqAsset_.asset);
+        }
+#else
+        callback((GameObject)reqAsset_.asset);
+#endif
+
+    }
+
+    /// <summary>
+    ///     에셋번들에서 애니메이션 클립을 가져오는 코루틴
+    /// </summary>
+    /// <param name="bundleName"></param>
+    /// <param name="useObjName"></param>
+    /// <param name="clipName"></param>
+    /// <param name="callback"></param>
+    /// <typeparam name="T"></typeparam>
+    /// <returns> AnimationClip </returns>
+    public static IEnumerator GetAssetObjAsync(string bundleName, string useObjName, string clipName, Action<AnimationClip> callback)
+    {
+        int tempCaseNum_ = 0;
+        int tempNumber_ = 0;
+        AssetBundleRequest reqAsset_ = null;
+
+        string assetBundleName_ = (bundleName + "_" + useObjName + "clip").ToLower();
+        Debug.Log("assetBundleName : " + assetBundleName_);
+
+        if(bundleName.Contains("vrui")) {
+            tempCaseNum_ = MMDefine.VRUI;
+        }
+        else if(bundleName.Contains("vrobj")) {
+            tempCaseNum_ = MMDefine.VROBJ;
+        }
+        else if(bundleName.Contains("vrmap")) {
+            tempCaseNum_ = MMDefine.VRMAP;
+        }
+        else if (bundleName.Contains("vrtaekwondo"))
+        {
+            tempCaseNum_ = MMDefine.VRTAEKWONDO;
+        }
+        else if (bundleName.Contains("ptcl"))
+        {
+            tempCaseNum_ = MMDefine.PARTICLE;
+        }
+
+        tempNumber_ = AssetBundleRepo.Instance.GetAssetBundleList(tempCaseNum_).FindIndex(x => x.name.Equals(assetBundleName_));
+
+        if(tempNumber_ == -1){
+            Debug.LogError("해당 파일이 없습니다");            
+        }
+        else{
+            reqAsset_ = AssetBundleRepo.Instance.GetAssetBundleList(tempCaseNum_)[tempNumber_].LoadAssetAsync<AnimationClip>(clipName);
         }
 
         yield return reqAsset_.isDone;
         Debug.LogError(reqAsset_.asset);
 
-        T tempObj_ = reqAsset_.asset.GetComponent<T>();
-
-#if UNITY_EDITOR
-        // tempObj_가 GameObject 형식인지 확인하고 반환
-        GameObject tempCheck_ = tempObj_ as GameObject;
-        if(tempCheck_ != null) {
-            AssetBundleEditorUtil.FixShadersForEditor(tempCheck_);
-
-            tempObj_ = tempCheck_.GetComponent<T>();
-
-            callback(tempObj_);
-        }
-#else
-        callback(tempObj_);
-#endif
-
+        callback((AnimationClip)reqAsset_.asset);
     }
 
 
VRTK/Assets/01.Junil/Script/Animator/AnimSpeedController.cs
--- VRTK/Assets/01.Junil/Script/Animator/AnimSpeedController.cs
+++ VRTK/Assets/01.Junil/Script/Animator/AnimSpeedController.cs
@@ -803,12 +803,12 @@
 
 
         // 외곽선 효과를 끄기 위해서 가져옴
-        List<EffectPoseText> tempList_ = UIManager.Instance.movementManager.poseManager.effectPoseText;
+        //List<EffectPoseText> tempList_ = UIManager.Instance.effectPoseText;
 
-        foreach (var outline in tempList_)
-        {
-            outline.AllStopOutLines();
-        }
+        // foreach (var outline in tempList_)
+        // {
+        //     outline.AllStopOutLines();
+        // }
 
         //if (isFirst)
         //{
VRTK/Assets/01.Junil/Script/Lobby/AssetBundleDataManager.cs
--- VRTK/Assets/01.Junil/Script/Lobby/AssetBundleDataManager.cs
+++ VRTK/Assets/01.Junil/Script/Lobby/AssetBundleDataManager.cs
@@ -295,7 +295,6 @@
                 break;
         }
 
-
         yield return reqAsset_;
 
         tempAsset_ = (AnimationClip)reqAsset_.asset;
VRTK/Assets/01.Junil/Script/Obj/InputPoseModel.cs
--- VRTK/Assets/01.Junil/Script/Obj/InputPoseModel.cs
+++ VRTK/Assets/01.Junil/Script/Obj/InputPoseModel.cs
@@ -49,7 +49,7 @@
         //tempDummy_.SetActive(false);
     }
 
-    public void SetVRIK(Animator modelObj, ref PoseManager poseManager )
+    public void SetVRIK(Animator modelObj)
     {
         Animator tempAnim_ = null;
         VRIK tempVRIK_ = null;
@@ -148,11 +148,11 @@
             //modelIks.Add(copyModelObj);
         }
 
-        poseManager.userAnim = UIManager.Instance.vrAnim.dummyAnim;
+        //UserDataRepo.Instance.PoseManager.userAnim = UserDataRepo.Instance.VRAnimController.DummyAnim;
 
-        poseManager.modelVrIK = UIManager.Instance.vrAnim.dummyCopyVRIK;
+        //UserDataRepo.Instance.PoseManager.ModelVrIK = UserDataRepo.Instance.VRAnimController.DummyCopyVRIK;
 
-        poseManager.playerVrIK = UIManager.Instance.vrAnim.dummyVRIK;
+        //UserDataRepo.Instance.PoseManager.PlayerVrIK = UserDataRepo.Instance.VRAnimController.DummyVRIK;
     }   // SetVRIK
 
 
VRTK/Assets/01.Junil/Script/UI/MirrorMenuManager.cs
--- VRTK/Assets/01.Junil/Script/UI/MirrorMenuManager.cs
+++ VRTK/Assets/01.Junil/Script/UI/MirrorMenuManager.cs
@@ -47,11 +47,6 @@
         speedTxt.text = nowSpeed;
     }
 
-    public void OpenGuide()
-    {
-        //OnOffMenuBtn();
-        //nowVRUI.vrInforPopup.SetActive(true);
-    }
 
     //public void OpenMenu()
     //{
VRTK/Assets/01.Junil/Script/UI/MovementManager.cs
--- VRTK/Assets/01.Junil/Script/UI/MovementManager.cs
+++ VRTK/Assets/01.Junil/Script/UI/MovementManager.cs
@@ -5,60 +5,38 @@
 using UnityEngine;
 using UnityEngine.SceneManagement;
 using UnityEngine.InputSystem;
+using I2.Loc;
 
 public class MovementManager : MonoBehaviour
 {
+    public GameObject mirrorObj;
+
     // 같은 위치에 있고 poseManager의 활성화 유무를 여기서 컨트롤하며
     // 플레이어에도 그게 맞게 동작해야함.
-    public PoseManager poseManager;
-
-    public Slider sliderPlay;
-
-    public TMP_Text nowProgramInfoTxt;
-    public TMP_Text nowAnimInfoTxt;
-
-    public TMP_Text animTimeTxt;
-
-    public Image sliderFill;
-
-    public InputPoseModel inputPoseModel;
+    //[SerializeField] private PoseManager poseManager;
+    [SerializeField] private Localize nowAnimInfoTxt;
+    [SerializeField] private TMP_Text animTimeTxt;
+    //[SerializeField] private InputPoseModel inputPoseModel;
 
     //public UIManager uiManager;
 
-    public GameObject startView;
-    public GameObject movementInfoView;
-
-    public TMP_Text startTxt;
-    public List<DummyController> modelDummyControllers = new List<DummyController>();
+    [SerializeField] private GameObject startView;
+    [SerializeField] private GameObject movementInfoView;
+    [SerializeField] private Button startBtn;
+    [SerializeField] private TMP_Text startTxt;
+    //public List<DummyController> modelDummyControllers = new List<DummyController>();
 
     public InputActionProperty anyKetStartButton;
     public MirrorMenuManager mirrorMenuManager;
 
-    public MirrorCamPos mirrorCamPos;
-
     private void Awake()
     {
-        startView.SetActive(true);
-        movementInfoView.SetActive(true);
 
-        poseManager = gameObject.GetComponent<PoseManager>();
-
-        //if (poseManager.enabled == true)
-        //    poseManager.enabled = false;
-
-        if (inputPoseModel == null)
-        {            
-            inputPoseModel = UserDataRepo.Instance.UserTransform.GetComponent<InputPoseModel>();
-        }
     }    
 
     // Start is called before the first frame update
     void Start()
     {
-        UserDataRepo.Instance.MovementManager = this;
-
-        anyKetStartButton = UserDataRepo.Instance.UIManager.GetInputKey("Start");
-
         SetUpMovementUI();
     }
 
@@ -72,7 +50,7 @@
         //    RestartReady();
         //}
 
-        if (startView.activeSelf == true &&
+        if (mirrorObj.activeSelf && startView.activeSelf &&
             anyKetStartButton.action.WasPressedThisFrame())
         {
             StartPlayMode();
@@ -91,27 +69,24 @@
         mirrorMenuManager.modeObj.SetActive(false);
         movementInfoView.SetActive(false);
         Debug.Log("현재 골라진 모드" + selectMode);
+        
+        UserDataRepo.Instance.PoseManager.IsDivided = false;
 
         switch (selectMode)
         {
             case "Practice":
                 mirrorMenuManager.modeObj.SetActive(true);
                 movementInfoView.SetActive(true);
-                poseManager.isDivided = false;
-
                 break;
 
             case "Divided":
                 mirrorMenuManager.speedObj.SetActive(true);
                 mirrorMenuManager.modeObj.SetActive(true);
-                poseManager.isDivided = true;
-
+                UserDataRepo.Instance.PoseManager.IsDivided = true;
                 break;
 
             case "Evaluation":
                 movementInfoView.SetActive(true);
-                poseManager.isDivided = false;
-
                 break;
         }
     }
@@ -126,7 +101,7 @@
 
             ShowSelectModeUI(UserDataRepo.Instance.VRAnimController.NowState.ToString());
             UserDataRepo.Instance.VRAnimController.ChangeAnimState(UserDataRepo.Instance.VRAnimController.NowState.ToString());
-            poseManager.isDivided = true;
+            UserDataRepo.Instance.PoseManager.IsDivided = true;
             UserDataRepo.Instance.VRAnimController.ResetAnim(false);
         }
         else
@@ -137,7 +112,7 @@
             
             ShowSelectModeUI("Practice");
             UserDataRepo.Instance.VRAnimController.ChangeAnimState("Practice");
-            poseManager.isDivided = false;
+            UserDataRepo.Instance.PoseManager.IsDivided = false;
 
             UserDataRepo.Instance.VRAnimController.ResetAnim(false);
         }
@@ -145,15 +120,8 @@
     }
 
 
-    public void StartMoveMentCheck(string nowProgramName, string nowAnimName)
+    public void StartMoveMentCheck(string nowAnimName)
     {
-        if (SceneManager.GetActiveScene().name != Define.VR_SCENE_FOUR)
-        {
-            gameObject.SetActive(false);
-
-            return;
-        }
-
         startView.SetActive(true);
         //vementInfoView.SetActive(false);
         startTxt.text = "Start!";
@@ -161,7 +129,7 @@
         ShowSelectModeUI(UserDataRepo.Instance.VRAnimController.NowState.ToString());
 
         // List를 배열로 변경해서 삽입
-        poseManager.animArray = UserDataRepo.Instance.VRAnimController.nowAnimator.ToArray();
+        UserDataRepo.Instance.PoseManager.AnimArray = UserDataRepo.Instance.VRAnimController.nowAnimator.ToArray();
         //poseManager.effectPoseText.Add(poseManager.animArray[1].GetComponent<EffectPoseText>());
 
         // 거울 카메라의 타겟
@@ -169,7 +137,7 @@
 
 
         //modelDummyControllers.Clear();
-        poseManager.effectPoseText.Clear();
+        UserDataRepo.Instance.PoseManager.EffectPoseText.Clear();
 
         //foreach (var model in poseManager.animArray)
         //{
@@ -189,8 +157,8 @@
 
         for (int i = 0; i < 4; i++)
         {
-            EffectPoseText tempEffect_ = poseManager.animArray[i].GetComponent<EffectPoseText>();
-            poseManager.effectPoseText.Add(tempEffect_);
+            EffectPoseText tempEffect_ = UserDataRepo.Instance.PoseManager.AnimArray[i].GetComponent<EffectPoseText>();
+            UserDataRepo.Instance.PoseManager.EffectPoseText.Add(tempEffect_);
         }
 
 
@@ -206,15 +174,16 @@
 
         //UIManager.Instance.RecenterPlayer();
 
-        inputPoseModel.SetVRIK(poseManager.animArray[0], ref poseManager);
+        //inputPoseModel.SetVRIK(UserDataRepo.Instance.PoseManager.AnimArray[0]);
 
         // Dummy의 DummyController 활성화
-        DummyController tempDummy_ = poseManager.animArray[4].GetComponent<DummyController>();
-        tempDummy_.poseManager = poseManager;
+        DummyController tempDummy_ = UserDataRepo.Instance.PoseManager.AnimArray[4].GetComponent<DummyController>();
+        //tempDummy_.poseManager = poseManager;
         tempDummy_.isMatchCharacter = true;
 
-        SetNowInfoTxt(nowProgramName, nowAnimName);
+        SetNowInfoTxt(nowAnimName);
 
+        mirrorObj.SetActive(true);
 
         if (UserDataRepo.Instance.VRUICanvas.activeSelf)
             UserDataRepo.Instance.UIManager.OnOffMainUI();
@@ -273,114 +242,75 @@
             UserDataRepo.Instance.VRUIManager.AllOffUI();
 
             // 결과창 꺼내기
-            // mirrorMenuManager.nowVRUI.
-            //     resultUIManager.gameObject.SetActive(true);
+            UserDataRepo.Instance.VRUIManager.ResultUIManager.OpenResultUI();
 
-            // mirrorMenuManager.nowVRUI.
-            //     resultUIManager.ViewResultUI(
-            //     poseManager.greatCount, poseManager.goodCount, poseManager.missCount);
+            UserDataRepo.Instance.VRUIManager.ResultUIManager.ViewResultUI(
+                UserDataRepo.Instance.PoseManager.greatCount,
+                UserDataRepo.Instance.PoseManager.goodCount,
+                UserDataRepo.Instance.PoseManager.missCount);
         }
         //poseManager.enabled = false;
     }
 
-    public void SetNowInfoTxt(string nowProgram, string nowAnim)
-    {
-        //I2.Loc.LocalizationManager.GetTranslation($"coach(gdStage)/{name}");
-        // 추후 동작평가를 위처럼 현지화 해서 사용해야?
-
-        string tempStr_ = string.Empty;
-
-        switch (nowProgram)
-        {
-            case "Basic":
-                tempStr_ = "기본 동작 중";
-
-                break;
-
-            case "Poomsae":
-                tempStr_ = "동작 평가 중";
-
-                break;
-
-            case "Olympic":
-                tempStr_ = "동작 평가 중";
-
-                break;
-        }
-
-        string nowAnimTxt_ = I2.Loc.LocalizationManager.GetTranslation($"animationClip(gdQuest)/{nowAnim}");
-
-        nowProgramInfoTxt.text = tempStr_;
-
-
-        nowAnimInfoTxt.text = nowAnimTxt_;
+    public void SetNowInfoTxt(string nowAnim)
+    {    
+        nowAnimInfoTxt.Term = $"animationClip(gdQuest)/{nowAnim}";
     }
 
     public void SetUpMovementUI()
     {
-        if(SceneManager.GetActiveScene().name != Define.VR_SCENE_FOUR)
-        {
-            gameObject.SetActive(false);
+        if(mirrorObj == null)
+            mirrorObj = transform.Find("Movement_UI").gameObject;
 
-            return;
+        if(startView == null)
+            startView = mirrorObj.transform.Find("00.Start").gameObject;
+            
+
+        if(startBtn == null)
+            startBtn = startView.transform.Find("StartButton").GetComponent<Button>();
+
+        if(startTxt == null){
+            Transform tempStartBtn_ = startView.transform.Find("StartButton");
+            startTxt = tempStartBtn_.Find("StartTxt").GetComponent<TMP_Text>();
         }
+        
+        if(!startView.activeSelf)
+            startView.SetActive(true);
 
-        GameObject movementInfo_ = gameObject.transform.Find("01.Movement_Info").gameObject;
+        if(movementInfoView == null)
+            movementInfoView = mirrorObj.transform.Find("01.Movement_Info").gameObject;
 
-        //if (sliderPlay == null)
-        //{
-        //    GameObject tempSilder_ = movementInfo_.transform.Find("Slider").gameObject;
-        //    sliderPlay = tempSilder_.GetComponent<Slider>();
-        //}
+        if(!movementInfoView.activeSelf)
+            movementInfoView.SetActive(true);
 
-        //if (userPoseTxt == null)
-        //{
-        //    GameObject tempUserPoseTxt_ = movementInfo_.transform.Find("UserPoseTxt").gameObject;
-        //    userPoseTxt = tempUserPoseTxt_.GetComponent<TMP_Text>();
-        //}
-
-        //if (sliderFill == null)
-        //{
-        //    GameObject tempSilder_ = movementInfo_.transform.Find("Slider").gameObject;
-        //    //GameObject tempFillErea_ = tempSilder_.transform.Find("Fill Area").gameObject;
-        //    //GameObject tempFill_ = tempFillErea_.transform.GetChild(0).gameObject;
-        //    //sliderFill = tempFill_.GetComponent<Image>();
-        //    sliderFill = tempSilder_.transform.Find("Fill").GetComponent<Image>();
-
-        //}
-
-        if (animTimeTxt == null)
-        {
-            GameObject tempSilder_ = movementInfo_.transform.Find("Slider").gameObject;
-            GameObject tempAnimTxt_ = tempSilder_.transform.Find("AnimTimeTxt").gameObject;
+        //if (inputPoseModel == null)
+        //    inputPoseModel = UserDataRepo.Instance.UserTransform.GetComponent<InputPoseModel>();
+        
+        if (animTimeTxt == null) {
+            Transform tempProgress_ = movementInfoView.transform.Find("ProgressBar3D");
+            Transform tempAnimTxt_ = tempProgress_.Find("AnimTimeTxt");
             animTimeTxt = tempAnimTxt_.GetComponent<TMP_Text>();
         }
         
-        Transform tempNowInfo_ = movementInfo_.transform.Find("NowInfoObj");
+        if (nowAnimInfoTxt == null) {
+            Transform tempAnimInfo_ = movementInfoView.transform.Find("NowInfoObj");
+            Transform tempAnimInfoTxt_ = tempAnimInfo_.transform.Find("NowAnimInfoTxt");
 
-        if (nowProgramInfoTxt == null)
-        {
-            Transform tempProgramInfo_ = tempNowInfo_.transform.Find("NowProgramInfoTxt");
-
-            nowProgramInfoTxt = tempProgramInfo_.GetComponent<TMP_Text>();
+            nowAnimInfoTxt = tempAnimInfoTxt_.GetComponent<Localize>();
+        }
+        
+        if(mirrorMenuManager == null) {
+            Transform tempMirrorMenu_ = mirrorObj.transform.Find("MirrorControlls");
+            mirrorMenuManager = tempMirrorMenu_.GetComponent<MirrorMenuManager>();
         }
 
-        if (nowAnimInfoTxt == null)
-        {
-            Transform tempAnimInfo_ = tempNowInfo_.transform.Find("NowAnimInfoTxt");
-
-            nowAnimInfoTxt = tempAnimInfo_.GetComponent<TMP_Text>();
-        }
-
-        nowProgramInfoTxt.text = "";
-        nowAnimInfoTxt.text = "";
-
-        //poseManager.sliderPlay = sliderPlay;
-        //poseManager.sliderBG = sliderFill;
-        //poseManager.userPoseState = userPoseTxt;
+        startBtn.onClick.AddListener(() => StartPlayMode());
 
         mirrorMenuManager.modeBtn.onClick.AddListener(() => OnDividedMode());
 
-        //gameObject.SetActive(false);
+        anyKetStartButton = UserDataRepo.Instance.UIManager.GetInputKey("Start");
+        UserDataRepo.Instance.MovementManager = this;
+        
+        mirrorObj.SetActive(false);
     }
 }
VRTK/Assets/01.Junil/Script/UI/ResultUIManager.cs
--- VRTK/Assets/01.Junil/Script/UI/ResultUIManager.cs
+++ VRTK/Assets/01.Junil/Script/UI/ResultUIManager.cs
@@ -53,14 +53,12 @@
         resultUI.SetActive(true);
     }
 
-    public void CloseResultUI()
+    public IEnumerator CloseResultUI()
     {
-        UIManager.Instance.mapChange.AllOffMapPlay();
-        UIManager.Instance.mapChange.ChangeLobbyMap(string.Empty);
-
-        UIManager.Instance.vrAnim.AllCloseObjs();
-        UIManager.Instance.isAnimPlay = false;
-        UIManager.Instance.createUI.SetActive(false);
+        Debug.Log("In CloseResultUI");
+        yield return StartCoroutine(UserDataRepo.Instance.PlayMapManager.ChangeLobbyMap("vrmap_lobby01"));
+        UserDataRepo.Instance.VRAnimController.AllCloseObjs();
+        UserDataRepo.Instance.VRUICanvas.SetActive(false);
     }
 
 
@@ -93,9 +91,8 @@
 
 
         //UIManager.Instance.vrTkUIManager.nowSelectCoachName;
-        
-        string tempStr_ = I2.Loc.LocalizationManager.GetTranslation(
-            $"coach(gdStage)/{UIManager.Instance.vrTkUIManager.nowSelectCoachName}");
+        string tempStr_ = LocalizationManager.GetTranslation(
+            $"coach(gdStage)/{UserDataRepo.Instance.VRUIManager.NowSelectNameKey}");
         // 강사 이름 어떻게 가져오지?
         instructorNameTxt.text = $"{tempStr_} 강사";
 
@@ -172,7 +169,6 @@
             bestScoreVal = tempBestScore_.Find("BestScoreVal").GetComponent<TMP_Text>();
         }
 
-
         if (evaluationTxt == null)
         {
             evaluationTxt = tempTotalInfo_.transform.Find("Evaluation").GetComponent<TMP_Text>();
@@ -217,7 +213,6 @@
         {
             Transform tempGold_ = tempTotalInfo_.transform.Find("Gold_Count");
             goldCount = tempGold_.Find("GoldCount").GetComponent<TMP_Text>();
-
         }
 
         if(rankingBtn == null)
@@ -235,21 +230,19 @@
             continueBtn = tempBtns_.transform.Find("ContinueBtn").GetComponent<Button>();
         }
 
-        //if (uiManager == null)
-        //{
-        //    GameObject tempObj_ = GameObject.FindWithTag(Define.UI_MANAGER_TAG);
-        //    uiManager = tempObj_.GetComponent<UIManager>();
-        //}
 
         // 랭킹은 잠시 끄기
         //rankingBtn.onClick.AddListener(() => CloseResultUI());
-        lobbyBtn.onClick.AddListener(() => CloseResultUI());
-        continueBtn.onClick.AddListener(() => UIManager.Instance.movementManager.StartPlayMode());
+        lobbyBtn.onClick.AddListener(() => StartCoroutine(CloseResultUI()));
+        continueBtn.onClick.AddListener(() => UserDataRepo.Instance.MovementManager.StartPlayMode());
 
         if (resultUI.activeSelf == true)
         {
             OffResultUI();
         }
 
+        PlayVRUIManager tempVRUIManager_ = transform.parent.GetComponent<PlayVRUIManager>();
+        tempVRUIManager_.ResultUIManager = this;
+
     }
 }
VRTK/Assets/01.Junil/Script/UI/TK/VRTkUIManager.cs
--- VRTK/Assets/01.Junil/Script/UI/TK/VRTkUIManager.cs
+++ VRTK/Assets/01.Junil/Script/UI/TK/VRTkUIManager.cs
@@ -811,7 +811,7 @@
 
         uiManager.movementManager.gameObject.SetActive(true);
         
-        uiManager.movementManager.StartMoveMentCheck(nowProgram, nowSelectAnim);
+        //uiManager.movementManager.StartMoveMentCheck(nowProgram, nowSelectAnim);
     }   // ShowTkModel
 
 }
VRTK/Assets/@LobbyRes/Prefab/MirrorCustom.prefab
--- VRTK/Assets/@LobbyRes/Prefab/MirrorCustom.prefab
+++ VRTK/Assets/@LobbyRes/Prefab/MirrorCustom.prefab
@@ -99,8 +99,6 @@
   speedTxtObj: {fileID: 770361707169205192}
   searchSno: JYEki4S6SdYcjNwy2WMDIB1oGNC2
   nickNameTxt: {fileID: 7177263259555141618}
-  uiManager: {fileID: 0}
-  nowVRUI: {fileID: 0}
 --- !u!1 &163027169109862480
 GameObject:
   m_ObjectHideFlags: 0
@@ -747,7 +745,9 @@
   serializedVersion: 6
   m_Component:
   - component: {fileID: 6776343638521559000}
-  - component: {fileID: 6573537422460591482}
+  - component: {fileID: 2080597305224382688}
+  - component: {fileID: 8851317225924202710}
+  - component: {fileID: 3510470170845613448}
   m_Layer: 0
   m_Name: mirrorcustom
   m_TagString: Untagged
@@ -774,23 +774,119 @@
   - {fileID: 2448315792599301254}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &6573537422460591482
+--- !u!114 &2080597305224382688
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 702392429637569537}
-  m_Enabled: 0
+  m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: a20c62ff0f730c144a7c05850062a97f, type: 3}
+  m_Script: {fileID: 11500000, guid: 6dc770ab5b30d5a48920e1a283cbfc86, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  poseManager: {fileID: 0}
-  targetHeadTrans: {fileID: 0}
-  mirrorCamTrans: {fileID: 0}
-  isFollow: 0
-  modelVRIK: {fileID: 0}
+  mirrorObj: {fileID: 0}
+  nowAnimInfoTxt: {fileID: 0}
+  animTimeTxt: {fileID: 0}
+  inputPoseModel: {fileID: 0}
+  startView: {fileID: 0}
+  movementInfoView: {fileID: 0}
+  startBtn: {fileID: 0}
+  startTxt: {fileID: 0}
+  anyKetStartButton:
+    m_UseReference: 1
+    m_Action:
+      m_Name: Any Ket Start Button
+      m_Type: 0
+      m_ExpectedControlType: 
+      m_Id: 3658c2e0-51bc-4506-a810-1a2a5b753937
+      m_Processors: 
+      m_Interactions: 
+      m_SingletonActionBindings: []
+      m_Flags: 0
+    m_Reference: {fileID: 0}
+  mirrorMenuManager: {fileID: 0}
+--- !u!114 &8851317225924202710
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 702392429637569537}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 6090d742e4a89e44fbbd7425c30fb470, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  modelVrIK: {fileID: 0}
+  playerVrIK: {fileID: 0}
+  animArray: []
+  userAnim: {fileID: 0}
+  ttNoCnt: {fileID: 0}
+  ttOkCnt: {fileID: 0}
+  ttHalfCnt: {fileID: 0}
+  progressBar: {fileID: 0}
+  progressColor: {fileID: 0}
+  durVal: 20
+  shoulderVal: 20
+  armVal: 15
+  currentPoseMatchSimilarity: 0
+  userSimilarity: {fileID: 0}
+  userPoseStr: 
+  userPoseColor: {r: 0, g: 0, b: 0, a: 0}
+  similarityScoreNormal: 85
+  similarityScoreBad: 75
+  currentColor: {r: 0, g: 0, b: 0, a: 0}
+  greatCount: 0
+  goodCount: 0
+  missCount: 0
+  effectPoseText: []
+  poseDebugTxt: {fileID: 5865359360534924003}
+  isDebug: 1
+  isTestDeBug: 0
+  isPassDebug: 0
+  particleVRControl: {fileID: 0}
+  waitingTime: 0.5
+  modelMarkers: []
+  playState: 0
+  checkInput:
+    m_UseReference: 0
+    m_Action:
+      m_Name: Check Input
+      m_Type: 0
+      m_ExpectedControlType: 
+      m_Id: d85db8f4-95fa-4c21-9e43-3de1501bc3a3
+      m_Processors: 
+      m_Interactions: 
+      m_SingletonActionBindings: []
+      m_Flags: 0
+    m_Reference: {fileID: 0}
+--- !u!114 &3510470170845613448
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 702392429637569537}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e12e7b995fe53c7429938ed5bd8312ce, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  particleArray:
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  - {fileID: 0}
+  particleObj: {fileID: 4152571495599528958}
+  effectAreaTrans: {fileID: 0}
 --- !u!1 &861182371616674418
 GameObject:
   m_ObjectHideFlags: 0
@@ -4214,6 +4310,7 @@
   - component: {fileID: 4783819721224876288}
   - component: {fileID: 8523202347170650060}
   - component: {fileID: 2668914988405658714}
+  - component: {fileID: 4188122230459467172}
   m_Layer: 5
   m_Name: NowAnimInfoTxt
   m_TagString: Untagged
@@ -4237,7 +4334,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 1, y: 0.5}
-  m_AnchoredPosition: {x: 20, y: 0}
+  m_AnchoredPosition: {x: -20, y: 0}
   m_SizeDelta: {x: -40, y: 14}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &8523202347170650060
@@ -4268,7 +4365,7 @@
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_text: "\uD0DC\uADF9 1\uC7A5"
+  m_text: 
   m_isRightToLeft: 0
   m_fontAsset: {fileID: 11400000, guid: dbde3ec474936cd4c8ec331379d16e94, type: 2}
   m_sharedMaterial: {fileID: 3420232619700612365, guid: dbde3ec474936cd4c8ec331379d16e94,
@@ -4338,6 +4435,45 @@
   m_hasFontAssetChanged: 0
   m_baseMaterial: {fileID: 0}
   m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!114 &4188122230459467172
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4432472382111169127}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  mTerm: 
+  mTermSecondary: 
+  PrimaryTermModifier: 0
+  SecondaryTermModifier: 0
+  TermPrefix: 
+  TermSuffix: 
+  LocalizeOnAwake: 1
+  IgnoreRTL: 0
+  MaxCharactersInRTL: 0
+  IgnoreNumbersInRTL: 1
+  CorrectAlignmentForRTL: 1
+  AddSpacesToJoinedLanguages: 0
+  AllowLocalizedParameters: 1
+  AllowParameters: 1
+  TranslatedObjects: []
+  LocalizeEvent:
+    m_PersistentCalls:
+      m_Calls: []
+  AlwaysForceLocalize: 0
+  LocalizeCallBack:
+    Target: {fileID: 0}
+    MethodName: 
+  mGUI_ShowReferences: 0
+  mGUI_ShowTems: 1
+  mGUI_ShowCallback: 0
+  mLocalizeTarget: {fileID: 0}
+  mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI
 --- !u!1 &4500695146288802483
 GameObject:
   m_ObjectHideFlags: 0
@@ -4882,9 +5018,6 @@
   - component: {fileID: 5860589040194469902}
   - component: {fileID: 3775056483627737121}
   - component: {fileID: 2425776587704017946}
-  - component: {fileID: 2305159339582060405}
-  - component: {fileID: 7760480218525326683}
-  - component: {fileID: 113138770456477527}
   m_Layer: 5
   m_Name: Movement_UI
   m_TagString: Untagged
@@ -4992,124 +5125,6 @@
   m_Script: {fileID: 11500000, guid: 7ee805472840d5843b863535775bbe97, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
---- !u!114 &2305159339582060405
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4690443472354061427}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 6dc770ab5b30d5a48920e1a283cbfc86, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  poseManager: {fileID: 0}
-  sliderPlay: {fileID: 0}
-  nowProgramInfoTxt: {fileID: 0}
-  nowAnimInfoTxt: {fileID: 0}
-  animTimeTxt: {fileID: 3105393116448346129}
-  sliderFill: {fileID: 0}
-  inputPoseModel: {fileID: 0}
-  startView: {fileID: 272270018644877940}
-  movementInfoView: {fileID: 9154982448912277379}
-  startTxt: {fileID: 7736841737638252797}
-  modelDummyControllers: []
-  anyKetStartButton:
-    m_UseReference: 1
-    m_Action:
-      m_Name: Any Ket Start Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 81d4c986-0a2b-4cea-ba93-b6ee05e68cd0
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  mirrorMenuManager: {fileID: 5667845908797775449}
-  mirrorCamPos: {fileID: 6573537422460591482}
---- !u!114 &7760480218525326683
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4690443472354061427}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 6090d742e4a89e44fbbd7425c30fb470, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  modelVrIK: {fileID: 0}
-  playerVrIK: {fileID: 0}
-  animArray: []
-  userAnim: {fileID: 0}
-  ttNoCnt: {fileID: 0}
-  ttOkCnt: {fileID: 0}
-  ttHalfCnt: {fileID: 0}
-  progressBar: {fileID: 0}
-  progressColor: {fileID: 0}
-  durVal: 20
-  shoulderVal: 20
-  armVal: 15
-  userSimilarity: {fileID: 0}
-  userPoseStr: 
-  similarityScoreNormal: 85
-  similarityScoreBad: 75
-  greatCount: 0
-  goodCount: 0
-  missCount: 0
-  effectPoseText: []
-  isDivided: 0
-  uiManager: {fileID: 0}
-  poseDebugTxt: {fileID: 5865359360534924003}
-  isDebug: 1
-  isTestDeBug: 0
-  isPassDebug: 0
-  particleVRControl: {fileID: 113138770456477527}
-  PlayerLeftHandTransform: {fileID: 0}
-  PlayerRightHandTransform: {fileID: 0}
-  waitingTime: 0.5
-  modelMarkers: []
-  playState: 0
-  checkInput:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Check Input
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 03824732-81cf-4eca-9973-ed0815aa13d7
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
---- !u!114 &113138770456477527
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4690443472354061427}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: e12e7b995fe53c7429938ed5bd8312ce, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  particleArray:
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  - {fileID: 0}
-  particleObj: {fileID: 4152571495599528958}
-  effectAreaTrans: {fileID: 0}
 --- !u!1 &5337442488565641654
 GameObject:
   m_ObjectHideFlags: 0
@@ -6790,7 +6805,7 @@
   - component: {fileID: 938112955608218044}
   - component: {fileID: 4639534222575486762}
   m_Layer: 5
-  m_Name: NowProgramInfoTxt
+  m_Name: ProgramInfoTxt
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -6812,7 +6827,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 1, y: 0.5}
-  m_AnchoredPosition: {x: -20, y: 0}
+  m_AnchoredPosition: {x: 20, y: 0}
   m_SizeDelta: {x: -40, y: 14}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &938112955608218044
@@ -6843,7 +6858,7 @@
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_text: "\uB3D9\uC791 \uD3C9\uAC00 \uC911"
+  m_text: "\uD3C9\uAC00 \uC911"
   m_isRightToLeft: 0
   m_fontAsset: {fileID: 11400000, guid: dbde3ec474936cd4c8ec331379d16e94, type: 2}
   m_sharedMaterial: {fileID: 3420232619700612365, guid: dbde3ec474936cd4c8ec331379d16e94,
@@ -7342,7 +7357,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 2305159339582060405}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: MovementManager, Assembly-CSharp
         m_MethodName: StartPlayMode
         m_Mode: 1
VRTK/Assets/Scripts/PoseManager/DummyController.cs
--- VRTK/Assets/Scripts/PoseManager/DummyController.cs
+++ VRTK/Assets/Scripts/PoseManager/DummyController.cs
@@ -4,7 +4,7 @@
 
 public class DummyController : MonoBehaviour
 {
-    public PoseManager poseManager;
+    //public PoseManager poseManager;
     public bool isMatchCharacter;
 
 
@@ -12,7 +12,7 @@
     {
         if(isMatchCharacter)
         {
-            poseManager.SetReady();
+            UserDataRepo.Instance.PoseManager.SetReady();
         }
     }
 
@@ -20,7 +20,7 @@
     {
         if (isMatchCharacter)
         {
-            poseManager.SetCheck();
+            UserDataRepo.Instance.PoseManager.SetCheck();
         }
     }
 
@@ -29,7 +29,7 @@
     {
         if (isMatchCharacter)
         {
-            poseManager.PoseCheck();
+            UserDataRepo.Instance.PoseManager.PoseCheck();
         }
     }
 
VRTK/Assets/Scripts/PoseManager/PoseManager.cs
--- VRTK/Assets/Scripts/PoseManager/PoseManager.cs
+++ VRTK/Assets/Scripts/PoseManager/PoseManager.cs
@@ -1,20 +1,28 @@
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
-using UnityEngine.UI;
 using TMPro;
 using UnityEngine.InputSystem;
 using RootMotion.FinalIK;
-using YAProgressBar;
-using static System.Net.Mime.MediaTypeNames;
 
 public class PoseManager : MonoBehaviour
 {
+    [SerializeField] private VRIK modelVrIK;
+    public VRIK ModelVrIK{
+        get { return modelVrIK; }
+        set { modelVrIK = value; }
+    }
+    [SerializeField] private VRIK playerVrIK;
+    public VRIK PlayerVrIK{
+        get { return playerVrIK; }
+        set { playerVrIK = value; }
+    }
 
-    public VRIK modelVrIK;
-    public VRIK playerVrIK;
-
-    public Animator[] animArray;
+    [SerializeField] private Animator[] animArray;
+    public Animator[] AnimArray{
+        get{ return animArray; }
+        set{ animArray = value; }
+    }
     public Animator userAnim;
 
     public TMP_Text ttNoCnt;
@@ -34,13 +42,13 @@
     [SerializeField]
     private float armVal = 15f;
 
-    private float currentPoseMatchSimilarity;
+    [SerializeField] private float currentPoseMatchSimilarity;
 
     public TMP_Text userSimilarity;
     //public TMP_Text userPoseState;
 
     public string userPoseStr;
-    private Color userPoseColor;
+    [SerializeField] private Color userPoseColor;
 
     //private float similarityScoreGood = 85f;
     [SerializeField]
@@ -50,7 +58,7 @@
 
 
     //public Image sliderBG;
-    private Color currentColor;
+    [SerializeField] private Color currentColor;
 
     //private float changeColorVal = 0.15f;
 
@@ -60,9 +68,19 @@
     public int goodCount = 0;
     public int missCount = 0;
 
-    public List<EffectPoseText> effectPoseText = new List<EffectPoseText>();
-    public bool isDivided = false;  // 구분 동작이 활성화 되었는지 체크하는 bool 값
-    public UIManager uiManager;
+    [SerializeField] private List<EffectPoseText> effectPoseText;
+    public List<EffectPoseText> EffectPoseText{
+        get{ return effectPoseText; }
+        set{ effectPoseText = value; }
+    }
+
+    private bool isDivided = false;  // 구분 동작이 활성화 되었는지 체크하는 bool 값
+    public bool IsDivided{
+        get{ return isDivided; }
+        set{
+            isDivided = value;
+        }
+    }
     public TMP_Text poseDebugTxt;
 
     private bool isCheckPose = false;
@@ -75,8 +93,8 @@
     private bool isEndPose = false;
 
     public ParticleVRControl particleVRControl;
-    public Transform PlayerLeftHandTransform;
-    public Transform PlayerRightHandTransform;
+    //public Transform PlayerLeftHandTransform;
+    //public Transform PlayerRightHandTransform;
 
     private float[] testAngleVals = new float[9];
 
@@ -102,25 +120,22 @@
 
     void Start()
     {
+        effectPoseText = new List<EffectPoseText>();
+        isDivided = false;
         //isPassDebug = true;
         testAngleVals = new float[9];
 
         playState = PlayState.Ready;
 
-        GameObject tempMovement_ = gameObject.transform.Find("01.Movement_Info").gameObject;
+        GameObject tempMovement_ = gameObject.transform.Find("Movement_UI").gameObject;
+        GameObject tempMovementInfo_ = tempMovement_.transform.Find("01.Movement_Info").gameObject;
 
-        //if(userPoseState == null)
-        //    userPoseState = tempMovement_.transform.Find("UserPoseTxt").GetComponent<TMP_Text>();
-
-        //if(sliderPlay == null)
-        //sliderPlay = tempMovement_.transform.Find("Slider").GetComponent<Slider>();
 
         if (progressBar == null)
         {
-            GameObject tempProgress_ = tempMovement_.transform.Find("ProgressBar3D").gameObject;
+            GameObject tempProgress_ = tempMovementInfo_.transform.Find("ProgressBar3D").gameObject;
 
-            progressBar = tempProgress_.transform.Find("CircularProgressBar").GetComponent<YAProgressBar.CircularProgressBar>();
-                            
+            progressBar = tempProgress_.transform.Find("CircularProgressBar").GetComponent<YAProgressBar.CircularProgressBar>();                            
         }
 
         if(progressColor == null)
@@ -138,18 +153,21 @@
         if(particleVRControl == null)
             particleVRControl = gameObject.GetComponent<ParticleVRControl>();
 
-        PlayerLeftHandTransform = GameObject.Find("ModelsLeft").transform;
-        PlayerRightHandTransform = GameObject.Find("ModelsRight").transform;
+        // PlayerLeftHandTransform = User;
+        // PlayerRightHandTransform = GameObject.Find("ModelsRight").transform;
 
 
         //userPoseState.text = "";
         currentColor = Color.white;
         progressColor.color = currentColor;
 
-        GameObject tempUIManager_ = GameObject.FindWithTag(Define.UI_MANAGER_TAG);
-        uiManager = tempUIManager_.GetComponent<UIManager>();
+        UserDataRepo.Instance.PoseManager = this;
+        
+        userAnim = UserDataRepo.Instance.VRAnimController.DummyAnim;
 
+        ModelVrIK = UserDataRepo.Instance.VRAnimController.DummyCopyVRIK;
 
+        PlayerVrIK = UserDataRepo.Instance.VRAnimController.DummyVRIK;
     }
 
 
@@ -198,8 +216,8 @@
         isCheckPose = true;
 
         if (isDivided &&
-            uiManager.vrAnim.isPressA == false &&
-            uiManager.vrAnim.isPressB == false)
+            UserDataRepo.Instance.VRAnimController.IsPressA == false &&
+            UserDataRepo.Instance.VRAnimController.IsPressB == false)
         {
             // 구분 동작 모드가 켜져 있다.
             StartCoroutine(DividedModeWait());
@@ -261,43 +279,43 @@
         currentPoseMatchSimilarity = tempPoseMatch_;
 
 
-        DebugTxtCall.Instance.CallDebug(
-            $"총점 {currentPoseMatchSimilarity}\n"
-            +
-            $"머리 : {modolMarkers[0].rotation.normalized} // {playerMarkers[0].rotation.normalized} //\n" +
-            $"Quaternion.Angle  {testAngleVals[8]} // NormalizeHelper [{components[8]}] \n\n" +
+        // DebugTxtCall.Instance.CallDebug(
+        //     $"총점 {currentPoseMatchSimilarity}\n"
+        //     +
+        //     $"머리 : {modolMarkers[0].rotation.normalized} // {playerMarkers[0].rotation.normalized} //\n" +
+        //     $"Quaternion.Angle  {testAngleVals[8]} // NormalizeHelper [{components[8]}] \n\n" +
 
-            $"어깨1 : {modolMarkers[1].localRotation} // {playerMarkers[1].localRotation} //\n" +
-            $"Quaternion.Angle {testAngleVals[0]} // NormalizeHelper [{components[0]}]\n" +
+        //     $"어깨1 : {modolMarkers[1].localRotation} // {playerMarkers[1].localRotation} //\n" +
+        //     $"Quaternion.Angle {testAngleVals[0]} // NormalizeHelper [{components[0]}]\n" +
 
-            $"어깨2 : {modolMarkers[5].localRotation} // {playerMarkers[5].localRotation} //\n" +
-            $"Quaternion.Angle {testAngleVals[1]} // NormalizeHelper [{components[1]}]\n\n" +
+        //     $"어깨2 : {modolMarkers[5].localRotation} // {playerMarkers[5].localRotation} //\n" +
+        //     $"Quaternion.Angle {testAngleVals[1]} // NormalizeHelper [{components[1]}]\n\n" +
 
-            $"손1 : {modolMarkers[4].localRotation} // {playerMarkers[4].localRotation} //\n" +
-            $"Quaternion.Angle {testAngleVals[2]} // NormalizeHelper [{components[2]}]\n" +
+        //     $"손1 : {modolMarkers[4].localRotation} // {playerMarkers[4].localRotation} //\n" +
+        //     $"Quaternion.Angle {testAngleVals[2]} // NormalizeHelper [{components[2]}]\n" +
 
-            $"손2 : {modolMarkers[8].localRotation} // {playerMarkers[8].localRotation.normalized} //\n" +
-            $"Quaternion.Angle {testAngleVals[3]} // NormalizeHelper {components[3]}\n\n" +
+        //     $"손2 : {modolMarkers[8].localRotation} // {playerMarkers[8].localRotation.normalized} //\n" +
+        //     $"Quaternion.Angle {testAngleVals[3]} // NormalizeHelper {components[3]}\n\n" +
 
 
-            $"팔꿈치1 : {GetElbowAngle(modolMarkers[2].position, modolMarkers[3].position, modolMarkers[4].position)}" +
-            $" // {GetElbowAngle(playerMarkers[2].position, playerMarkers[3].position, playerMarkers[4].position)} //\n" +
+        //     $"팔꿈치1 : {GetElbowAngle(modolMarkers[2].position, modolMarkers[3].position, modolMarkers[4].position)}" +
+        //     $" // {GetElbowAngle(playerMarkers[2].position, playerMarkers[3].position, playerMarkers[4].position)} //\n" +
             
-            $"Quaternion.Angle {testAngleVals[4]} // NormalizeHelper {components[4]}\n" +
+        //     $"Quaternion.Angle {testAngleVals[4]} // NormalizeHelper {components[4]}\n" +
 
-            $"팔꿈치2 : {GetElbowAngle(modolMarkers[6].position, modolMarkers[7].position, modolMarkers[8].position)}" +
-            $" // {GetElbowAngle(playerMarkers[6].position, playerMarkers[7].position, playerMarkers[8].position)} //\n" +
+        //     $"팔꿈치2 : {GetElbowAngle(modolMarkers[6].position, modolMarkers[7].position, modolMarkers[8].position)}" +
+        //     $" // {GetElbowAngle(playerMarkers[6].position, playerMarkers[7].position, playerMarkers[8].position)} //\n" +
             
-            $"Quaternion.Angle {testAngleVals[5]} // NormalizeHelper {components[5]}\n\n" +
+        //     $"Quaternion.Angle {testAngleVals[5]} // NormalizeHelper {components[5]}\n\n" +
 
 
-            $"팔1 : {modolMarkers[2].localRotation} // {playerMarkers[2].localRotation} //\n" +
-            $"Quaternion.Angle {testAngleVals[6]} // NormalizeHelper {components[6]}\n" + // => 팔 방향 
+        //     $"팔1 : {modolMarkers[2].localRotation} // {playerMarkers[2].localRotation} //\n" +
+        //     $"Quaternion.Angle {testAngleVals[6]} // NormalizeHelper {components[6]}\n" + // => 팔 방향 
 
-            $"팔2 : {modolMarkers[6].localRotation} // {playerMarkers[6].localRotation} //\n" +
-            $"Quaternion.Angle {testAngleVals[7]} // NormalizeHelper {components[7]}\n\n"  // => 팔 방향
+        //     $"팔2 : {modolMarkers[6].localRotation} // {playerMarkers[6].localRotation} //\n" +
+        //     $"Quaternion.Angle {testAngleVals[7]} // NormalizeHelper {components[7]}\n\n"  // => 팔 방향
 
-            );
+        //     );
 
         
 
@@ -430,7 +448,7 @@
 
         // 판정이 miss 만 아니라면 타격 이펙트 발생
         if (userPoseColor != Color.red)
-            particleVRControl.SetParticleEffect(PlayerLeftHandTransform, PlayerRightHandTransform);
+            particleVRControl.SetParticleEffect(UserDataRepo.Instance.UserHandLeftTrans, UserDataRepo.Instance.UserHandRightTrans);
 
 
         //if (isDivided &&
@@ -568,7 +586,7 @@
             isEndPose = true;
             //AnimAllReStart();
             //userPoseState.text = "";
-            uiManager.movementManager.RestartReady();
+            UserDataRepo.Instance.MovementManager.RestartReady();
             progressColor.color = Color.white;
             playState = PlayState.Ready;
             greatCount = 0;
@@ -612,6 +630,9 @@
     // Update is called once per frame
     void Update()
     {
+        if (!UserDataRepo.Instance.VRAnimController.IsPlay || UserDataRepo.Instance.VRUICanvas.activeSelf)
+            return;
+
 #if UNITY_EDITOR
         if (Input.GetKeyDown(KeyCode.L) || checkInput.action.WasPressedThisFrame())
         {            
VRTK/Assets/VRRes/VRUI/00.Prefab/animplay.prefab
--- VRTK/Assets/VRRes/VRUI/00.Prefab/animplay.prefab
+++ VRTK/Assets/VRRes/VRUI/00.Prefab/animplay.prefab
@@ -321,7 +321,6 @@
   m_Component:
   - component: {fileID: 8172390620446709851}
   - component: {fileID: -5796313045173018655}
-  - component: {fileID: 5506093677404544293}
   m_Layer: 5
   m_Name: animplay
   m_TagString: Untagged
@@ -434,121 +433,6 @@
       m_SingletonActionBindings: []
       m_Flags: 0
     m_Reference: {fileID: 0}
---- !u!114 &5506093677404544293
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1279190771891503001}
-  m_Enabled: 0
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: e8a75d1c3edfe674e9d574b69c93a268, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  nowAnimator: []
-  healObj: {fileID: 0}
-  mirrorObj: {fileID: 0}
-  uiManager: {fileID: 0}
-  animSpeed: 1
-  playStopTxt: {fileID: 6783851734567053726}
-  nowSpeedTxt: {fileID: 4134995328083647633}
-  isPlay: 0
-  plusAnimButton:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Plus Anim Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 96a59786-0120-4199-8e8c-cb58b3e19ea9
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  minusAnimButton:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Minus Anim Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 0ad95926-d816-4aca-968b-0662e998b919
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  rePlayAnimButton:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Re Play Anim Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: c9935e06-b7eb-440e-85b8-5c338446683a
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  resetAnimButton:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Reset Anim Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 6a748158-1b09-49ba-9297-4b58f83bf53e
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  rewindAnimButton:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Rewind Anim Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 96872f82-5326-4518-a058-94a66cb0993c
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  forwardAnimButton:
-    m_UseReference: 0
-    m_Action:
-      m_Name: Forward Anim Button
-      m_Type: 0
-      m_ExpectedControlType: 
-      m_Id: 181c273b-a173-4d92-9b20-2cdda8df2dcc
-      m_Processors: 
-      m_Interactions: 
-      m_SingletonActionBindings: []
-      m_Flags: 0
-    m_Reference: {fileID: 0}
-  selectMode: 0
-  nowState: 0
-  closeBtn: {fileID: 1776633091705112379}
-  playerHeadPos: {fileID: 0}
-  modelDist: 7
-  posAnimUI: {x: 5, y: 3.6, z: 6}
-  playerHeadUI: {fileID: 0}
-  isFirstEffect: 0
-  isResetBtn: 0
-  resetTimer: 0
-  playerAngle: {x: 0, y: 0, z: 0, w: 0}
-  playerPos: {x: 0, y: 0, z: 0}
-  isPressA: 0
-  isPressB: 0
-  timer: 0
-  dummyObj: {fileID: 0}
-  dummyAnim: {fileID: 0}
-  dummyVRIK: {fileID: 0}
-  dummyPlayerScale: {fileID: 0}
-  dummyCopyObj: {fileID: 0}
-  dummyCopyAnim: {fileID: 0}
-  dummyCopyVRIK: {fileID: 0}
-  dummyCopyScale: {fileID: 0}
 --- !u!1 &1374290096380882306
 GameObject:
   m_ObjectHideFlags: 0
@@ -806,7 +690,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 5506093677404544293}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: AnimSpeedController, Assembly-CSharp
         m_MethodName: ResetAnim
         m_Mode: 1
@@ -1075,7 +959,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 5506093677404544293}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: AnimSpeedController, Assembly-CSharp
         m_MethodName: RePlayAnim
         m_Mode: 1
@@ -1209,7 +1093,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 5506093677404544293}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: AnimSpeedController, Assembly-CSharp
         m_MethodName: MinusSpeed
         m_Mode: 1
@@ -1748,7 +1632,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 5506093677404544293}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: AnimSpeedController, Assembly-CSharp
         m_MethodName: PlusSpeed
         m_Mode: 1
VRTK/Assets/VRRes/VRUI/00.Prefab/vrui.prefab
--- VRTK/Assets/VRRes/VRUI/00.Prefab/vrui.prefab
+++ VRTK/Assets/VRRes/VRUI/00.Prefab/vrui.prefab
@@ -356,9 +356,9 @@
   m_Father: {fileID: 2913616789516884969}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
+  m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: -7, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 1}
 --- !u!222 &6221527965870359236
 CanvasRenderer:
@@ -558,7 +558,7 @@
   - component: {fileID: 319005467691672994}
   - component: {fileID: 3873513333538366824}
   m_Layer: 5
-  m_Name: CoachImg
+  m_Name: InstructorImg
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -11250,10 +11250,10 @@
   - {fileID: 2704257781856517172}
   m_Father: {fileID: 8425392062687349333}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 25, y: -22.5}
-  m_SizeDelta: {x: 40, y: 45}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &6278576059295779602
 CanvasRenderer:
@@ -12267,7 +12267,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
         m_MethodName: MakeTkInfo
         m_Mode: 6
@@ -12293,96 +12293,6 @@
   m_EditorClassIdentifier: 
   radius: 4
   image: {fileID: 3951172643135506264}
---- !u!1 &1536902079447723767
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 511829399914839507}
-  - component: {fileID: 3135653383743908466}
-  - component: {fileID: 5193161273442129053}
-  - component: {fileID: 8033121187021179791}
-  m_Layer: 5
-  m_Name: Viewport
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &511829399914839507
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1536902079447723767}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 4225573338708162552}
-  m_Father: {fileID: 3349190830808232335}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
-  m_Pivot: {x: 0, y: 1}
---- !u!222 &3135653383743908466
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1536902079447723767}
-  m_CullTransparentMesh: 1
---- !u!114 &5193161273442129053
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1536902079447723767}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
-  m_Type: 1
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!114 &8033121187021179791
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1536902079447723767}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_ShowMaskGraphic: 0
 --- !u!1 &1550397932359321101
 GameObject:
   m_ObjectHideFlags: 0
@@ -16325,8 +16235,8 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
-        m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
+      - m_Target: {fileID: 7811789589969689281}
+        m_TargetAssemblyTypeName: PlayVRUIManager, Assembly-CSharp
         m_MethodName: SetVRAnimPlay
         m_Mode: 5
         m_Arguments:
@@ -16990,7 +16900,7 @@
   - component: {fileID: 5958864700967268702}
   - component: {fileID: 8220108981381429184}
   m_Layer: 5
-  m_Name: AIEvalModeObj
+  m_Name: AIJudgeModeObj
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -18000,141 +17910,6 @@
   m_EditorClassIdentifier: 
   radius: 5
   image: {fileID: 1048037178912502014}
---- !u!1 &2302240709346426514
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 2676602244570131141}
-  - component: {fileID: 7995343507427898413}
-  - component: {fileID: 2108463934943829544}
-  m_Layer: 5
-  m_Name: Text (TMP)
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &2676602244570131141
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2302240709346426514}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: -0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 6470832318958924327}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0}
-  m_AnchorMax: {x: 0.5, y: 0}
-  m_AnchoredPosition: {x: 0, y: -4}
-  m_SizeDelta: {x: 60, y: 8}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &7995343507427898413
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2302240709346426514}
-  m_CullTransparentMesh: 1
---- !u!114 &2108463934943829544
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2302240709346426514}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_text: Pro
-  m_isRightToLeft: 0
-  m_fontAsset: {fileID: 11400000, guid: dbde3ec474936cd4c8ec331379d16e94, type: 2}
-  m_sharedMaterial: {fileID: 3420232619700612365, guid: dbde3ec474936cd4c8ec331379d16e94,
-    type: 2}
-  m_fontSharedMaterials: []
-  m_fontMaterial: {fileID: 0}
-  m_fontMaterials: []
-  m_fontColor32:
-    serializedVersion: 2
-    rgba: 4294967295
-  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
-  m_enableVertexGradient: 0
-  m_colorMode: 3
-  m_fontColorGradient:
-    topLeft: {r: 1, g: 1, b: 1, a: 1}
-    topRight: {r: 1, g: 1, b: 1, a: 1}
-    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
-    bottomRight: {r: 1, g: 1, b: 1, a: 1}
-  m_fontColorGradientPreset: {fileID: 0}
-  m_spriteAsset: {fileID: 0}
-  m_tintAllSprites: 0
-  m_StyleSheet: {fileID: 0}
-  m_TextStyleHashCode: -1183493901
-  m_overrideHtmlColors: 0
-  m_faceColor:
-    serializedVersion: 2
-    rgba: 4294967295
-  m_fontSize: 6
-  m_fontSizeBase: 6
-  m_fontWeight: 400
-  m_enableAutoSizing: 0
-  m_fontSizeMin: 18
-  m_fontSizeMax: 72
-  m_fontStyle: 0
-  m_HorizontalAlignment: 2
-  m_VerticalAlignment: 512
-  m_textAlignment: 65535
-  m_characterSpacing: 0
-  m_wordSpacing: 0
-  m_lineSpacing: 0
-  m_lineSpacingMax: 0
-  m_paragraphSpacing: 0
-  m_charWidthMaxAdj: 0
-  m_enableWordWrapping: 1
-  m_wordWrappingRatios: 0.4
-  m_overflowMode: 0
-  m_linkedTextComponent: {fileID: 0}
-  parentLinkedComponent: {fileID: 0}
-  m_enableKerning: 1
-  m_enableExtraPadding: 0
-  checkPaddingRequired: 0
-  m_isRichText: 1
-  m_parseCtrlCharacters: 1
-  m_isOrthographic: 1
-  m_isCullingEnabled: 0
-  m_horizontalMapping: 0
-  m_verticalMapping: 0
-  m_uvLineOffset: 0
-  m_geometrySortingOrder: 0
-  m_IsTextObjectScaleStatic: 0
-  m_VertexBufferAutoSizeReduction: 0
-  m_useMaxVisibleDescender: 1
-  m_pageToDisplay: 1
-  m_margin: {x: 0, y: 0, z: 0, w: 0}
-  m_isUsingLegacyAnimationComponent: 0
-  m_isVolumetricText: 0
-  m_hasFontAssetChanged: 0
-  m_baseMaterial: {fileID: 0}
-  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
 --- !u!1 &2305461688689189757
 GameObject:
   m_ObjectHideFlags: 0
@@ -22814,13 +22589,12 @@
   m_LocalPosition: {x: 0, y: 0, z: -2}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 2676602244570131141}
+  m_Children: []
   m_Father: {fileID: 2682295955347840279}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 1, y: 1}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: -10, y: -10}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 10, y: 20}
   m_SizeDelta: {x: 15, y: 15}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &5383579481475631065
@@ -23735,9 +23509,9 @@
   - {fileID: 1025620628972644177}
   m_Father: {fileID: 5045285817590339192}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 20, y: -5}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 40, y: 10}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &3185937031637650261
@@ -23945,7 +23719,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &7989251958888224101
 RectTransform:
   m_ObjectHideFlags: 0
@@ -24019,7 +23793,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &7098302888413880262
 RectTransform:
   m_ObjectHideFlags: 0
@@ -24690,9 +24464,9 @@
   - {fileID: 3230108889490381906}
   m_Father: {fileID: 6451429106112992192}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 15, y: -10}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 30, y: 20}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &3297391311811209740
@@ -25534,9 +25308,9 @@
   - {fileID: 1020782642765065989}
   m_Father: {fileID: 5045285817590339192}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 70, y: -5}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 40, y: 10}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &3364374563496874083
@@ -26963,7 +26737,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
         m_MethodName: SetVRAnimPlay
         m_Mode: 5
@@ -27332,7 +27106,7 @@
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 0}
   m_AnchoredPosition: {x: 0, y: 12.000003}
-  m_SizeDelta: {x: -194, y: 20}
+  m_SizeDelta: {x: 0, y: 20}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &7887242680132732357
 MonoBehaviour:
@@ -29028,7 +28802,7 @@
   m_Component:
   - component: {fileID: 4979405780825979092}
   m_Layer: 5
-  m_Name: AIEvalMode
+  m_Name: AIJudgeMode
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -34168,7 +33942,7 @@
   m_Father: {fileID: 8168959594747483245}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
+  m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 10, y: 10}
   m_Pivot: {x: 0.5, y: 0.5}
@@ -34659,41 +34433,6 @@
   m_EditorClassIdentifier: 
   radius: 4
   image: {fileID: 1386511731173260655}
---- !u!1 &4638100131963605589
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 4225573338708162552}
-  m_Layer: 5
-  m_Name: Content
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &4225573338708162552
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4638100131963605589}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 511829399914839507}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 300}
-  m_Pivot: {x: 0, y: 1}
 --- !u!1 &4658621522914320314
 GameObject:
   m_ObjectHideFlags: 0
@@ -34998,7 +34737,6 @@
   m_Component:
   - component: {fileID: 6197702163516169505}
   - component: {fileID: 7811789589969689281}
-  - component: {fileID: 1336578072685318121}
   - component: {fileID: 5060755355616458311}
   m_Layer: 5
   m_Name: vrui
@@ -35079,6 +34817,9 @@
   nowSelectBundleName: 
   nowSelectAnim: 
   popUp: {fileID: 0}
+  instructorObjs: []
+  createInstructorObjs: []
+  contentAnimClips: []
   playContentManager: {fileID: 0}
   playTitleBgManager: {fileID: 0}
   playItemManager: {fileID: 0}
@@ -35086,77 +34827,7 @@
   playProgramManager: {fileID: 0}
   playReadyManager: {fileID: 0}
   playBtmBtnManager: {fileID: 0}
---- !u!114 &1336578072685318121
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4699340791248144885}
-  m_Enabled: 0
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f08a769f14cb24d4c98f2862c6e10b5e, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  uiManager: {fileID: 0}
-  animController: {fileID: 0}
-  popUp: {fileID: 7555817891792917584}
-  resultUIManager: {fileID: 8551312290356072768}
-  titleObj: {fileID: 460412680427438641}
-  titleTxt: {fileID: 1565124616250416381}
-  InstructorObj: {fileID: 0}
-  programObj: {fileID: 1139739480747065517}
-  basicBtn: {fileID: 3796100122441745758}
-  poomsaeBtn: {fileID: 7684445513370022854}
-  olympicBtn: {fileID: 3726365245254345660}
-  userInfoObj: {fileID: 6073842978729044186}
-  profileImg: {fileID: 2975413323642893234}
-  nicknameTxt: {fileID: 4919129807110386040}
-  idTxt: {fileID: 0}
-  heartCountTxt: {fileID: 3464072892567608936}
-  coachInfoObj: {fileID: 0}
-  coachImg: {fileID: 0}
-  coachNameTxt: {fileID: 0}
-  coachCareerTxt: {fileID: 0}
-  coachAwardListTxt: {fileID: 0}
-  buttomObj: {fileID: 3947715609280903020}
-  homeBtn: {fileID: 2785194658062799443}
-  storeBtn: {fileID: 2260397953961266586}
-  settingBtn: {fileID: 3150545000586007727}
-  exitBtn: {fileID: 850262024699958872}
-  poomsaeObj: {fileID: 0}
-  placeSelectobj: {fileID: 0}
-  selectPlayMode: {fileID: 9195523751978392180}
-  selectTk: {fileID: 0}
-  selectTkCoach: {fileID: 5326180956647978047}
-  tkCoachScrollContent: {fileID: 1521246837608718965}
-  tkScrollContent: {fileID: 0}
-  tkScrollRect: {fileID: 0}
-  contentXPos: 0
-  grandSelectBg: {fileID: 3415930285306285781}
-  tkCoachObj: {fileID: 2646062016474715998}
-  tkInfoObj: {fileID: 0}
-  popupDetailManager: {fileID: 459766418189488068}
-  popupBuyManager: {fileID: 5235217658021458059}
-  nowProgram: 
-  nowSelectAnim: 
-  nowSelectCoachId: 0
-  nowSelectCoachFileName: 
-  nowSelectCoachName: 
-  tkInfoList: []
-  tkCoachList: []
-  tkCoachObjs: []
-  tkCreateCoachObjs: []
-  tkAnimClips:
-    keys: []
-    values: []
-  isOnBtn: 0
-  isInMouse: 0
-  tkState: 0
-  nowOpenTk: 0
-  buyListTxt: {fileID: 7433690880523699685}
-  changeScrollRect: {fileID: 0}
-  storeManager: {fileID: 5060755355616458311}
+  resultUIManager: {fileID: 0}
 --- !u!114 &5060755355616458311
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -36576,7 +36247,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &6889083374197538515
 RectTransform:
   m_ObjectHideFlags: 0
@@ -38345,7 +38016,7 @@
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 26, y: -32}
-  m_SizeDelta: {x: -132, y: 10}
+  m_SizeDelta: {x: 0, y: 10}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1945156265169757091
 MonoBehaviour:
@@ -40408,42 +40079,6 @@
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!1 &5223641353899670806
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 2918449762508607542}
-  m_Layer: 5
-  m_Name: GameObject
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &2918449762508607542
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5223641353899670806}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 3349190830808232335}
-  m_Father: {fileID: 6833826957283142493}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
-  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &5230486044234813632
 GameObject:
   m_ObjectHideFlags: 0
@@ -40847,7 +40482,7 @@
   - component: {fileID: 8248589966349255186}
   - component: {fileID: 4685281808250285975}
   m_Layer: 5
-  m_Name: CoachNameBg
+  m_Name: InstructorNameBg
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -41292,7 +40927,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &7141110829551216877
 RectTransform:
   m_ObjectHideFlags: 0
@@ -43264,9 +42899,9 @@
   - {fileID: 350217055102543266}
   m_Father: {fileID: 5045285817590339192}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 120, y: -5}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 40, y: 10}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &5537900026628668635
@@ -44879,7 +44514,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
         m_MethodName: SetVRAnimPlay
         m_Mode: 5
@@ -45871,7 +45506,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &4890934204488270359
 RectTransform:
   m_ObjectHideFlags: 0
@@ -51904,7 +51539,7 @@
   m_Script: {fileID: 11500000, guid: adb30198aa32dd140b5750692dd48104, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  radius: 4
+  radius: 2
   image: {fileID: 1777372452605893533}
 --- !u!1 &6680491161230323629
 GameObject:
@@ -51938,9 +51573,9 @@
   - {fileID: 2005451749108728121}
   m_Father: {fileID: 6451429106112992192}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 60, y: -10}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 36, y: 20}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &6689295819397701156
@@ -52976,113 +52611,6 @@
   m_EditorClassIdentifier: 
   radius: 5
   image: {fileID: 782867038231620472}
---- !u!1 &6792097359753474479
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 3349190830808232335}
-  - component: {fileID: 1610684021096981496}
-  - component: {fileID: 2403197906767089646}
-  - component: {fileID: 3578773070419870475}
-  m_Layer: 5
-  m_Name: Scroll View
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &3349190830808232335
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6792097359753474479}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 511829399914839507}
-  m_Father: {fileID: 2918449762508607542}
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 25, y: -25}
-  m_SizeDelta: {x: 50, y: 50}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &1610684021096981496
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6792097359753474479}
-  m_CullTransparentMesh: 1
---- !u!114 &2403197906767089646
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6792097359753474479}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 0.392}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
-  m_Type: 1
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!114 &3578773070419870475
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6792097359753474479}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Content: {fileID: 4225573338708162552}
-  m_Horizontal: 0
-  m_Vertical: 1
-  m_MovementType: 1
-  m_Elasticity: 0.1
-  m_Inertia: 1
-  m_DecelerationRate: 0.135
-  m_ScrollSensitivity: 1
-  m_Viewport: {fileID: 511829399914839507}
-  m_HorizontalScrollbar: {fileID: 0}
-  m_VerticalScrollbar: {fileID: 0}
-  m_HorizontalScrollbarVisibility: 2
-  m_VerticalScrollbarVisibility: 2
-  m_HorizontalScrollbarSpacing: -3
-  m_VerticalScrollbarSpacing: -3
-  m_OnValueChanged:
-    m_PersistentCalls:
-      m_Calls: []
 --- !u!1 &6798026560647917495
 GameObject:
   m_ObjectHideFlags: 0
@@ -53417,7 +52945,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
         m_MethodName: SetVRAnimPlay
         m_Mode: 5
@@ -54049,9 +53577,8 @@
   - component: {fileID: 6481221994957514943}
   - component: {fileID: 4926932906412312819}
   - component: {fileID: 48526201028024104}
-  - component: {fileID: 2714969803873006320}
   m_Layer: 5
-  m_Name: InfoCoachObj
+  m_Name: InstructorInfoObj
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -54065,7 +53592,7 @@
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 6874549994622180780}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: -2}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
@@ -54129,7 +53656,7 @@
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 6874549994622180780}
-  m_Enabled: 1
+  m_Enabled: 0
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
   m_Name: 
@@ -54161,37 +53688,11 @@
     m_PressedTrigger: Pressed
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
-  m_Interactable: 1
+  m_Interactable: 0
   m_TargetGraphic: {fileID: 4926932906412312819}
   m_OnClick:
     m_PersistentCalls:
       m_Calls: []
---- !u!114 &2714969803873006320
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6874549994622180780}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: e6b78f018d8668849bce0a5cba39804d, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  coachImg: {fileID: 3873513333538366824}
-  coachNameTxt: {fileID: 6266579885331779920}
-  checkImg: {fileID: 9211592013612933059}
-  tkCoachId: 0
-  isLock: 0
-  lockObj: {fileID: 1624543572733031381}
-  vrTkUIManager: {fileID: 0}
-  isPointDown: 0
-  tkCoachImg:
-  - {fileID: 21300000, guid: 2a8772130a6398746ad7dadd93653cd6, type: 3}
-  - {fileID: 21300000, guid: fe61c32aa02506a46b59646deb9d71c7, type: 3}
-  - {fileID: 21300000, guid: 52804bea393e6054d81c99eaef349f35, type: 3}
-  tkCoachkLocalize: {fileID: 3641075100548663748}
-  detailBtn: {fileID: 522562240654709748}
 --- !u!1 &6885039034413235147
 GameObject:
   m_ObjectHideFlags: 0
@@ -58990,8 +58491,8 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
-        m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
+      - m_Target: {fileID: 7811789589969689281}
+        m_TargetAssemblyTypeName: PlayVRUIManager, Assembly-CSharp
         m_MethodName: SetVRAnimPlay
         m_Mode: 5
         m_Arguments:
@@ -62135,7 +61636,7 @@
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
+      - m_Target: {fileID: 0}
         m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
         m_MethodName: ResetBuyList
         m_Mode: 1
@@ -62518,7 +62019,7 @@
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 0, y: -0.0000076293945}
-  m_SizeDelta: {x: -15, y: -48}
+  m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 1}
 --- !u!114 &9133275818351279943
 MonoBehaviour:
@@ -66832,7 +66333,6 @@
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 368239961977590006}
-  - {fileID: 2918449762508607542}
   m_Father: {fileID: 6197702163516169505}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
@@ -69098,7 +68598,7 @@
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0, b: 0, a: 0.9411765}
+  m_Color: {r: 0, g: 0, b: 0, a: 0.54901963}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
@@ -69600,9 +69100,9 @@
   - {fileID: 5777289841090790467}
   m_Father: {fileID: 6451429106112992192}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 36, y: -10}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 12, y: 16}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &8769875149630266903
@@ -69798,7 +69298,7 @@
   - component: {fileID: 7938614661829018313}
   - component: {fileID: 502727699367414917}
   m_Layer: 5
-  m_Name: AIEvalModeBtn
+  m_Name: AIJudgeModeBtn
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -69902,13 +69402,13 @@
     m_PressedTrigger: Pressed
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
-  m_Interactable: 1
+  m_Interactable: 0
   m_TargetGraphic: {fileID: 7938614661829018313}
   m_OnClick:
     m_PersistentCalls:
       m_Calls:
-      - m_Target: {fileID: 1336578072685318121}
-        m_TargetAssemblyTypeName: VRTkUIManager, Assembly-CSharp
+      - m_Target: {fileID: 7811789589969689281}
+        m_TargetAssemblyTypeName: PlayVRUIManager, Assembly-CSharp
         m_MethodName: SetVRAnimPlay
         m_Mode: 5
         m_Arguments:
@@ -69916,7 +69416,7 @@
           m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
           m_IntArgument: 0
           m_FloatArgument: 0
-          m_StringArgument: Evaluation
+          m_StringArgument: AIJudge
           m_BoolArgument: 0
         m_CallState: 2
 --- !u!1 &8798359815218270732
@@ -75030,18 +74530,6 @@
     m_AddedGameObjects: []
     m_AddedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: e21648063d624cc4f92e4c2f3e7ab222, type: 3}
---- !u!114 &5235217658021458059 stripped
-MonoBehaviour:
-  m_CorrespondingSourceObject: {fileID: 7734070126319620258, guid: e21648063d624cc4f92e4c2f3e7ab222,
-    type: 3}
-  m_PrefabInstance: {fileID: 2590648911018680361}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 0
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 6f27b1349f3492c4796b9cc88fc38d41, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
 --- !u!224 &6199545176439902351 stripped
 RectTransform:
   m_CorrespondingSourceObject: {fileID: 8501353574359019686, guid: e21648063d624cc4f92e4c2f3e7ab222,
@@ -75600,11 +75088,6 @@
     serializedVersion: 3
     m_TransformParent: {fileID: 6197702163516169505}
     m_Modifications:
-    - target: {fileID: 1597595697967922387, guid: 0cfc92233c4b986459613e5602a3862c,
-        type: 3}
-      propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
-      value: 
-      objectReference: {fileID: 1336578072685318121}
     - target: {fileID: 3059809388255471161, guid: 0cfc92233c4b986459613e5602a3862c,
         type: 3}
       propertyPath: m_Pivot.x
@@ -75715,11 +75198,6 @@
       propertyPath: m_IsActive
       value: 0
       objectReference: {fileID: 0}
-    - target: {fileID: 8769216382389145891, guid: 0cfc92233c4b986459613e5602a3862c,
-        type: 3}
-      propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target
-      value: 
-      objectReference: {fileID: 1336578072685318121}
     m_RemovedComponents: []
     m_RemovedGameObjects: []
     m_AddedGameObjects: []
@@ -75906,7 +75384,7 @@
     - target: {fileID: 1223463166084774675, guid: 131b2a17860f9d543ab488c9500c4d1e,
         type: 3}
       propertyPath: m_Enabled
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 1286603951155642656, guid: 131b2a17860f9d543ab488c9500c4d1e,
         type: 3}
@@ -76313,6 +75791,11 @@
       propertyPath: m_Name
       value: Result
       objectReference: {fileID: 0}
+    - target: {fileID: 6306900555965340622, guid: 131b2a17860f9d543ab488c9500c4d1e,
+        type: 3}
+      propertyPath: m_IsActive
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 6420709919626506456, guid: 131b2a17860f9d543ab488c9500c4d1e,
         type: 3}
       propertyPath: m_AnchorMax.y
@@ -76434,18 +75917,6 @@
     type: 3}
   m_PrefabInstance: {fileID: 7374293082236971603}
   m_PrefabAsset: {fileID: 0}
---- !u!114 &8551312290356072768 stripped
-MonoBehaviour:
-  m_CorrespondingSourceObject: {fileID: 1223463166084774675, guid: 131b2a17860f9d543ab488c9500c4d1e,
-    type: 3}
-  m_PrefabInstance: {fileID: 7374293082236971603}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 0
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 7999730a4df19354c8ec56dbc0bdaa50, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
 --- !u!1001 &8284002424679263976
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -76574,12 +76045,6 @@
     m_AddedGameObjects: []
     m_AddedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 2e994b6e842a76447b142d82b6c6eefc, type: 3}
---- !u!1 &7555817891792917584 stripped
-GameObject:
-  m_CorrespondingSourceObject: {fileID: 1886190239473531576, guid: 2e994b6e842a76447b142d82b6c6eefc,
-    type: 3}
-  m_PrefabInstance: {fileID: 8284002424679263976}
-  m_PrefabAsset: {fileID: 0}
 --- !u!224 &7822145818673450381 stripped
 RectTransform:
   m_CorrespondingSourceObject: {fileID: 2196464129993991013, guid: 2e994b6e842a76447b142d82b6c6eefc,
VRTK/Assets/VRRes/VRUI/Basic/Result.prefab
--- VRTK/Assets/VRRes/VRUI/Basic/Result.prefab
+++ VRTK/Assets/VRRes/VRUI/Basic/Result.prefab
@@ -775,7 +775,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -29.5}
+  m_AnchoredPosition: {x: 524.5, y: -89}
   m_SizeDelta: {x: 150, y: 8}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &1150820697446722527
@@ -793,7 +793,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &1236050295398920609
 RectTransform:
   m_ObjectHideFlags: 0
@@ -853,7 +853,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 190, y: -10}
+  m_AnchoredPosition: {x: 638.5, y: -10}
   m_SizeDelta: {x: 50, y: 20}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &1395655853628708285
@@ -1122,7 +1122,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 38.5, y: -10}
+  m_AnchoredPosition: {x: 487, y: -10}
   m_SizeDelta: {x: 70, y: 16}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &7700342267384721900
@@ -1185,7 +1185,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -65.5}
+  m_AnchoredPosition: {x: 524.5, y: -125}
   m_SizeDelta: {x: 150, y: 8}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &2302732008868862653
@@ -1839,7 +1839,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -41.5}
+  m_AnchoredPosition: {x: 524.5, y: -101}
   m_SizeDelta: {x: 150, y: 8}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &3412362509385852820
@@ -2481,7 +2481,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -21}
+  m_AnchoredPosition: {x: 524.5, y: -80.5}
   m_SizeDelta: {x: 130, y: 1}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &7963095806061892301
@@ -2827,7 +2827,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -77.5}
+  m_AnchoredPosition: {x: 524.5, y: -137}
   m_SizeDelta: {x: 150, y: 8}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &4645700716138285744
@@ -3002,7 +3002,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 82, y: -10}
+  m_AnchoredPosition: {x: 530.5, y: -10}
   m_SizeDelta: {x: 50, y: 20}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &4470532369124791013
@@ -3357,7 +3357,7 @@
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &2561920016242020315
 RectTransform:
   m_ObjectHideFlags: 0
@@ -3581,7 +3581,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -53.5}
+  m_AnchoredPosition: {x: 524.5, y: -113}
   m_SizeDelta: {x: 150, y: 8}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &7600424977908593800
@@ -3889,7 +3889,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 113.5, y: -10}
+  m_AnchoredPosition: {x: 562, y: -10}
   m_SizeDelta: {x: 70, y: 16}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &2666120305675767611
@@ -3952,7 +3952,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -11.5}
+  m_AnchoredPosition: {x: 524.5, y: -71}
   m_SizeDelta: {x: 150, y: 10}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &1985629721377494059
@@ -4090,7 +4090,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 136, y: -10}
+  m_AnchoredPosition: {x: 584.5, y: -10}
   m_SizeDelta: {x: 50, y: 20}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &9194498975477085914
@@ -4223,7 +4223,7 @@
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 76, y: -89.5}
+  m_AnchoredPosition: {x: 524.5, y: -149}
   m_SizeDelta: {x: 150, y: 8}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1001 &3582750783442711329
VRTK/Assets/VRRes/VR_Lobby/tkgym.prefab (Renamed from VRTK/Assets/VRRes/VR_Lobby/Tk_Gym.prefab)
--- VRTK/Assets/VRRes/VR_Lobby/Tk_Gym.prefab
+++ VRTK/Assets/VRRes/VR_Lobby/tkgym.prefab
@@ -355,7 +355,7 @@
   - component: {fileID: 3734065279684019805}
   - component: {fileID: 1359853379741081847}
   m_Layer: 15
-  m_Name: tk_gym
+  m_Name: tkgym
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
VRTK/Assets/VRRes/VR_Lobby/tkgym.prefab.meta (Renamed from VRTK/Assets/VRRes/VR_Lobby/Tk_Gym.prefab.meta)
--- VRTK/Assets/VRRes/VR_Lobby/Tk_Gym.prefab.meta
+++ VRTK/Assets/VRRes/VR_Lobby/tkgym.prefab.meta
No changes
VRTK/ProjectSettings/EditorBuildSettings.asset
--- VRTK/ProjectSettings/EditorBuildSettings.asset
+++ VRTK/ProjectSettings/EditorBuildSettings.asset
@@ -5,13 +5,13 @@
   m_ObjectHideFlags: 0
   serializedVersion: 2
   m_Scenes:
-  - enabled: 0
+  - enabled: 1
     path: Assets/00.MAINSTREAM/Scenes/InitScene.unity
     guid: 5f4f9138efe79d1448dc037a021875be
-  - enabled: 0
+  - enabled: 1
     path: Assets/00.MAINSTREAM/Scenes/PlayScene.unity
     guid: 14ff1613d7e77bb4baa1d0c0a984254f
-  - enabled: 1
+  - enabled: 0
     path: Assets/01.Junil/Scenes/00.ModelIkTest.unity
     guid: dbe716d95baf0b1479d449c3ff9538fc
   - enabled: 0
Add a comment
List