From f991e82fa9bf845025f1399e0ff7b3cf52441485 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Fri, 2 May 2025 18:42:05 +0900 Subject: [PATCH] =?UTF-8?q?[Style]=20=ED=8F=B4=EB=8D=94=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LIN/Scripts/Test/FirstTutorialStep.asset | 25 ----- .../Scripts/Test/FirstTutorialStep.asset.meta | 8 -- .../LIN/Scripts/Test/SecondTutorialStep.asset | 25 ----- .../Test/SecondTutorialStep.asset.meta | 8 -- .../LIN/Scripts/Tutorial/TutorialManager.cs | 100 ++++++++++-------- .../Tutorial/TutorialPanelController.cs | 28 +++++ .../Tutorial/TutorialPanelController.cs.meta | 11 ++ Assets/LIN/Scripts/Tutorial/TutorialStep.cs | 17 ++- Assets/LIN/{Scripts/Test.meta => Tests.meta} | 2 +- .../Foward Fixed Joystick.prefab | 0 .../Foward Fixed Joystick.prefab.meta | 0 .../FowardFixedJoystickController.cs | 0 .../FowardFixedJoystickController.cs.meta | 0 .../Interaction Button.prefab | 0 .../Interaction Button.prefab.meta | 0 .../Tutorial => Tests}/JpystickTutorial.cs | 0 .../JpystickTutorial.cs.meta | 0 .../Tutorial => Tests}/TutorialAnim1.prefab | 0 .../TutorialAnim1.prefab.meta | 0 .../Tutorial => Tests}/TutorialAnim2.prefab | 0 .../TutorialAnim2.prefab.meta | 0 .../TutorialAnimPanelController.cs | 0 .../TutorialAnimPanelController.cs.meta | 0 .../TutorialPlayer Variant.prefab | 0 .../TutorialPlayer Variant.prefab.meta | 0 .../Tutorial => Tests}/TutorialPlayer.prefab | 0 .../TutorialPlayer.prefab.meta | 0 .../TutorialPlayerController.cs | 0 .../TutorialPlayerController.cs.meta | 0 .../Tutorial => Tests}/TutorialPlayerMove.cs | 0 .../TutorialPlayerMove.cs.meta | 0 .../move_Tutorial_player.prefab | 0 .../move_Tutorial_player.prefab.meta | 0 .../tmp_Tutorial_player.prefab | 0 .../tmp_Tutorial_player.prefab.meta | 0 35 files changed, 104 insertions(+), 120 deletions(-) delete mode 100644 Assets/LIN/Scripts/Test/FirstTutorialStep.asset delete mode 100644 Assets/LIN/Scripts/Test/FirstTutorialStep.asset.meta delete mode 100644 Assets/LIN/Scripts/Test/SecondTutorialStep.asset delete mode 100644 Assets/LIN/Scripts/Test/SecondTutorialStep.asset.meta create mode 100644 Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs create mode 100644 Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs.meta rename Assets/LIN/{Scripts/Test.meta => Tests.meta} (77%) rename Assets/LIN/{Scripts/Tutorial => Tests}/Foward Fixed Joystick.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/Foward Fixed Joystick.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/FowardFixedJoystickController.cs (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/FowardFixedJoystickController.cs.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/Interaction Button.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/Interaction Button.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/JpystickTutorial.cs (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/JpystickTutorial.cs.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialAnim1.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialAnim1.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialAnim2.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialAnim2.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialAnimPanelController.cs (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialAnimPanelController.cs.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayer Variant.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayer Variant.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayer.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayer.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayerController.cs (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayerController.cs.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayerMove.cs (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/TutorialPlayerMove.cs.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/move_Tutorial_player.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/move_Tutorial_player.prefab.meta (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/tmp_Tutorial_player.prefab (100%) rename Assets/LIN/{Scripts/Tutorial => Tests}/tmp_Tutorial_player.prefab.meta (100%) diff --git a/Assets/LIN/Scripts/Test/FirstTutorialStep.asset b/Assets/LIN/Scripts/Test/FirstTutorialStep.asset deleted file mode 100644 index fb2b0c6a..00000000 --- a/Assets/LIN/Scripts/Test/FirstTutorialStep.asset +++ /dev/null @@ -1,25 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b22d834cf5e26e647be215074940d40e, type: 3} - m_Name: FirstTutorialStep - m_EditorClassIdentifier: - message: Let's begin tutorial. First, touch next button. - onBegin: - m_PersistentCalls: - m_Calls: [] - onComplete: - m_PersistentCalls: - m_Calls: [] - timeout: 0 - requiredKey: 0 - touchTargetIndex: 0 - nextStep: {fileID: 11400000, guid: 83b9fc17fee6d884fb0c4ea5fc25e175, type: 2} diff --git a/Assets/LIN/Scripts/Test/FirstTutorialStep.asset.meta b/Assets/LIN/Scripts/Test/FirstTutorialStep.asset.meta deleted file mode 100644 index 91747534..00000000 --- a/Assets/LIN/Scripts/Test/FirstTutorialStep.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a7cedb06e57fff540a2335f42ac38e2c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LIN/Scripts/Test/SecondTutorialStep.asset b/Assets/LIN/Scripts/Test/SecondTutorialStep.asset deleted file mode 100644 index aabf1699..00000000 --- a/Assets/LIN/Scripts/Test/SecondTutorialStep.asset +++ /dev/null @@ -1,25 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b22d834cf5e26e647be215074940d40e, type: 3} - m_Name: SecondTutorialStep - m_EditorClassIdentifier: - message: Well done, now then touch the button which has round shape - onBegin: - m_PersistentCalls: - m_Calls: [] - onComplete: - m_PersistentCalls: - m_Calls: [] - timeout: 0 - requiredKey: 0 - touchTargetIndex: 1 - nextStep: {fileID: 0} diff --git a/Assets/LIN/Scripts/Test/SecondTutorialStep.asset.meta b/Assets/LIN/Scripts/Test/SecondTutorialStep.asset.meta deleted file mode 100644 index c2b6cfb4..00000000 --- a/Assets/LIN/Scripts/Test/SecondTutorialStep.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 83b9fc17fee6d884fb0c4ea5fc25e175 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LIN/Scripts/Tutorial/TutorialManager.cs b/Assets/LIN/Scripts/Tutorial/TutorialManager.cs index 98378fa7..206e4329 100644 --- a/Assets/LIN/Scripts/Tutorial/TutorialManager.cs +++ b/Assets/LIN/Scripts/Tutorial/TutorialManager.cs @@ -3,35 +3,50 @@ using UnityEngine; using TMPro; using UnityEngine.UI; using System.Collections; +using Unity.VisualScripting; +using UnityEngine.Serialization; +using UnityEngine.Events; public class TutorialManager : MonoBehaviour { - [SerializeField] private TutorialStep firstStep; - [SerializeField] private CanvasGroup overlay; // 입력 차단 & 다크닝용 - [SerializeField] private TMP_Text tutorialText; - [SerializeField] private Canvas overlayCanvas; // RectTransformUtility를 위한 Canvas - // [SerializeField] private GameObject housingUICanvas; //튜토리얼 동안 입력 제한 + [SerializeField] private TutorialStep firstStep; // 인스펙터에서 첫 단계 드래그 + + [Header("튜토리얼 패널 생성")] + [SerializeField] private GameObject[] tutorialPanelPrefabs; + + private GameObject _tutorialPanelObject; + private TutorialPanelController _tutorialPanelController; - [Header("튜토리얼 터치 타겟들")] - [SerializeField] private GameObject[] touchTargets; - - [Header("감춰놓을 게임 오브젝트")] - [SerializeField] private GameObject[] lockTargets; - private Coroutine _runningCoroutine; + private CanvasGroup overlay; // 화면 암전 및 입력 차단 private RectTransform targetRt; - - public void Start() + private Canvas overlayCanvas; // RectTransformUtility를 위한 Canvas + private Action onTutorialComplete; + + public void Start( ) { - StartTutorial(); + StartTutorial(null); } + public void StartTutorial(Action onTutorialEnd, int panelIndex = 0) + { + var parentObject = FindObjectOfType(typeof(Canvas)); + if (parentObject != null) + { + overlayCanvas = parentObject as Canvas; + + _tutorialPanelObject = Instantiate(tutorialPanelPrefabs[panelIndex], parentObject.GameObject().transform); + overlay = _tutorialPanelObject.GetComponent(); + _tutorialPanelController = _tutorialPanelObject.GetComponent(); + } - public void StartTutorial() - { - overlay.gameObject.SetActive(true); + if (_tutorialPanelController != null) + { + onTutorialComplete = onTutorialEnd; overlay.alpha = 1f; overlay.blocksRaycasts = true; RunStep(firstStep); + } + else Debug.Log("패널 생성 실패, 튜토리얼 진행이 불가능합니다."); } private void RunStep(TutorialStep step) @@ -43,30 +58,25 @@ public class TutorialManager : MonoBehaviour private IEnumerator RunStepCoroutine(TutorialStep step) { // 단계 시작 이벤트 - step.onBegin?.Invoke(); + step.onStepBegin?.Invoke(); // 메시지 갱신 - tutorialText.text = step.message; + _tutorialPanelController.setTutorialText(step.message); float elapsed = 0f; - bool done = false; + bool done = false; //터치해야 할 위치가 있는지 체크 if (step.touchTargetIndex >= 0) { - targetRt = touchTargets[step.touchTargetIndex].GetComponent(); - touchTargets[step.touchTargetIndex].SetActive(true); - } - //화면에서 숨겨야 할 요소가 있는지 체크 - if (step.deactiveObjectIndex >= 0) - { - lockTargets[step.deactiveObjectIndex].SetActive(false); + targetRt = _tutorialPanelController.touchTargets[step.touchTargetIndex].GetComponent(); + _tutorialPanelController.touchTargets[step.touchTargetIndex].SetActive(true); } while (!done) - { + { // 1) 영역 터치 체크 if (targetRt != null) - { + { // 클릭 또는 터치 이벤트 bool pressed = Input.GetMouseButtonDown(0) || Input.touchCount > 0; if (pressed) @@ -81,11 +91,7 @@ public class TutorialManager : MonoBehaviour { Debug.Log("타겟 터치"); targetRt = null; - touchTargets[step.touchTargetIndex].SetActive(false); - if (step.deactiveObjectIndex >= 0) - { - lockTargets[step.deactiveObjectIndex].SetActive(true); - } + _tutorialPanelController.touchTargets[step.touchTargetIndex].SetActive(false); done = true; } else @@ -94,23 +100,18 @@ public class TutorialManager : MonoBehaviour } } } - + // 타임아웃 체크 if (step.timeout > 0f && elapsed >= step.timeout) done = true; - - // 키 입력 체크 - if (step.requiredKey != KeyCode.None && Input.GetKeyDown(step.requiredKey)) - done = true; - elapsed += Time.deltaTime; yield return null; } - + // 단계 완료 이벤트 - step.onComplete?.Invoke(); - + step.onStepComplete?.Invoke(); + // 다음 단계로 if (step.nextStep != null) RunStep(step.nextStep); @@ -120,8 +121,19 @@ public class TutorialManager : MonoBehaviour private void EndTutorial() { - tutorialText.text = ""; + _tutorialPanelController.setTutorialText(""); overlay.alpha = 0f; overlay.blocksRaycasts = false; + + if(onTutorialComplete!=null) + { + onTutorialComplete?.Invoke(); + onTutorialComplete = null; + } + + if (_tutorialPanelObject == null) + return; + Destroy(_tutorialPanelObject); + _tutorialPanelController = null; } } \ No newline at end of file diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs b/Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs new file mode 100644 index 00000000..56954e55 --- /dev/null +++ b/Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +[RequireComponent(typeof(CanvasGroup))] +public class TutorialPanelController : MonoBehaviour +{ + [SerializeField] private TMP_Text tutorialText; + + [Header("튜토리얼 터치 타겟들")] + public GameObject[] touchTargets; + + public void setTutorialText(string tutorialText) + { + this.tutorialText.text = tutorialText; + } + + public void Show(int index) + { + touchTargets[index].SetActive(true); + } + + public void Hide(int index) + { + touchTargets[index].SetActive(false); + } +} diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs.meta b/Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs.meta new file mode 100644 index 00000000..d7e6d351 --- /dev/null +++ b/Assets/LIN/Scripts/Tutorial/TutorialPanelController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50f463251502b134d9b627d30c30842b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LIN/Scripts/Tutorial/TutorialStep.cs b/Assets/LIN/Scripts/Tutorial/TutorialStep.cs index 66fa31e6..a33da186 100644 --- a/Assets/LIN/Scripts/Tutorial/TutorialStep.cs +++ b/Assets/LIN/Scripts/Tutorial/TutorialStep.cs @@ -1,22 +1,21 @@ +// TutorialStep.cs using UnityEngine; using UnityEngine.Events; +using UnityEngine.Serialization; [CreateAssetMenu(fileName = "TutorialStep", menuName = "Tutorial/Tutorial Step")] public class TutorialStep : ScriptableObject { [TextArea(2, 5)] public string message; // 플레이어에게 보여줄 텍스트 - - public UnityEvent onBegin; // 단계 시작 시 추가로 실행할 이벤트 - public UnityEvent onComplete; // 단계 완료 시 실행할 이벤트 - - public float timeout = 0f; // 0 이상이면 이 시간 경과 후 자동 완료 - public KeyCode requiredKey = KeyCode.None; // 지정 Key 입력 시 완료 + public float timeout = 2f; // 0 이상이면 이 시간 경과 후 자동 완료 - [Tooltip("터치해야 할 위치가 있다면, 게임매니저에게 인덱스 전달")] + [Tooltip("단계별로 시작, 완료시 추가로 실행할 이벤트")] + public UnityEvent onStepBegin; // 단계 시작 시 추가로 실행할 이벤트 + public UnityEvent onStepComplete; // 단계 완료 시 실행할 이벤트 + + [Tooltip("터치해야 할 위치가 있다면, 튜토리얼 매니저에게 인덱스 전달")] public int touchTargetIndex=-1; - [Tooltip("배경캔버스에서 끌 오브젝트 인덱스 전달")] - public int deactiveObjectIndex=-1; [Tooltip("다음 단계로 넘어갈 TutorialStep, null이면 튜토리얼 종료")] public TutorialStep nextStep; diff --git a/Assets/LIN/Scripts/Test.meta b/Assets/LIN/Tests.meta similarity index 77% rename from Assets/LIN/Scripts/Test.meta rename to Assets/LIN/Tests.meta index c1bb3539..e5b40991 100644 --- a/Assets/LIN/Scripts/Test.meta +++ b/Assets/LIN/Tests.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 18265c81aaa1344439d5501a08b7a633 +guid: 6468efabb5f9308459bd0e1662a3816f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/LIN/Scripts/Tutorial/Foward Fixed Joystick.prefab b/Assets/LIN/Tests/Foward Fixed Joystick.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/Foward Fixed Joystick.prefab rename to Assets/LIN/Tests/Foward Fixed Joystick.prefab diff --git a/Assets/LIN/Scripts/Tutorial/Foward Fixed Joystick.prefab.meta b/Assets/LIN/Tests/Foward Fixed Joystick.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/Foward Fixed Joystick.prefab.meta rename to Assets/LIN/Tests/Foward Fixed Joystick.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/FowardFixedJoystickController.cs b/Assets/LIN/Tests/FowardFixedJoystickController.cs similarity index 100% rename from Assets/LIN/Scripts/Tutorial/FowardFixedJoystickController.cs rename to Assets/LIN/Tests/FowardFixedJoystickController.cs diff --git a/Assets/LIN/Scripts/Tutorial/FowardFixedJoystickController.cs.meta b/Assets/LIN/Tests/FowardFixedJoystickController.cs.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/FowardFixedJoystickController.cs.meta rename to Assets/LIN/Tests/FowardFixedJoystickController.cs.meta diff --git a/Assets/LIN/Scripts/Tutorial/Interaction Button.prefab b/Assets/LIN/Tests/Interaction Button.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/Interaction Button.prefab rename to Assets/LIN/Tests/Interaction Button.prefab diff --git a/Assets/LIN/Scripts/Tutorial/Interaction Button.prefab.meta b/Assets/LIN/Tests/Interaction Button.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/Interaction Button.prefab.meta rename to Assets/LIN/Tests/Interaction Button.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/JpystickTutorial.cs b/Assets/LIN/Tests/JpystickTutorial.cs similarity index 100% rename from Assets/LIN/Scripts/Tutorial/JpystickTutorial.cs rename to Assets/LIN/Tests/JpystickTutorial.cs diff --git a/Assets/LIN/Scripts/Tutorial/JpystickTutorial.cs.meta b/Assets/LIN/Tests/JpystickTutorial.cs.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/JpystickTutorial.cs.meta rename to Assets/LIN/Tests/JpystickTutorial.cs.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialAnim1.prefab b/Assets/LIN/Tests/TutorialAnim1.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialAnim1.prefab rename to Assets/LIN/Tests/TutorialAnim1.prefab diff --git a/Assets/LIN/Scripts/Tutorial/TutorialAnim1.prefab.meta b/Assets/LIN/Tests/TutorialAnim1.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialAnim1.prefab.meta rename to Assets/LIN/Tests/TutorialAnim1.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialAnim2.prefab b/Assets/LIN/Tests/TutorialAnim2.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialAnim2.prefab rename to Assets/LIN/Tests/TutorialAnim2.prefab diff --git a/Assets/LIN/Scripts/Tutorial/TutorialAnim2.prefab.meta b/Assets/LIN/Tests/TutorialAnim2.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialAnim2.prefab.meta rename to Assets/LIN/Tests/TutorialAnim2.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialAnimPanelController.cs b/Assets/LIN/Tests/TutorialAnimPanelController.cs similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialAnimPanelController.cs rename to Assets/LIN/Tests/TutorialAnimPanelController.cs diff --git a/Assets/LIN/Scripts/Tutorial/TutorialAnimPanelController.cs.meta b/Assets/LIN/Tests/TutorialAnimPanelController.cs.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialAnimPanelController.cs.meta rename to Assets/LIN/Tests/TutorialAnimPanelController.cs.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayer Variant.prefab b/Assets/LIN/Tests/TutorialPlayer Variant.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayer Variant.prefab rename to Assets/LIN/Tests/TutorialPlayer Variant.prefab diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayer Variant.prefab.meta b/Assets/LIN/Tests/TutorialPlayer Variant.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayer Variant.prefab.meta rename to Assets/LIN/Tests/TutorialPlayer Variant.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayer.prefab b/Assets/LIN/Tests/TutorialPlayer.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayer.prefab rename to Assets/LIN/Tests/TutorialPlayer.prefab diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayer.prefab.meta b/Assets/LIN/Tests/TutorialPlayer.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayer.prefab.meta rename to Assets/LIN/Tests/TutorialPlayer.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayerController.cs b/Assets/LIN/Tests/TutorialPlayerController.cs similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayerController.cs rename to Assets/LIN/Tests/TutorialPlayerController.cs diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayerController.cs.meta b/Assets/LIN/Tests/TutorialPlayerController.cs.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayerController.cs.meta rename to Assets/LIN/Tests/TutorialPlayerController.cs.meta diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayerMove.cs b/Assets/LIN/Tests/TutorialPlayerMove.cs similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayerMove.cs rename to Assets/LIN/Tests/TutorialPlayerMove.cs diff --git a/Assets/LIN/Scripts/Tutorial/TutorialPlayerMove.cs.meta b/Assets/LIN/Tests/TutorialPlayerMove.cs.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/TutorialPlayerMove.cs.meta rename to Assets/LIN/Tests/TutorialPlayerMove.cs.meta diff --git a/Assets/LIN/Scripts/Tutorial/move_Tutorial_player.prefab b/Assets/LIN/Tests/move_Tutorial_player.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/move_Tutorial_player.prefab rename to Assets/LIN/Tests/move_Tutorial_player.prefab diff --git a/Assets/LIN/Scripts/Tutorial/move_Tutorial_player.prefab.meta b/Assets/LIN/Tests/move_Tutorial_player.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/move_Tutorial_player.prefab.meta rename to Assets/LIN/Tests/move_Tutorial_player.prefab.meta diff --git a/Assets/LIN/Scripts/Tutorial/tmp_Tutorial_player.prefab b/Assets/LIN/Tests/tmp_Tutorial_player.prefab similarity index 100% rename from Assets/LIN/Scripts/Tutorial/tmp_Tutorial_player.prefab rename to Assets/LIN/Tests/tmp_Tutorial_player.prefab diff --git a/Assets/LIN/Scripts/Tutorial/tmp_Tutorial_player.prefab.meta b/Assets/LIN/Tests/tmp_Tutorial_player.prefab.meta similarity index 100% rename from Assets/LIN/Scripts/Tutorial/tmp_Tutorial_player.prefab.meta rename to Assets/LIN/Tests/tmp_Tutorial_player.prefab.meta